xref: /freebsd/sys/contrib/dev/acpica/changes.txt (revision f1ed5c000c688cf9781b486134baf4ba25415efd)
1----------------------------------------
231 May 2018. Summary of changes for version 20180531:
3
4
51) ACPICA kernel-resident Subsystem:
6
7Implemented additional support to help ensure that a DSDT or SSDT is
8fully loaded even if errors are incurred during the load. The majority of
9the problems that are seen is the failure of individual AML operators
10that occur during execution of any module-level code (MLC) existing in
11the table. This support adds a mechanism to abort the current ASL
12statement (AML opcode), emit an error message, and to simply move on to
13the next opcode -- instead of aborting the entire table load. This is
14different than the execution of a control method where the entire method
15is aborted upon any error. The goal is to perform a very "best effort" to
16load the ACPI tables. The most common MLC errors that have been seen in
17the field are direct references to unresolved ASL/AML symbols (referenced
18directly without the use of the CondRefOf operator to validate the
19symbol). This new ACPICA behavior is now compatible with other ACPI
20implementations.
21
22Interpreter: The Unload AML operator is no longer supported for the
23reasons below. An AE_NOT_IMPLEMENTED exception is returned.
241) A correct implementation on at least some hosts may not be possible.
252) Other ACPI implementations do not correctly/fully support it.
263) It requires host device driver support which is not known to exist.
27    (To properly support namespace unload out from underneath.)
284) This AML operator has never been seen in the field.
29
30Parser: Added a debug option to dump AML parse sub-trees as they are
31being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
32ACPI_DB_PARSE_TREES.
33
34Debugger: Reduced the verbosity for errors incurred during table load and
35module-level code execution.
36
37Completed an investigation into adding a namespace node "owner list"
38instead of the current "owner ID" associated with namespace nodes. This
39list would link together all nodes that are owned by an individual
40control method. The purpose would be to enhance control method execution
41by speeding up cleanup during method exit (all namespace nodes created by
42a method are deleted upon method termination.) Currently, the entire
43namespace must be searched for matching owner IDs if (and only if) the
44method creates named objects outside of the local scope. However, by far
45the most common case is that methods create objects locally, not outside
46the method scope. There is already an ACPICA optimization in place that
47only searches the entire namespace in the rare case of a method creating
48objects elsewhere in the namespace. Therefore, it is felt that the
49overhead of adding an additional pointer to each namespace node to
50implement the owner list makes this feature unnecessary.
51
52
532) iASL Compiler/Disassembler and Tools:
54
55iASL, Disassembler, and Template generator: Implemented support for
56Revision D of the IORT table. Adds a new subtable that is used to specify
57SMMUv3 PMCGs. rmurphy-arm.
58
59Disassembler: Restored correct table header validation for the "special"
60ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
61table header and must be special-cased. This was a regression that has
62been present for apparently a long time.
63
64AcpiExec: Reduced verbosity of the local exception handler implemented
65within acpiexec. This handler is invoked by ACPICA upon any exceptions
66generated during control method execution. A new option was added: -vh
67restores the original verbosity level if desired.
68
69AcpiExec: Changed the default base from decimal to hex for the -x option
70(set debug level). This simplifies the use of this option and matches the
71behavior of the corresponding iASL -x option.
72
73AcpiExec: Restored a force-exit on multiple control-c (sigint)
74interrupts. This allows program termination even if other issues cause
75the control-c to fail.
76
77ASL test suite (ASLTS): Added tests for the recently implemented package
78element resolution mechanism that allows forward references to named
79objects from individual package elements (this mechanism provides
80compatibility with other ACPI implementations.)
81
82
83----------------------------------------
848 May 2018. Summary of changes for version 20180508:
85
86
871) ACPICA kernel-resident subsystem:
88
89Completed the new (recently deployed) package resolution mechanism for
90the Load and LoadTable ASL/AML operators. This fixes a regression that
91was introduced in version 20180209 that could result in an
92AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
93(SSDT) that contains package objects.
94
95
962) iASL Compiler/Disassembler and Tools:
97
98AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
991 MB. This change allows for table offsets within the acpidump file to be
100up to 8 characters. These changes are backwards compatible with existing
101acpidump files.
102
103
104----------------------------------------
10527 April 2018. Summary of changes for version 20180427:
106
107
1081) ACPICA kernel-resident subsystem:
109
110Debugger: Added support for Package objects in the "Test Objects"
111command. This command walks the entire namespace and evaluates all named
112data objects (Integers, Strings, Buffers, and now Packages).
113
114Improved error messages for the namespace root node. Originally, the root
115was referred to by the confusing string "\___". This has been replaced by
116"Namespace Root" for clarification.
117
118Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
119Ian King <colin.king@canonical.com>.
120
121
1222) iASL Compiler/Disassembler and Tools:
123
124iASL: Implemented support to detect and flag illegal forward references.
125For compatibility with other ACPI implementations, these references are
126now illegal at the root level of the DSDT or SSDTs. Forward references
127have always been illegal within control methods. This change should not
128affect existing ASL/AML code because of the fact that these references
129have always been illegal in the other ACPI implementation.
130
131iASL: Added error messages for the case where a table OEM ID and OEM
132TABLE ID strings are longer than the ACPI-defined length. Previously,
133these strings were simply silently truncated.
134
135iASL: Enhanced the -tc option (which creates an AML hex file in C,
136suitable for import into a firmware project):
137  1) Create a unique name for the table, to simplify use of multiple
138SSDTs.
139  2) Add a protection #ifdef in the file, similar to a .h header file.
140With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd,
141evan.lloyd@arm.com
142
143AcpiExec: Added a new option, -df, to disable the local fault handler.
144This is useful during debugging, where it may be desired to drop into a
145debugger on a fault.
146
147----------------------------------------
14813 March 2018. Summary of changes for version 20180313:
149
150
1511) ACPICA kernel-resident subsystem:
152
153Implemented various improvements to the GPE support:
154
1551) Dispatch all active GPEs at initialization time so that no GPEs are
156lost.
1572) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
158before devices are enumerated.
1593) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
160IRQs are not lost.
1614) Add parallel GPE handling to eliminate the possibility of dispatching
162the same GPE twice.
1635) Dispatch any pending GPEs after enabling for the first time.
164
165AcpiGetObjectInfo - removed support for the _STA method. This was causing
166problems on some platforms.
167
168Added a new _OSI string, "Windows 2017.2".
169
170Cleaned up and simplified the module-level code support. These changes
171are in preparation for the eventual removal of the legacy MLC support
172(deferred execution), replaced by the new MLC architecture which executes
173the MLC as a table is loaded (DSDT/SSDTs).
174
175Changed a compile-time option to a runtime option. Changes the option to
176ignore ACPI table load-time package resolution errors into a runtime
177option. Used only for platforms that generate many AE_NOT_FOUND errors
178during boot. AcpiGbl_IgnorePackageResolutionErrors.
179
180Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
181ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
182compilation errors from unused variables (seen with some compilers).
183
184
1852) iASL Compiler/Disassembler and Tools:
186
187ASLTS: parallelized execution in order to achieve an (approximately) 2X
188performance increase.
189
190ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
191error reporting.
192
193----------------------------------------
19409 February 2018. Summary of changes for version 20180209:
195
196
1971) ACPICA kernel-resident subsystem:
198
199Completed the final integration of the recent changes to Package Object
200handling and the module-level AML code support. This allows forward
201references from individual package elements when the package object is
202declared from within module-level code blocks. Provides compatibility
203with other ACPI implementations.
204
205The new architecture for the AML module-level code has been completed and
206is now the default for the ACPICA code. This new architecture executes
207the module-level code in-line as the ACPI table is loaded/parsed instead
208of the previous architecture which deferred this code until after the
209table was fully loaded. This solves some ASL code ordering issues and
210provides compatibility with other ACPI implementations. At this time,
211there is an option to fallback to the earlier architecture, but this
212support is deprecated and is planned to be completely removed later this
213year.
214
215Added a compile-time option to ignore AE_NOT_FOUND exceptions during
216resolution of named reference elements within Package objects. Although
217this is potentially a serious problem, it can generate a lot of
218noise/errors on platforms whose firmware carries around a bunch of unused
219Package objects. To disable these errors, define
220ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
221errors are always reported for ACPICA applications such as AcpiExec.
222
223Fixed a regression related to the explicit type-conversion AML operators
224(ToXXXX). The regression was introduced early in 2017 but was not seen
225until recently because these operators are not fully supported by other
226ACPI implementations and are thus rarely used by firmware developers. The
227operators are defined by the ACPI specification to not implement the
228"implicit result object conversion". The regression incorrectly
229introduced this object conversion for the following explicit conversion
230operators:
231    ToInteger
232    ToString
233    ToBuffer
234    ToDecimalString
235    ToHexString
236    ToBCD
237    FromBCD
238
239
2402) iASL Compiler/Disassembler and Tools:
241
242iASL: Fixed a problem with the compiler constant folding feature as
243related to the ToXXXX explicit conversion operators. These operators do
244not support the "implicit result object conversion" by definition. Thus,
245ASL expressions that use these operators cannot be folded to a simple
246Store operator because Store implements the implicit conversion. This
247change uses the CopyObject operator for the ToXXXX operator folding
248instead. CopyObject is defined to not implement implicit result
249conversions and is thus appropriate for folding the ToXXXX operators.
250
251iASL: Changed the severity of an error condition to a simple warning for
252the case where a symbol is declared both locally and as an external
253symbol. This accommodates existing ASL code.
254
255AcpiExec: The -ep option to enable the new architecture for module-level
256code has been removed. It is replaced by the -dp option which instead has
257the opposite effect: it disables the new architecture (the default) and
258enables the legacy architecture. When the legacy code is removed in the
259future, the -dp option will be removed also.
260
261----------------------------------------
26205 January 2018. Summary of changes for version 20180105:
263
264
2651) ACPICA kernel-resident subsystem:
266
267Updated all copyrights to 2018. This affects all source code modules.
268
269Fixed a possible build error caused by an unresolved reference to the
270AcpiUtSafeStrncpy function.
271
272Removed NULL pointer arithmetic in the various pointer manipulation
273macros. All "(void *) NULL" constructs are converted to "(void *) 0".
274This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
275
276Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
277Mittal.
278
279
2802) iASL Compiler/Disassembler and Tools:
281
282ASLTS: Updated all copyrights to 2018.
283
284Tools: Updated all signon copyrights to 2018.
285
286AcpiXtract: Fixed a regression related to ACPI table signatures where the
287signature was truncated to 3 characters (instead of 4).
288
289AcpiExec: Restore the original terminal mode after the use of the -v and
290-vd options.
291
292ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
293
294----------------------------------------
29514 December 2017. Summary of changes for version 20171214:
296
297
2981) ACPICA kernel-resident subsystem:
299
300Fixed a regression in the external (public) AcpiEvaluateObjectTyped
301interface where the optional "pathname" argument had inadvertently become
302a required argument returning an error if omitted (NULL pointer
303argument).
304
305Fixed two possible memory leaks related to the recently developed "late
306resolution" of reference objects within ASL Package Object definitions.
307
308Added two recently defined _OSI strings: "Windows 2016" and "Windows
3092017". Mario Limonciello.
310
311Implemented and deployed a safer version of the C library function
312strncpy:  AcpiUtSafeStrncpy. The intent is to at least prevent the
313creation of unterminated strings as a possible result of a standard
314strncpy.
315
316Cleaned up and restructured the global variable file (acglobal.h). There
317are many changes, but no functional changes.
318
319
3202) iASL Compiler/Disassembler and Tools:
321
322iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
323optional OemData field at the end of the table was incorrectly required
324for proper compilation. It is now correctly an optional field.
325
326ASLTS: The entire suite was converted from standard ASL to the ASL+
327language, using the ASL-to-ASL+ converter which is integrated into the
328iASL compiler. A binary compare of all output files has verified the
329correctness of the conversion.
330
331iASL: Fixed the source code build for platforms where "char" is unsigned.
332This affected the iASL lexer only. Jung-uk Kim.
333
334----------------------------------------
33510 November 2017. Summary of changes for version 20171110:
336
337
3381) ACPICA kernel-resident subsystem:
339
340This release implements full support for ACPI 6.2A:
341    NFIT - Added a new subtable, "Platform Capabilities Structure"
342No other changes to ACPICA were required, since ACPI 6.2A is primarily an
343errata release of the specification.
344
345Other ACPI table changes:
346    IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
347    PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
348Linton
349
350Utilities: Modified the string/integer conversion functions to use
351internal 64-bit divide support instead of a native divide. On 32-bit
352platforms, a 64-bit divide typically requires a library function which
353may not be present in the build (kernel or otherwise).
354
355Implemented a targeted error message for timeouts returned from the
356Embedded Controller device driver. This is seen frequently enough to
357special-case an AE_TIME returned from an EC operation region access:
358    "Timeout from EC hardware or EC device driver"
359
360Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
361runtime error messages have the identical prefix.
362
363
3642) iASL Compiler/Disassembler and Tools:
365
366AcpiXtract: Fixed a problem with table header detection within the
367acpidump file. Processing a table could be ended early if a 0x40 (@)
368appears in the original binary table, resulting in the @ symbol appearing
369in the decoded ASCII field at the end of the acpidump text line. The
370symbol caused acpixtract to incorrectly think it had reached the end of
371the current table and the beginning of a new table.
372
373AcpiXtract: Added an option (-f) to ignore some errors during table
374extraction. This initial implementation ignores non-ASCII and non-
375printable characters found in the acpidump text file.
376
377TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
378for ASLTS. This feature is used to track memory allocations from
379different memory caches within the ACPICA code. At the end of an ASLTS
380run, these memory statistics are recorded and stored in a log file.
381
382Debugger (user-space version): Implemented a simple "Background" command.
383Creates a new thread to execute a control method in the background, while
384control returns to the debugger prompt to allow additional commands.
385    Syntax: Background <Namepath> [Arguments]
386
387----------------------------------------
38829 September 2017. Summary of changes for version 20170929:
389
390
3911) ACPICA kernel-resident subsystem:
392
393Redesigned and implemented an improved ASL While() loop timeout
394mechanism. This mechanism is used to prevent infinite loops in the kernel
395AML interpreter caused by either non-responsive hardware or incorrect AML
396code. The new implementation uses AcpiOsGetTimer instead of a simple
397maximum loop count, and is thus more accurate and constant across
398different machines. The default timeout is currently 30 seconds, but this
399may be adjusted later.
400
401Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
402better reflect the new implementation of the loop timeout mechanism.
403
404Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
405and to fix an off-by-one error. Jung-uk Kim.
406
407Fixed an EFI build problem by updating the makefiles to for a new file
408that was added, utstrsuppt.c
409
410
4112) iASL Compiler/Disassembler and Tools:
412
413Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
414includes support in the table disassembler, compiler, and template
415generator.
416
417iASL: Added an exception for an illegal type of recursive method
418invocation. If a method creates named objects, the first recursive call
419will fail at runtime. This change adds an error detection at compile time
420to catch the problem up front. Note: Marking such a method as
421"serialized" will not help with this problem, because the same thread can
422acquire the method mutex more than once. Example compiler and runtime
423output:
424
425    Method (MTH1)
426    {
427        Name (INT1, 1)
428        MTH1 ()
429    }
430
431    dsdt.asl     22: MTH1 ()
432    Error    6152 -  ^ Illegal recursive call to method
433                       that creates named objects (MTH1)
434
435Previous runtime exception:
436    ACPI Error: [INT1] Namespace lookup failure,
437    AE_ALREADY_EXISTS (20170831/dswload2-465)
438
439iASL: Updated support for External() opcodes to improve namespace
440management and error detection. These changes are related to issues seen
441with multiple-segment namespace pathnames within External declarations,
442such as below:
443
444    External(\_SB.PCI0.GFX0, DeviceObj)
445    External(\_SB.PCI0.GFX0.ALSI)
446
447iASL: Implemented support for multi-line error/warning messages. This
448enables more detailed and helpful error messages as below, from the
449initial deployment for the duplicate names error:
450
451    DSDT.iiii   1692:       Device(PEG2) {
452    Error    6074 -                  ^ Name already exists in scope
453(PEG2)
454
455        Original name creation/declaration below:
456        DSDT.iiii     93:   External(\_SB.PCI0.PEG2, DeviceObj)
457
458AcpiXtract: Added additional flexibility to support differing input hex
459dump formats. Specifically, hex dumps that contain partial disassembly
460and/or comments within the ACPI table data definition. There exist some
461dump utilities seen in the field that create this type of hex dump (such
462as Simics). For example:
463
464    DSDT @ 0xdfffd0c0 (10999 bytes)
465        Signature DSDT
466        Length 10999
467        Revision 1
468        Checksum 0xf3 (Ok)
469        OEM_ID BXPC
470        OEM_table_id BXDSDT
471        OEM_revision 1
472        Creator_id 1280593481
473        Creator_revision 537399345
474      0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
475      ...
476      2af0: 5f 4c 30 46 00 a4 01
477
478Test suite: Miscellaneous changes/fixes:
479    More cleanup and simplification of makefiles
480    Continue compilation of test cases after a compile failure
481    Do not perform binary compare unless both files actually exist
482
483iASL: Performed some code/module restructuring. Moved all memory
484allocation functions to new modules. Two new files, aslallocate.c and
485aslcache.c
486
487----------------------------------------
48831 August 2017. Summary of changes for version 20170831:
489
490
4911) ACPICA kernel-resident subsystem:
492
493Implemented internal support for full 64-bit addresses that appear in all
494Generic Address Structure (GAS) structures. Previously, only the lower 32
495bits were used. Affects the use of GAS structures in the FADT and other
496tables, as well as the GAS structures passed to the AcpiRead and
497AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
498
499Added header support for the PDTT ACPI table (Processor Debug Trigger
500Table). Full support in the iASL Data Table Compiler and disassembler is
501forthcoming.
502
503
5042) iASL Compiler/Disassembler and Tools:
505
506iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
507Properties Topology Table) where a flag bit was specified in the wrong
508bit position ("Line Size Valid", bit 6).
509
510iASL: Implemented support for Octal integer constants as defined by the
511ASL language grammar, per the ACPI specification. Any integer constant
512that starts with a zero is an octal constant. For example,
513    Store (037777, Local0) /* Octal constant */
514    Store (0x3FFF, Local0) /* Hex equivalent */
515    Store (16383,  Local0) /* Decimal equivalent */
516
517iASL: Improved overflow detection for 64-bit string conversions during
518compilation of integer constants. "Overflow" in this case means a string
519that represents an integer that is too large to fit into a 64-bit value.
520Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
521the low-order 32 bits with a warning, as previously implemented. Several
522new exceptions are defined that indicate a 64-bit overflow, as well as
523the base (radix) that was used during the attempted conversion. Examples:
524    Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF        // AE_HEX_OVERFLOW
525    Local0 = 01111222233334444555566667777     // AE_OCTAL_OVERFLOW
526    Local0 = 11112222333344445555666677778888  // AE_DECIMAL_OVERFLOW
527
528iASL: Added a warning for the case where a ResourceTemplate is declared
529with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
530this case, the resulting template is created with a single END_TAG
531descriptor, which is essentially useless.
532
533iASL: Expanded the -vw option (ignore specific warnings/remarks) to
534include compilation error codes as well.
535
536----------------------------------------
53728 July 2017. Summary of changes for version 20170728:
538
539
5401) ACPICA kernel-resident subsystem:
541
542Fixed a regression seen with small resource descriptors that could cause
543an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
544
545AML interpreter: Implemented a new feature that allows forward references
546from individual named references within package objects that are
547contained within blocks of "module-level code". This provides
548compatibility with other ACPI implementations and supports existing
549firmware that depends on this feature. Example:
550
551    Name (ABCD, 1)
552    If (ABCD)                       /* An If() at module-level */
553    {
554        Name (PKG1, Package()
555        {
556            INT1                    /* Forward reference to object INT1
557*/
558        })
559        Name (INT1, 0x1234)
560    }
561
562AML Interpreter: Fixed a problem with the Alias() operator where aliases
563to some ASL objects were not handled properly. Objects affected are:
564Mutex, Event, and OperationRegion.
565
566AML Debugger: Enhanced to properly handle AML Alias objects. These
567objects have one level of indirection which was not fully supported by
568the debugger.
569
570Table Manager: Added support to detect and ignore duplicate SSDTs within
571the XSDT/RSDT. This error in the XSDT has been seen in the field.
572
573EFI and EDK2 support:
574    Enabled /WX flag for MSVC builds
575    Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
576    Added local support for 64-bit multiply and shift operations
577    Added support to compile acpidump.efi on Windows
578    Added OSL function stubs for interfaces not used under EFI
579
580Added additional support for the _DMA predefined name. _DMA returns a
581buffer containing a resource template. This change add support within the
582resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
583resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
584
585
5862) iASL Compiler/Disassembler and Tools:
587
588iASL: Fixed a problem where the internal input line buffer(s) could
589overflow if there are very long lines in the input ASL source code file.
590Implemented buffer management that automatically increases the size of
591the buffers as necessary.
592
593iASL: Added an option (-vx) to "expect" particular remarks, warnings and
594errors. If the specified exception is not raised during compilation, the
595compiler emits an error. This is intended to support the ASL test suite,
596but may be useful in other contexts.
597
598iASL: Implemented a new predefined macro, __METHOD__, which returns a
599string containing the name of the current control method that is being
600compiled.
601
602iASL: Implemented debugger and table compiler support for the SDEI ACPI
603table (Software Delegated Exception Interface). James Morse
604<james.morse@arm.com>
605
606Unix/Linux makefiles: Added an option to disable compile optimizations.
607The disable occurs when the NOOPT flag is set to TRUE.
608theracermaster@gmail.com
609
610Acpidump: Added support for multiple DSDT and FACS tables. This can occur
611when there are different tables for 32-bit versus 64-bit.
612
613Enhanced error reporting for the ASL test suite (ASLTS) by removing
614unnecessary/verbose text, and emit the actual line number where an error
615has occurred. These changes are intended to improve the usefulness of the
616test suite.
617
618----------------------------------------
61929 June 2017. Summary of changes for version 20170629:
620
621
6221) ACPICA kernel-resident subsystem:
623
624Tables: Implemented a deferred ACPI table verification. This is useful
625for operating systems where the tables cannot be verified in the early
626initialization stage due to early memory mapping limitations on some
627architectures. Lv Zheng.
628
629Tables: Removed the signature validation for dynamically loaded tables.
630Provides compatibility with other ACPI implementations. Previously, only
631SSDT tables were allowed, as per the ACPI specification. Now, any table
632signature can be used via the Load() operator. Lv Zheng.
633
634Tables: Fixed several mutex issues that could cause errors during table
635acquisition. Lv Zheng.
636
637Tables: Fixed a problem where an ACPI warning could be generated if a
638null pointer was passed to the AcpiPutTable interface. Lv Zheng.
639
640Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
641AcpiPutTable interfaces. This applies to the "late stage" table loading
642when the use of AcpiPutTable is no longer required (since the system
643memory manager is fully running and available). Lv Zheng.
644
645Fixed/Reverted a regression during processing of resource descriptors
646that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
647exception in this case.
648
649Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
650I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
651
652Interpreter: Fixed a possible fault if an Alias operator with an invalid
653or duplicate target is encountered during Alias creation in
654AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
655
656Added an option to use designated initializers for function pointers.
657Kees Cook <keescook@google.com>
658
659
6602) iASL Compiler/Disassembler and Tools:
661
662iASL: Allow compilation of External declarations with target pathnames
663that refer to existing named objects within the table. Erik Schmauss.
664
665iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
666FieldUnit name also is declared via External in the same table. Erik
667Schmauss.
668
669iASL: Allow existing scope names within pathnames used in External
670statements. For example:
671    External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
672    Device (ABCD)
673
674iASL: IORT ACPI table: Implemented changes required to decode the new
675Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
676compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
677
678Disassembler: Don't abort disassembly on errors from External()
679statements. Erik Schmauss.
680
681Disassembler: fixed a possible fault when one of the Create*Field
682operators references a Resource Template. ACPICA Bugzilla 1396.
683
684iASL: In the source code, resolved some naming inconsistences across the
685parsing support. Fixes confusion between "Parse Op" and "Parse Node".
686Adds a new file, aslparseop.c
687
688----------------------------------------
68931 May 2017. Summary of changes for version 20170531:
690
691
6920) ACPI 6.2 support:
693
694The ACPI specification version 6.2 has been released and is available at
695http://uefi.org/specifications
696
697This version of ACPICA fully supports the ACPI 6.2 specification. Changes
698are summarized below.
699
700New ACPI tables (Table Compiler/Disassembler/Templates):
701    HMAT (Heterogeneous Memory Attributes Table)
702    WSMT (Windows SMM Security Mitigation Table)
703    PPTT (Processor Properties Topology Table)
704
705New subtables for existing ACPI tables:
706    HEST (New subtable, Arch-deferred machine check)
707    SRAT (New subtable, Arch-specific affinity structure)
708    PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
709
710Simple updates for existing ACPI tables:
711    BGRT (two new flag bits)
712    HEST (New bit defined for several subtables, GHES_ASSIST)
713
714New Resource Descriptors and Resource macros (Compiler/Disassembler):
715    PinConfig()
716    PinFunction()
717    PinGroup()
718    PinGroupConfig()
719    PinGroupFunction()
720    New type for hardware error notification (section 18.3.2.9)
721
722New predefined names/methods (Compiler/Interpreter):
723    _HMA (Heterogeneous Memory Attributes)
724    _LSI (Label Storage Information)
725    _LSR (Label Storage Read)
726    _LSW (Label Storage Write)
727
728ASL grammar/macro changes (Compiler):
729    For() ASL macro, implemented with the AML while operator
730    Extensions to Concatenate operator
731    Support for multiple definition blocks in same ASL file
732    Clarification for Buffer operator
733    Allow executable AML code underneath all scopes (Devices, etc.)
734    Clarification/change for the _OSI return value
735    ASL grammar update for reference operators
736    Allow a zero-length string for AML filename in DefinitionBlock
737
738Miscellaneous:
739    New device object notification value
740    Remove a notify value (0x0C) for graceful shutdown
741    New UUIDs for processor/cache properties and
742        physical package property
743    New _HID, ACPI0014 (Wireless Power Calibration Device)
744
745
7461) ACPICA kernel-resident subsystem:
747
748Added support to disable ACPI events on hardware-reduced platforms.
749Eliminates error messages of the form "Could not enable fixed event". Lv
750Zheng
751
752Fixed a problem using Device/Thermal objects with the ObjectType and
753DerefOf ASL operators. This support had not been fully/properly
754implemented.
755
756Fixed a problem where if a Buffer object containing a resource template
757was longer than the actual resource template, an error was generated --
758even though the AML is legal. This case has been seen in the field.
759
760Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
761The values for DUAL_PIC and MULTIPLE_APIC were reversed.
762
763Added header file changes for the TPM2 ACPI table. Update to new version
764of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
765
766Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
767These interfaces are intended to be used only in conjunction with the
768predefined _DLM method (Device Lock Method). "This object appears in a
769device scope when AML access to the device must be synchronized with the
770OS environment".
771
772Example Code and Data Size: These are the sizes for the OS-independent
773acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
774debug version of the code includes the debug output trace mechanism and
775has a much larger code and data size.
776
777  Current Release:
778    Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
779    Debug Version:     204.0K Code, 84.3K Data, 288.3K Total
780  Previous Release:
781    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
782    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
783
784
7852) iASL Compiler/Disassembler and Tools:
786
787iASL: Fixed a problem where an External() declaration could not refer to
788a Field Unit. Erik Schmauss.
789
790Disassembler: Improved support for the Switch/Case operators. This
791feature will disassemble AML code back to the original Switch operators
792when possible, instead of an If..Else sequence. David Box
793
794iASL and disassembler: Improved the handling of multiple extraneous
795parentheses for both ASL input and disassembled ASL output.
796
797Improved the behavior of the iASL compiler and disassembler to detect
798improper use of external declarations
799
800Disassembler: Now aborts immediately upon detection of an unknown AML
801opcode. The AML parser has no real way to recover from this, and can
802result in the creation of an ill-formed parse tree that causes errors
803later during the disassembly.
804
805All tools: Fixed a problem where the Unix application OSL did not handle
806control-c correctly. For example, a control-c could incorrectly wake the
807debugger.
808
809AcpiExec: Improved the Control-C handling and added a handler for
810segmentation faults (SIGSEGV). Supports both Windows and Unix-like
811environments.
812
813Reduced the verbosity of the generic unix makefiles. Previously, each
814compilation displayed the full set of compiler options. This has been
815eliminated as the options are easily inspected within the makefiles. Each
816compilation now results in a single line of output.
817
818----------------------------------------
81903 March 2017. Summary of changes for version 20170303:
820
821
8220) ACPICA licensing:
823
824The licensing information at the start of each source code module has
825been updated. In addition to the Intel license, the dual GPLv2/BSD
826license has been added for completeness. Now, a single version of the
827source code should be suitable for all ACPICA customers. This is the
828major change for this release since it affects all source code modules.
829
830
8311) ACPICA kernel-resident subsystem:
832
833Fixed two issues with the common asltypes.h header that could cause
834problems in some environments: (Kim Jung-uk)
835    Removed typedef for YY_BUFFER_STATE ?
836       Fixes an error with earlier versions of Flex.
837    Removed use of FILE typedef (which is only defined in stdio.h)
838
839
8402) iASL Compiler/Disassembler and Tools:
841
842Disassembler: fixed a regression introduced in 20170224. A fix for a
843memory leak related to resource descriptor tags (names) could fault when
844the disassembler was generated with 64-bit compilers.
845
846The ASLTS test suite has been updated to implement a new testing
847architecture. During generation of the suite from ASL source, both the
848ASL and ASL+ compilers are now validated, as well as the disassembler
849itself (Erik Schmauss). The architecture executes as follows:
850
851    For every ASL source module:
852        Compile (legacy ASL compilation)
853        Disassemble the resulting AML to ASL+ source code
854        Compile the new ASL+ module
855        Perform a binary compare on the legacy AML and the new ASL+ AML
856    The ASLTS suite then executes normally using the AML binaries.
857
858----------------------------------------
85924 February 2017. Summary of changes for version 20170224:
860
861
8621) ACPICA kernel-resident subsystem:
863
864Interpreter: Fixed two issues with the control method return value auto-
865repair feature, where an attempt to double-delete an internal object
866could result in an ACPICA warning (for _CID repair and others). No fault
867occurs, however, because the attempted deletion (actually a release to an
868internal cache) is detected and ignored via object poisoning.
869
870Debugger: Fixed an AML interpreter mutex issue during the single stepping
871of control methods. If certain debugger commands are executed during
872stepping, a mutex aquire/release error could occur. Lv Zheng.
873
874Fixed some issues generating ACPICA with the Intel C compiler by
875restoring the original behavior and compiler-specific include file in
876acenv.h. Lv Zheng.
877
878Example Code and Data Size: These are the sizes for the OS-independent
879acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
880debug version of the code includes the debug output trace mechanism and
881has a much larger code and data size.
882
883  Current Release:
884    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
885    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
886  Previous Release:
887    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
888    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
889
890
8912) iASL Compiler/Disassembler and Tools:
892
893iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
894tool has been designed, implemented, and included in this release. The
895key feature of this utility is that the original comments within the
896input ASL file are preserved during the conversion process, and included
897within the converted ASL+ file -- thus creating a transparent conversion
898of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
899
900    Usage: iasl -ca <ASL-filename>  // Output is a .dsl file with
901converted code
902
903iASL/Disassembler: Improved the detection and correct disassembly of
904Switch/Case operators. This feature detects sequences of if/elseif/else
905operators that originated from ASL Switch/Case/Default operators and
906emits the original operators. David Box.
907
908iASL: Improved the IORT ACPI table support in the following areas. Lv
909Zheng:
910    Clear MappingOffset if the MappingCount is zero.
911    Fix the disassembly of the SMMU GSU interrupt offset.
912    Update the template file for the IORT table.
913
914Disassembler: Enhanced the detection and disassembly of resource
915template/descriptor within a Buffer object. An EndTag descriptor is now
916required to have a zero second byte, since all known ASL compilers emit
917this. This helps eliminate incorrect decisions when a buffer is
918disassembled (false positives on resource templates).
919
920----------------------------------------
92119 January 2017. Summary of changes for version 20170119:
922
923
9241) General ACPICA software:
925
926Entire source code base: Added the 2017 copyright to all source code
927legal/licensing module headers and utility/tool signons. This includes
928the standard Linux dual-license header. This affects virtually every file
929in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
930the ACPICA test suite.
931
932
9332) iASL Compiler/Disassembler and Tools:
934
935iASL: Removed/fixed an inadvertent remark when a method argument
936containing a reference is used as a target operand within the method (and
937never used as a simple argument), as in the example below. Jeffrey Hugo.
938
939    dsdt.asl   1507:    Store(0x1, Arg0)
940    Remark   2146 -                ^ Method Argument is never used (Arg0)
941
942All tools: Removed the bit width of the compiler that generated the tool
943from the common signon for all user space tools. This proved to be
944confusing and unnecessary. This includes similar removal of HARDWARE_NAME
945from the generic makefiles (Thomas Petazzoni). Example below.
946
947    Old:
948    ASL+ Optimizing Compiler version 20170119-32
949    ASL+ Optimizing Compiler version 20170119-64
950
951    New:
952    ASL+ Optimizing Compiler version 20170119
953
954----------------------------------------
95522 December 2016. Summary of changes for version 20161222:
956
957
9581) ACPICA kernel-resident subsystem:
959
960AML Debugger: Implemented a new mechanism to simplify and enhance
961debugger integration into all environments, including kernel debuggers
962and user-space utilities, as well as remote debug services. This
963mechanism essentially consists of new OSL interfaces to support debugger
964initialization/termination, as well as wait/notify interfaces to perform
965the debugger handshake with the host. Lv Zheng.
966
967    New OSL interfaces:
968        AcpiOsInitializeDebugger (void)
969        AcpiOsTerminateDebugger (void)
970        AcpiOsWaitCommandReady (void)
971        AcpiOsNotifyCommandComplete (void)
972
973    New OS services layer:
974        osgendbg.c -- Example implementation, and used for AcpiExec
975
976Update for Generic Address Space (GAS) support: Although the AccessWidth
977and/or BitOffset fields of the GAS are not often used, this change now
978fully supports these fields. This affects the internal support for FADT
979registers, registers in other ACPI data tables, and the AcpiRead and
980AcpiWrite public interfaces. Lv Zheng.
981
982Sleep support: In order to simplify integration of ACPI sleep for the
983various host operating systems, a new OSL interface has been introduced.
984AcpiOsEnterSleep allows the host to perform any required operations
985before the final write to the sleep control register(s) is performed by
986ACPICA. Lv Zheng.
987
988    New OSL interface:
989        AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
990
991    Called from these internal interfaces:
992        AcpiHwLegacySleep
993        AcpiHwExtendedSleep
994
995EFI support: Added a very small EFI/ACPICA example application. Provides
996a simple demo for EFI integration, as well as assisting with resolution
997of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
998
999    source/tools/efihello/efihello.c
1000
1001Local C library: Implemented several new functions to enhance ACPICA
1002portability, for environments where these clib functions are not
1003available (such as EFI). Lv Zheng:
1004    putchar
1005    getchar
1006    strpbrk
1007    strtok
1008    memmove
1009
1010Fixed a regression where occasionally a valid resource descriptor was
1011incorrectly detected as invalid at runtime, and a
1012AE_AML_NO_RESOURCE_END_TAG was returned.
1013
1014Fixed a problem with the recently implemented support that enables
1015control method invocations as Target operands to many ASL operators.
1016Warnings of this form: "Needed type [Reference], found [Processor]" were
1017seen at runtime for some method invocations.
1018
1019Example Code and Data Size: These are the sizes for the OS-independent
1020acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1021debug version of the code includes the debug output trace mechanism and
1022has a much larger code and data size.
1023
1024  Current Release:
1025    Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
1026    Debug Version:     201.7K Code, 82.7K Data, 284.4K Total
1027  Previous Release:
1028    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
1029    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
1030
1031
10322) iASL Compiler/Disassembler and Tools:
1033
1034Disassembler: Enhanced output by adding the capability to detect and
1035disassemble ASL Switch/Case statements back to the original ASL source
1036code instead of if/else blocks. David Box.
1037
1038AcpiHelp: Split a large file into separate files based upon
1039functionality/purpose. New files are:
1040    ahaml.c
1041    ahasl.c
1042
1043----------------------------------------
104417 November 2016. Summary of changes for version 20161117:
1045
1046
10471) ACPICA kernel-resident subsystem:
1048
1049Table Manager: Fixed a regression introduced in 20160729, "FADT support
1050cleanup". This was an attempt to remove all references in the source to
1051the FADT version 2, which never was a legal version number. It was
1052skipped because it was an early version of 64-bit support that was
1053eventually abandoned for the current 64-bit support.
1054
1055Interpreter: Fixed a problem where runtime implicit conversion was
1056incorrectly disabled for the ASL operators below. This brings the
1057behavior into compliance with the ACPI specification:
1058    FromBCD
1059    ToBCD
1060    ToDecimalString
1061    ToHexString
1062    ToInteger
1063    ToBuffer
1064
1065Table Manager: Added a new public interface, AcpiPutTable, used to
1066release and free an ACPI table returned by AcpiGetTable and related
1067interfaces. Lv Zheng.
1068
1069Example Code and Data Size: These are the sizes for the OS-independent
1070acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1071debug version of the code includes the debug output trace mechanism and
1072has a much larger code and data size.
1073
1074  Current Release:
1075    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
1076    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
1077  Previous Release:
1078    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
1079    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
1080
1081
10822) iASL Compiler/Disassembler and Tools:
1083
1084Disassembler: Fixed a regression for disassembly of Resource Template.
1085Detection of templates in the AML stream missed some types of templates.
1086
1087iASL: Fixed a problem where an Access Size error was returned for the PCC
1088address space when the AccessSize of the GAS register is greater than a
1089DWORD. Hoan Tran.
1090
1091iASL: Implemented several grammar changes for the operators below. These
1092changes are slated for the next version of the ACPI specification:
1093    RefOf        - Disallow method invocation as an operand
1094    CondRefOf    - Disallow method invocation as an operand
1095    DerefOf      - Disallow operands that use the result from operators
1096that
1097                   do not return a reference (Changed TermArg to
1098SuperName).
1099
1100iASL: Control method invocations are now allowed for Target operands, as
1101per the ACPI specification. Removed error for using a control method
1102invocation as a Target operand.
1103
1104Disassembler: Improved detection of Resource Templates, Unicode, and
1105Strings within Buffer objects. These subtypes do not contain a specific
1106opcode to indicate the originating ASL code, and they must be detected by
1107other means within the disassembler.
1108
1109iASL: Implemented an optimization improvement for 32-bit ACPI tables
1110(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
1111only after 64-bit to 32-bit truncation. A truncation warning message is
1112still emitted, however.
1113
1114AcpiXtract: Implemented handling for both types of line terminators (LF
1115or CR/LF) so that it can accept AcpiDump output files from any system.
1116Peter Wu.
1117
1118AcpiBin: Added two new options for comparing AML files:
1119    -a: compare and display ALL mismatches
1120    -o: start compare at this offset into the second file
1121
1122----------------------------------------
112330 September 2016. Summary of changes for version 20160930:
1124
1125
11261) ACPICA kernel-resident subsystem:
1127
1128Fixed a regression in the internal AcpiTbFindTable function where a non
1129AE_OK exception could inadvertently be returned even if the function did
1130not fail. This problem affects the following operators:
1131    DataTableRegion
1132    LoadTable
1133
1134Fixed a regression in the LoadTable operator where a load to any
1135namespace location other than the root no longer worked properly.
1136
1137Increased the maximum loop count value that will result in the
1138AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
1139prevent infinite loops within the AML interpreter and thus the host OS
1140kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
11411,048,575).
1142
1143Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
1144acpixf.h file. This allows hosts to easily configure the maximum loop
1145count at runtime.
1146
1147Removed an illegal character in the strtoul64.c file. This character
1148caused errors with some C compilers.
1149
1150Example Code and Data Size: These are the sizes for the OS-independent
1151acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1152debug version of the code includes the debug output trace mechanism and
1153has a much larger code and data size.
1154
1155  Current Release:
1156    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
1157    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
1158  Previous Release:
1159    Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
1160    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
1161
1162
11632) iASL Compiler/Disassembler and Tools:
1164
1165Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
1166the simpler ASL ElseIf keyword. During the conversion, a trailing If
1167block could be lost and missing from the disassembled output.
1168
1169iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
1170the missing rule caused a parse error when using the Index operator as an
1171operand to ObjectType. This construct now compiles properly. Example:
1172    ObjectType(PKG1[4]).
1173
1174iASL: Correctly handle unresolved symbols in the hardware map file (-lm
1175option). Previously, unresolved symbols could cause a protection fault.
1176Such symbols are now marked as unresolved in the map file.
1177
1178iASL: Implemented support to allow control method invocations as an
1179operand to the ASL DeRefOf operator. Example:
1180    DeRefOf(MTH1(Local0))
1181
1182Disassembler: Improved support for the ToPLD ASL macro. Detection of a
1183possible _PLD buffer now includes examination of both the normal buffer
1184length (16 or 20) as well as the surrounding AML package length.
1185
1186Disassembler: Fixed a problem with the decoding of complex expressions
1187within the Divide operator for ASL+. For the case where both the quotient
1188and remainder targets are specified, the entire statement cannot be
1189disassembled. Previously, the output incorrectly contained a mix of ASL-
1190and ASL+ operators. This mixed statement causes a syntax error when
1191compiled. Example:
1192    Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly
1193disassembled to:
1194    Divide (INT1 + 6, 128, RSLT, QUOT)
1195
1196iASL/Tools: Added support to process AML and non-AML ACPI tables
1197consistently. For the disassembler and AcpiExec, allow all types of ACPI
1198tables (AML and data tables). For the iASL -e option, allow only AML
1199tables (DSDT/SSDT).
1200
1201----------------------------------------
120231 August 2016. Summary of changes for version 20160831:
1203
1204
12051) ACPICA kernel-resident subsystem:
1206
1207Improve support for the so-called "module-level code", which is defined
1208to be math, logical and control AML opcodes that appear outside of any
1209control method. This change improves the support by adding more opcodes
1210that can be executed in the manner. Some other issues have been solved,
1211and the ASL grammar changes to support such code under all scope
1212operators (Device, etc.) are complete. Lv Zheng.
1213
1214UEFI support: these OSL functions have been implemented. This is an
1215additional step toward supporting the AcpiExec utility natively (with
1216full hardware access) under UEFI. Marcelo Ferreira.
1217    AcpiOsReadPciConfiguration
1218    AcpiOsWritePciConfiguration
1219
1220Fixed a possible mutex error during control method auto-serialization. Lv
1221Zheng.
1222
1223Updated support for the Generic Address Structure by fully implementing
1224all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
1225Zheng.
1226
1227Updated the return value for the internal _OSI method. Instead of
12280xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
1229for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
1230implementations, and will be reflected and clarified in the next version
1231of the ACPI specification.
1232
1233Implemented two new table events that can be passed to an ACPICA table
1234handler. These events are used to indicate a table installation or
1235uninstallation. These events are used in addition to existed table load
1236and unload events. Lv Zheng.
1237
1238Implemented a cleanup for all internal string-to-integer conversions.
1239Consolidate multiple versions of this functionality and limit possible
1240bases to either 10 or 16 to simplify the code. Adds a new file,
1241utstrtoul64.
1242
1243Cleanup the inclusion order of the various compiler-specific headers.
1244This simplifies build configuration management. The compiler-specific
1245headers are now split out from the host-specific headers. Lv Zheng.
1246
1247Example Code and Data Size: These are the sizes for the OS-independent
1248acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1249debug version of the code includes the debug output trace mechanism and
1250has a much larger code and data size.
1251
1252  Current Release:
1253    Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
1254    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
1255
1256
12572) iASL Compiler/Disassembler and Tools:
1258
1259iASL/AcpiExec: Added a command line option to display the build date/time
1260of the tool (-vd). This can be useful to verify that the correct version
1261of the tools are being used.
1262
1263AML Debugger: Implemented a new subcommand ("execute predef") to execute
1264all predefined control methods and names within the current namespace.
1265This can be useful for debugging problems with ACPI tables and the ACPI
1266namespace.
1267
1268----------------------------------------
126929 July 2016. Summary of changes for version 20160729:
1270
1271
12721) ACPICA kernel-resident subsystem:
1273
1274Implemented basic UEFI support for the various ACPICA tools. This
1275includes:
12761) An OSL to implement the various AcpiOs* interfaces on UEFI.
12772) Support to obtain the ACPI tables on UEFI.
12783) Local implementation of required C library functions not available on
1279UEFI.
12804) A front-end (main) function for the tools for UEFI-related
1281initialization.
1282
1283The initial deployment of this support is the AcpiDump utility executing
1284as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
1285Current environments supported are Linux/Unix. MSVC generation is not
1286supported at this time. See the generate/efi/README file for build
1287instructions. Lv Zheng.
1288
1289Future plans include porting the AcpiExec utility to execute natively on
1290the platform with I/O and memory access. This will allow viewing/dump of
1291the platform namespace and native execution of ACPI control methods that
1292access the actual hardware. To fully implement this support, the OSL
1293functions below must be implemented with UEFI interfaces. Any community
1294help in the implementation of these functions would be appreciated:
1295    AcpiOsReadPort
1296    AcpiOsWritePort
1297    AcpiOsReadMemory
1298    AcpiOsWriteMemory
1299    AcpiOsReadPciConfiguration
1300    AcpiOsWritePciConfiguration
1301
1302Restructured and standardized the C library configuration for ACPICA,
1303resulting in the various configuration options below. This includes a
1304global restructuring of the compiler-dependent and platform-dependent
1305include files. These changes may affect the existing platform-dependent
1306configuration files on some hosts. Lv Zheng.
1307
1308The current C library configuration options appear below. For any issues,
1309it may be helpful to examine the existing compiler-dependent and
1310platform-dependent files as examples. Lv Zheng.
1311
13121) Linux kernel:
1313    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
1314library.
1315    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
13162) Unix/Windows/BSD applications:
1317    ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
1318library.
1319    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
13203) UEFI applications:
1321    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
1322library.
1323    ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
13244) UEFI applications (EDK2/StdLib):
1325    ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
1326    ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
1327
1328
1329AML interpreter: "module-level code" support. Allows for execution of so-
1330called "executable" AML code (math/logical operations, etc.) outside of
1331control methods not just at the module level (top level) but also within
1332any scope declared outside of a control method - Scope{}, Device{},
1333Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
1334
1335Simplified the configuration of the "maximum AML loops" global option by
1336adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
1337modified at runtime.
1338
1339
1340Example Code and Data Size: These are the sizes for the OS-independent
1341acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1342debug version of the code includes the debug output trace mechanism and
1343has a much larger code and data size.
1344
1345  Current Release:
1346    Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
1347    Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
1348
1349
13502) iASL Compiler/Disassembler and Tools:
1351
1352iASL: Add full support for the RASF ACPI table (RAS Features Table).
1353Includes disassembler, data table compiler, and header support.
1354
1355iASL Expand "module-level code" support. Allows for
1356compilation/disassembly of so-called "executable" AML code (math/logical
1357operations, etc.) outside of control methods not just at the module level
1358(top level) but also within any scope declared outside of a control
1359method - Scope{}, Device{}, Processor{}, PowerResource{}, and
1360ThermalZone{}.
1361
1362AcpiDump: Added support for dumping all SSDTs on newer versions of
1363Windows. These tables are now easily available -- SSDTs are not available
1364through the registry on older versions.
1365
1366----------------------------------------
136727 May 2016. Summary of changes for version 20160527:
1368
1369
13701) ACPICA kernel-resident subsystem:
1371
1372Temporarily reverted the new arbitrary bit length/alignment support in
1373AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
1374a number of regressions with the new code that need to be fully resolved
1375and tested before this support can be finally integrated into ACPICA.
1376Apologies for any inconveniences these issues may have caused.
1377
1378The ACPI message macros are not configurable (ACPI_MSG_ERROR,
1379ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
1380and ACPI_MSG_BIOS_WARNING). Lv Zheng.
1381
1382Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
1383option. Adds a new return macro, return_STR. Junk-uk Kim.
1384
1385Example Code and Data Size: These are the sizes for the OS-independent
1386acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1387debug version of the code includes the debug output trace mechanism and
1388has a much larger code and data size.
1389
1390  Current Release:
1391    Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
1392    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
1393  Previous Release:
1394    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
1395    Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
1396
1397----------------------------------------
139822 April 2016. Summary of changes for version 20160422:
1399
14001) ACPICA kernel-resident subsystem:
1401
1402Fixed a regression in the GAS (generic address structure) arbitrary bit
1403support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
1404and incorrect return values. Lv Zheng. ACPICA BZ 1270.
1405
1406ACPI 6.0: Added support for new/renamed resource macros. One new argument
1407was added to each of these macros, and the original name has been
1408deprecated. The AML disassembler will always disassemble to the new
1409names. Support for the new macros was added to iASL, disassembler,
1410resource manager, and the acpihelp utility. ACPICA BZ 1274.
1411
1412    I2cSerialBus  -> I2cSerialBusV2
1413    SpiSerialBus  -> SpiSerialBusV2
1414    UartSerialBus -> UartSerialBusV2
1415
1416ACPI 6.0: Added support for a new integer field that was appended to the
1417package object returned by the _BIX method. This adds iASL compile-time
1418and AML runtime error checking. ACPICA BZ 1273.
1419
1420ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
1421Subspace Type2" (Headers, Disassembler, and data table compiler).
1422
1423Example Code and Data Size: These are the sizes for the OS-independent
1424acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1425debug version of the code includes the debug output trace mechanism and
1426has a much larger code and data size.
1427
1428  Current Release:
1429    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
1430    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
1431  Previous Release:
1432    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
1433    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
1434
1435
14362) iASL Compiler/Disassembler and Tools:
1437
1438iASL: Implemented an ASL grammar extension to allow/enable executable
1439"module-level code" to be created and executed under the various
1440operators that create new scopes. This type of AML code is already
1441supported in all known AML interpreters, and the grammar change will
1442appear in the next version of the ACPI specification. Simplifies the
1443conditional runtime creation of named objects under these object types:
1444
1445    Device
1446    PowerResource
1447    Processor
1448    Scope
1449    ThermalZone
1450
1451iASL: Implemented a new ASL extension, a "For" loop macro to add greater
1452ease-of-use to the ASL language. The syntax is similar to the
1453corresponding C operator, and is implemented with the existing AML While
1454opcode -- thus requiring no changes to existing AML interpreters.
1455
1456    For (Initialize, Predicate, Update) {TermList}
1457
1458Grammar:
1459    ForTerm :=
1460        For (
1461            Initializer    // Nothing | TermArg => ComputationalData
1462            Predicate      // Nothing | TermArg => ComputationalData
1463            Update         // Nothing | TermArg => ComputationalData
1464        ) {TermList}
1465
1466
1467iASL: The _HID/_ADR detection and validation has been enhanced to search
1468under conditionals in order to allow these objects to be conditionally
1469created at runtime.
1470
1471iASL: Fixed several issues with the constant folding feature. The
1472improvement allows better detection and resolution of statements that can
1473be folded at compile time. ACPICA BZ 1266.
1474
1475iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
1476conversion to the ASL ElseIf operator where incorrect ASL code could be
1477generated.
1478
1479iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
1480sometimes an extra (and extraneous) set of parentheses were emitted for
1481some combinations of operators. Although this did not cause any problems
1482with recompilation of the disassembled code, it made the code more
1483difficult to read. David Box. ACPICA BZ 1231.
1484
1485iASL: Changed to ignore the unreferenced detection for predefined names
1486of resource descriptor elements, when the resource descriptor is
1487created/defined within a control method.
1488
1489iASL: Disassembler: Fix a possible fault with externally declared Buffer
1490objects.
1491
1492----------------------------------------
149318 March 2016. Summary of changes for version 20160318:
1494
14951) ACPICA kernel-resident subsystem:
1496
1497Added support for arbitrary bit lengths and bit offsets for registers
1498defined by the Generic Address Structure. Previously, only aligned bit
1499lengths of 8/16/32/64 were supported. This was sufficient for many years,
1500but recently some machines have been seen that require arbitrary bit-
1501level support. ACPICA BZ 1240. Lv Zheng.
1502
1503Fixed an issue where the \_SB._INI method sometimes must be evaluated
1504before any _REG methods are evaluated. Lv Zheng.
1505
1506Implemented several changes related to ACPI table support
1507(Headers/Disassembler/TableCompiler):
1508NFIT: For ACPI 6.1, updated to add some additional new fields and
1509constants.
1510FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
15116).
1512DMAR: Added new constants per the 10/2014 DMAR spec.
1513IORT: Added new subtable per the 10/2015 IORT spec.
1514HEST: For ACPI 6.1, added new constants and new subtable.
1515DBG2: Added new constants per the 12/2015 DBG2 spec.
1516FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
1517ACPICA BZ 1249.
1518ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
1519
1520Updated header support for the DMAR table to match the current version of
1521the related spec.
1522
1523Added extensions to the ASL Concatenate operator to allow any ACPI object
1524to be passed as an operand. Any object other than Integer/String/Buffer
1525simply returns a string containing the object type. This extends the
1526usefulness of the Printf macros. Previously, Concatenate would abort the
1527control method if a non-data object was encountered.
1528
1529ACPICA source code: Deployed the C "const" keyword across the source code
1530where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
1531
1532Example Code and Data Size: These are the sizes for the OS-independent
1533acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1534debug version of the code includes the debug output trace mechanism and
1535has a much larger code and data size.
1536
1537  Current Release:
1538    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
1539    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
1540  Previous Release:
1541    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
1542    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
1543
1544
15452) iASL Compiler/Disassembler and Tools:
1546
1547iASL/Disassembler: Improved the heuristic used to determine the number of
1548arguments for an externally defined control method (a method in another
1549table). Although this is an improvement, there is no deterministic way to
1550"guess" the number of method arguments. Only the ACPI 6.0 External opcode
1551will completely solve this problem as it is deployed (automatically) in
1552newer BIOS code.
1553
1554iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
1555statements that could cause errors when the disassembled file is
1556compiled. ACPICA BZ 1243. David Box.
1557
1558iASL: Fixed a regression caused by the merger of the two versions of the
1559local strtoul64. Because of a dependency on a global variable, strtoul64
1560could return an error for integers greater than a 32-bit value. ACPICA BZ
15611260.
1562
1563iASL: Fixed a regression where a fault could occur for an ASL Return
1564statement if it invokes a control method that is not resolved. ACPICA BZ
15651264.
1566
1567AcpiXtract: Improved input file validation: detection of binary files and
1568non-acpidump text files.
1569
1570----------------------------------------
157112 February 2016. Summary of changes for version 20160212:
1572
15731) ACPICA kernel-resident subsystem:
1574
1575Implemented full support for the ACPI 6.1 specification (released in
1576January). This version of the specification is available at:
1577http://www.uefi.org/specifications
1578
1579Only a relatively small number of changes were required in ACPICA to
1580support ACPI 6.1, in these areas:
1581- New predefined names
1582- New _HID values
1583- A new subtable for HEST
1584- A few other header changes for new values
1585
1586Ensure \_SB_._INI is executed before any _REG methods are executed. There
1587appears to be existing BIOS code that relies on this behavior. Lv Zheng.
1588
1589Reverted a change made in version 20151218 which enabled method
1590invocations to be targets of various ASL operators (SuperName and Target
1591grammar elements). While the new behavior is supported by the ACPI
1592specification, other AML interpreters do not support this behavior and
1593never will. The ACPI specification will be updated for ACPI 6.2 to remove
1594this support. Therefore, the change was reverted to the original ACPICA
1595behavior.
1596
1597ACPICA now supports the GCC 6 compiler.
1598
1599Current Release: (Note: build changes increased sizes)
1600    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
1601    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
1602Previous Release:
1603    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
1604    Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
1605
1606
16072) iASL Compiler/Disassembler and Tools:
1608
1609Completed full support for the ACPI 6.0 External() AML opcode. The
1610compiler emits an external AML opcode for each ASL External statement.
1611This opcode is used by the disassembler to assist with the disassembly of
1612external control methods by specifying the required number of arguments
1613for the method. AML interpreters do not use this opcode. To ensure that
1614interpreters do not even see the opcode, a block of one or more external
1615opcodes is surrounded by an "If(0)" construct. As this feature becomes
1616commonly deployed in BIOS code, the ability of disassemblers to correctly
1617disassemble AML code will be greatly improved. David Box.
1618
1619iASL: Implemented support for an optional cross-reference output file.
1620The -lx option will create a the cross-reference file with the suffix
1621"xrf". Three different types of cross-reference are created in this file:
1622- List of object references made from within each control method
1623- Invocation (caller) list for each user-defined control method
1624- List of references to each non-method object in the namespace
1625
1626iASL: Method invocations as ASL Target operands are now disallowed and
1627flagged as errors in preparation for ACPI 6.2 (see the description of the
1628problem above).
1629
1630----------------------------------------
16318 January 2016. Summary of changes for version 20160108:
1632
16331) ACPICA kernel-resident subsystem:
1634
1635Updated all ACPICA copyrights and signons to 2016: Added the 2016
1636copyright to all source code module headers and utility/tool signons.
1637This includes the standard Linux dual-license header. This affects
1638virtually every file in the ACPICA core subsystem, iASL compiler, all
1639ACPICA utilities, and the ACPICA test suite.
1640
1641Fixed a regression introduced in version 20151218 concerning the
1642execution of so-called module-level ASL/AML code. Namespace objects
1643created under a module-level If() construct were not properly/fully
1644entered into the namespace and could cause an interpreter fault when
1645accessed.
1646
1647Example Code and Data Size: These are the sizes for the OS-independent
1648acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1649debug version of the code includes the debug output trace mechanism and
1650has a much larger code and data size.
1651
1652Current Release:
1653    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
1654    Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
1655  Previous Release:
1656    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
1657    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
1658
1659
16602) iASL Compiler/Disassembler and Tools:
1661
1662Fixed a problem with the compilation of the GpioIo and GpioInt resource
1663descriptors. The _PIN field name was incorrectly defined to be an array
1664of 32-bit values, but the _PIN values are in fact 16 bits each. This
1665would cause incorrect bit width warnings when using Word (16-bit) fields
1666to access the descriptors.
1667
1668
1669----------------------------------------
167018 December 2015. Summary of changes for version 20151218:
1671
16721) ACPICA kernel-resident subsystem:
1673
1674Implemented per-AML-table execution of "module-level code" as individual
1675ACPI tables are loaded into the namespace during ACPICA initialization.
1676In other words, any module-level code within an AML table is executed
1677immediately after the table is loaded, instead of batched and executed
1678after all of the tables have been loaded. This provides compatibility
1679with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
1680David Box.
1681
1682To fully support the feature above, the default operation region handlers
1683for the SystemMemory, SystemIO, and PCI_Config address spaces are now
1684installed before any ACPI tables are loaded. This enables module-level
1685code to access these address spaces during the table load and module-
1686level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
1687Box.
1688
1689Implemented several changes to the internal _REG support in conjunction
1690with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
1691utilities for the changes above. Although these tools were changed, host
1692operating systems that simply use the default handlers for SystemMemory,
1693SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
1694
1695For example, in the code below, DEV1 is conditionally added to the
1696namespace by the DSDT via module-level code that accesses an operation
1697region. The SSDT references DEV1 via the Scope operator. DEV1 must be
1698created immediately after the DSDT is loaded in order for the SSDT to
1699successfully reference DEV1. Previously, this code would cause an
1700AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
1701fully supported by ACPICA.
1702
1703    DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
1704    {
1705        OperationRegion (OPR1, SystemMemory, 0x400, 32)
1706        Field (OPR1, AnyAcc, NoLock, Preserve)
1707        {
1708            FLD1, 1
1709        }
1710        If (FLD1)
1711        {
1712            Device (\DEV1)
1713            {
1714            }
1715        }
1716    }
1717    DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
1718    {
1719        External (\DEV1, DeviceObj)
1720        Scope (\DEV1)
1721        {
1722        }
1723    }
1724
1725Fixed an AML interpreter problem where control method invocations were
1726not handled correctly when the invocation was itself a SuperName argument
1727to another ASL operator. In these cases, the method was not invoked.
1728ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
1729argument:
1730    Store
1731    Acquire, Wait
1732    CondRefOf, RefOf
1733    Decrement, Increment
1734    Load, Unload
1735    Notify
1736    Signal, Release, Reset
1737    SizeOf
1738
1739Implemented automatic String-to-ObjectReference conversion support for
1740packages returned by predefined names (such as _DEP). A common BIOS error
1741is to add double quotes around an ObjectReference namepath, which turns
1742the reference into an unexpected string object. This support detects the
1743problem and corrects it before the package is returned to the caller that
1744invoked the method. Lv Zheng.
1745
1746Implemented extensions to the Concatenate operator. Concatenate now
1747accepts any type of object, it is not restricted to simply
1748Integer/String/Buffer. For objects other than these 3 basic data types,
1749the argument is treated as a string containing the name of the object
1750type. This expands the utility of Concatenate and the Printf/Fprintf
1751macros. ACPICA BZ 1222.
1752
1753Cleaned up the output of the ASL Debug object. The timer() value is now
1754optional and no longer emitted by default. Also, the basic data types of
1755Integer/String/Buffer are simply emitted as their values, without a data
1756type string -- since the data type is obvious from the output. ACPICA BZ
17571221.
1758
1759Example Code and Data Size: These are the sizes for the OS-independent
1760acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1761debug version of the code includes the debug output trace mechanism and
1762has a much larger code and data size.
1763
1764  Current Release:
1765    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
1766    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
1767  Previous Release:
1768    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
1769    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
1770
1771
17722) iASL Compiler/Disassembler and Tools:
1773
1774iASL: Fixed some issues with the ASL Include() operator. This operator
1775was incorrectly defined in the iASL parser rules, causing a new scope to
1776be opened for the code within the include file. This could lead to
1777several issues, including allowing ASL code that is technically illegal
1778and not supported by AML interpreters. Note, this does not affect the
1779related #include preprocessor operator. ACPICA BZ 1212.
1780
1781iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
1782operator is essentially an ASL macro since there is no AML opcode
1783associated with it. The code emitted by the iASL compiler for ElseIf is
1784an Else opcode followed immediately by an If opcode. The disassembler
1785will now emit an ElseIf if it finds an Else immediately followed by an
1786If. This simplifies the decoded ASL, especially for deeply nested
1787If..Else and large Switch constructs. Thus, the disassembled code more
1788closely follows the original source ASL. ACPICA BZ 1211. Example:
1789
1790    Old disassembly:
1791        Else
1792        {
1793            If (Arg0 == 0x02)
1794            {
1795                Local0 = 0x05
1796            }
1797        }
1798
1799    New disassembly:
1800        ElseIf (Arg0 == 0x02)
1801        {
1802            Local0 = 0x05
1803        }
1804
1805AcpiExec: Added support for the new module level code behavior and the
1806early region installation. This required a small change to the
1807initialization, since AcpiExec must install its own operation region
1808handlers.
1809
1810AcpiExec: Added support to make the debug object timer optional. Default
1811is timer disabled. This cleans up the debug object output -- the timer
1812data is rarely used.
1813
1814AcpiExec: Multiple ACPI tables are now loaded in the order that they
1815appear on the command line. This can be important when there are
1816interdependencies/references between the tables.
1817
1818iASL/Templates. Add support to generate template files with multiple
1819SSDTs within a single output file. Also added ommand line support to
1820specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
18211223, 1225.
1822
1823
1824----------------------------------------
182524 November 2015. Summary of changes for version 20151124:
1826
18271) ACPICA kernel-resident subsystem:
1828
1829Fixed a possible regression for a previous update to FADT handling. The
1830FADT no longer has a fixed table ID, causing some issues with code that
1831was hardwired to a specific ID. Lv Zheng.
1832
1833Fixed a problem where the method auto-serialization could interfere with
1834the current SyncLevel. This change makes the auto-serialization support
1835transparent to the SyncLevel support and management.
1836
1837Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
1838interface is intended for early access to the namespace during the
1839initial namespace device discovery walk. The _SUB method has been seen to
1840access operation regions in some cases, causing errors because the
1841operation regions are not fully initialized.
1842
1843AML Debugger: Fixed some issues with the terminate/quit/exit commands
1844that can cause faults. Lv Zheng.
1845
1846AML Debugger: Add thread ID support so that single-step mode only applies
1847to the AML Debugger thread. This prevents runtime errors within some
1848kernels. Lv Zheng.
1849
1850Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
1851methods that are invoked by this interface are optional, removed warnings
1852emitted for the case where one or more of these methods do not exist.
1853ACPICA BZ 1208, original change by Prarit Bhargava.
1854
1855Made a major pass through the entire ACPICA source code base to
1856standardize formatting that has diverged a bit over time. There are no
1857functional changes, but this will of course cause quite a few code
1858differences from the previous ACPICA release.
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
1865  Current Release:
1866    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
1867    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
1868  Previous Release:
1869    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
1870    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
1871
1872
18732) iASL Compiler/Disassembler and Tools:
1874
1875iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
1876definition blocks within a single ASL file and the resulting AML file.
1877Support for this type of file was also added to the various tools that
1878use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
1879example code below shows two definition blocks within the same file:
1880
1881    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
18820x12345678)
1883    {
1884    }
1885    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
1886    {
1887    }
1888
1889iASL: Enhanced typechecking for the Name() operator. All expressions for
1890the value of the named object must be reduced/folded to a single constant
1891at compile time, as per the ACPI specification (the AML definition of
1892Name()).
1893
1894iASL: Fixed some code indentation issues for the -ic and -ia options (C
1895and assembly headers). Now all emitted code correctly begins in column 1.
1896
1897iASL: Added an error message for an attempt to open a Scope() on an
1898object defined in an SSDT. The DSDT is always loaded into the namespace
1899first, so any attempt to open a Scope on an SSDT object will fail at
1900runtime.
1901
1902
1903----------------------------------------
190430 September 2015. Summary of changes for version 20150930:
1905
19061) ACPICA kernel-resident subsystem:
1907
1908Debugger: Implemented several changes and bug fixes to assist support for
1909the in-kernel version of the AML debugger. Lv Zheng.
1910- Fix the "predefined" command for in-kernel debugger.
1911- Do not enter debug command loop for the help and version commands.
1912- Disallow "execute" command during execution/single-step of a method.
1913
1914Interpreter: Updated runtime typechecking for all operators that have
1915target operands. The operand is resolved and validated that it is legal.
1916For example, the target cannot be a non-data object such as a Device,
1917Mutex, ThermalZone, etc., as per the ACPI specification.
1918
1919Debugger: Fixed the double-mutex user I/O handshake to work when local
1920deadlock detection is enabled.
1921
1922Debugger: limited display of method locals and arguments (LocalX and
1923ArgX) to only those that have actually been initialized. This prevents
1924lines of extraneous output.
1925
1926Updated the definition of the NFIT table to correct the bit polarity of
1927one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
1928
1929Example Code and Data Size: These are the sizes for the OS-independent
1930acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1931debug version of the code includes the debug output trace mechanism and
1932has a much larger code and data size.
1933
1934  Current Release:
1935    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
1936    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
1937  Previous Release:
1938    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
1939    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
1940
1941
19422) iASL Compiler/Disassembler and Tools:
1943
1944iASL: Improved the compile-time typechecking for operands of many of the
1945ASL operators:
1946
1947-- Added an option to disable compiler operand/operator typechecking (-
1948ot).
1949
1950-- For the following operators, the TermArg operands are now validated
1951when possible to be Integer data objects: BankField, OperationRegion,
1952DataTableRegion, Buffer, and Package.
1953
1954-- Store (Source, Target): Both the source and target operands are
1955resolved and checked that the operands are both legal. For example,
1956neither operand can be a non-data object such as a Device, Mutex,
1957ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
1958operator can be used to store an object to any type of target object.
1959
1960-- Store (Source, Target): If the source is a Package object, the target
1961must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
1962is a Package, the source must also be a Package.
1963
1964-- Store (Source, Target): A warning is issued if the source and target
1965resolve to the identical named object.
1966
1967-- Store (Source, <method invocation>): An error is generated for the
1968target method invocation, as this construct is not supported by the AML
1969interpreter.
1970
1971-- For all ASL math and logic operators, the target operand must be a
1972data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
1973includes the function return value also.
1974
1975-- External declarations are also included in the typechecking where
1976possible. External objects defined using the UnknownObj keyword cannot be
1977typechecked, however.
1978
1979iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
1980operator:
1981- Legacy code: Index(PKG1, 3)
1982- New ASL+ code: PKG1[3]
1983This completes the ACPI 6.0 ASL+ support as it was the only operator not
1984supported.
1985
1986iASL: Fixed the file suffix for the preprocessor output file (.i). Two
1987spaces were inadvertently appended to the filename, causing file access
1988and deletion problems on some systems.
1989
1990ASL Test Suite (ASLTS): Updated the master makefile to generate all
1991possible compiler output files when building the test suite -- thus
1992exercising these features of the compiler. These files are automatically
1993deleted when the test suite exits.
1994
1995
1996----------------------------------------
199718 August 2015. Summary of changes for version 20150818:
1998
19991) ACPICA kernel-resident subsystem:
2000
2001Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
2002Zheng. ACPICA BZ 1186.
2003
2004Completed development to ensure that the ACPICA Disassembler and Debugger
2005are fully standalone components of ACPICA. Removed cross-component
2006dependences. Lv Zheng.
2007
2008The max-number-of-AML-loops is now runtime configurable (previously was
2009compile-time only). This is essentially a loop timeout to force-abort
2010infinite AML loops. ACPCIA BZ 1192.
2011
2012Debugger: Cleanup output to dump ACPI names and namepaths without any
2013trailing underscores. Lv Zheng. ACPICA BZ 1135.
2014
2015Removed unnecessary conditional compilations across the Debugger and
2016Disassembler components where entire modules could be left uncompiled.
2017
2018The aapits test is deprecated and has been removed from the ACPICA git
2019tree. The test has never been completed and has not been maintained, thus
2020becoming rather useless. ACPICA BZ 1015, 794.
2021
2022A batch of small changes to close bugzilla and other reports:
2023- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
2024- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
2025- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
2026- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
2027Moore.
2028- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
2029ACPICA BZ 1184.
2030- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
2031operators.
2032- Debugger: Split debugger initialization/termination interfaces. Lv
2033Zheng.
2034- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
2035identification.
2036- AcpiExec: Add debug message during _REG method phase during table
2037load/init.
2038- AcpiNames: Fix a regression where some output was missing and no longer
2039emitted.
2040- Debugger: General cleanup and simplification. Lv Zheng.
2041- Disassembler: Cleanup use of several global option variables. Lv Zheng.
2042
2043Example Code and Data Size: These are the sizes for the OS-independent
2044acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2045debug version of the code includes the debug output trace mechanism and
2046has a much larger code and data size.
2047
2048  Current Release:
2049    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
2050    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
2051  Previous Release:
2052    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
2053    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
2054
2055
20562) iASL Compiler/Disassembler and Tools:
2057
2058AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
2059were not handled properly and caused load errors. Now, properly invoke
2060and use the ACPICA auto-reallocate mechanism for ACPI table data
2061structures. ACPICA BZ 1188
2062
2063AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
2064BZ 1190.
2065
2066AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
2067AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
2068executed during initialization. ACPICA BZ 1187, 1189.
2069
2070iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
2071that corresponds to each disassembled ASL statement, to simplify
2072debugging. ACPICA BZ 1191.
2073
2074Debugger: Add option to the "objects" command to display a summary of the
2075current namespace objects (Object type and count). This is displayed if
2076the command is entered with no arguments.
2077
2078AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
2079
2080
2081----------------------------------------
208217 July 2015. Summary of changes for version 20150717:
2083
20841) ACPICA kernel-resident subsystem:
2085
2086Improved the partitioning between the Debugger and Disassembler
2087components. This allows the Debugger to be used standalone within kernel
2088code without the Disassembler (which is used for single stepping also).
2089This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
2090
2091Debugger: Implemented a new command to trace the execution of control
2092methods (Trace). This is especially useful for the in-kernel version of
2093the debugger when file I/O may not be available for method trace output.
2094See the ACPICA reference for more information. Lv Zheng.
2095
2096Moved all C library prototypes (used for the local versions of these
2097functions when requested) to a new header, acclib.h
2098Cleaned up the use of non-ANSI C library functions. These functions are
2099implemented locally in ACPICA. Moved all such functions to a common
2100source file, utnonansi.c
2101
2102Debugger: Fixed a problem with the "!!" command (get last command
2103executed) where the debugger could enter an infinite loop and eventually
2104crash.
2105
2106Removed the use of local macros that were used for some of the standard C
2107library functions to automatically cast input parameters. This mostly
2108affected the is* functions where the input parameter is defined to be an
2109int. This required a few modifications to the main ACPICA source code to
2110provide casting for these functions and eliminate possible compiler
2111warnings for these parameters.
2112
2113Across the source code, added additional status/error checking to resolve
2114issues discovered by static source code analysis tools such as Coverity.
2115
2116Example Code and Data Size: These are the sizes for the OS-independent
2117acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2118debug version of the code includes the debug output trace mechanism and
2119has a much larger code and data size.
2120
2121  Current Release:
2122    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
2123    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
2124  Previous Release:
2125    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
2126    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
2127
2128
21292) iASL Compiler/Disassembler and Tools:
2130
2131iASL: Fixed a regression where the device map file feature no longer
2132worked properly when used in conjunction with the disassembler. It only
2133worked properly with the compiler itself.
2134
2135iASL: Implemented a new warning for method LocalX variables that are set
2136but never used (similar to a C compiler such as gcc). This also applies
2137to ArgX variables that are not defined by the parent method, and are
2138instead (legally) used as local variables.
2139
2140iASL/Preprocessor: Finished the pass-through of line numbers from the
2141preprocessor to the compiler. This ensures that compiler errors/warnings
2142have the correct original line numbers and filenames, regardless of any
2143#include files.
2144
2145iASL/Preprocessor: Fixed a couple of issues with comment handling and the
2146pass-through of comments to the preprocessor output file (which becomes
2147the compiler input file). Also fixed a problem with // comments that
2148appear after a math expression.
2149
2150iASL: Added support for the TCPA server table to the table compiler and
2151template generator. (The client table was already previously supported)
2152
2153iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
2154identify the iASL compiler.
2155
2156Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
2157multiple times. The new names are ACPI_SIGN_NEGATIVE and
2158ACPI_SIGN_POSITIVE.
2159
2160AcpiHelp: Update to expand help messages for the iASL preprocessor
2161directives.
2162
2163
2164----------------------------------------
216519 June 2015. Summary of changes for version 20150619:
2166
2167Two regressions in version 20150616 have been addressed:
2168
2169Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
2170etc.) This update changes ACPICA to only use the standard headers for
2171functions, or the prototypes for the local versions of the C library
2172functions. Across the source code, this required some additional casts
2173for some Clib invocations for portability. Moved all local prototypes to
2174a new file, acclib.h
2175
2176Fixes several problems with recent changes to the handling of the FACS
2177table that could cause some systems not to boot.
2178
2179
2180----------------------------------------
218116 June 2015. Summary of changes for version 20150616:
2182
2183
21841) ACPICA kernel-resident subsystem:
2185
2186Across the entire ACPICA source code base, the various macros for the C
2187library functions (such as ACPI_STRLEN, etc.) have been removed and
2188replaced by the standard C library names (strlen, etc.) The original
2189purpose for these macros is no longer applicable. This simplification
2190reduces the number of macros used in the ACPICA source code
2191significantly, improving readability and maintainability.
2192
2193Implemented support for a new ACPI table, the OSDT. This table, the
2194"override" SDT, can be loaded directly by the host OS at boot time. It
2195enables the replacement of existing namespace objects that were installed
2196via the DSDT and/or SSDTs. The primary purpose for this is to replace
2197buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
2198for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
2199Moore.
2200
2201Added support for systems with (improperly) two FACS tables -- a "32-bit"
2202table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
2203X field). This change will support both automatically. There continues to
2204be systems found with this issue. This support requires a change to the
2205AcpiSetFirmwareWakingVector interface. Also, a public global variable has
2206been added to allow the host to select which FACS is desired
2207(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
2208details Lv Zheng.
2209
2210Added a new feature to allow for systems that do not contain an FACS.
2211Although this is already supported on hardware-reduced platforms, the
2212feature has been extended for all platforms. The reasoning is that we do
2213not want to abort the entire ACPICA initialization just because the
2214system is seriously buggy and has no FACS.
2215
2216Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
2217not correctly transcribed from the ACPI specification in ACPICA version
221820150515.
2219
2220Implemented support for the _CLS object in the AcpiGetObjectInfo external
2221interface.
2222
2223Updated the definitions of the TCPA and TPM2 ACPI tables to the more
2224recent TCG ACPI Specification, December 14, 2014. Table disassembler and
2225compiler also updated. Note: The TCPA "server" table is not supported by
2226the disassembler/table-compiler at this time.
2227
2228ACPI 6.0: Added definitions for the new GIC version field in the MADT.
2229
2230Example Code and Data Size: These are the sizes for the OS-independent
2231acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2232debug version of the code includes the debug output trace mechanism and
2233has a much larger code and data size.
2234
2235  Current Release:
2236    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
2237    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
2238  Previous Release:
2239    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
2240    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
2241
2242
22432) iASL Compiler/Disassembler and Tools:
2244
2245Disassembler: Fixed a problem with the new symbolic operator disassembler
2246where incorrect ASL code could be emitted in some cases for the "non-
2247commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
2248ShiftRight. The actual problem cases seem to be rather unusual in common
2249ASL code, however. David Box.
2250
2251Modified the linux version of acpidump to obtain ACPI tables from not
2252just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
2253Zheng.
2254
2255iASL: Fixed a problem where the user preprocessor output file (.i)
2256contained extra data that was not expected. The compiler was using this
2257file as a temporary file and passed through #line directives in order to
2258keep compiler error messages in sync with the input file and line number
2259across multiple include files. The (.i) is no longer a temporary file as
2260the compiler uses a new, different file for the original purpose.
2261
2262iASL: Fixed a problem where comments within the original ASL source code
2263file were not passed through to the preprocessor output file, nor any
2264listing files.
2265
2266iASL: Fixed some issues for the handling of the "#include" preprocessor
2267directive and the similar (but not the same) "Include" ASL operator.
2268
2269iASL: Add support for the new OSDT in both the disassembler and compiler.
2270
2271iASL: Fixed a problem with the constant folding support where a Buffer
2272object could be incorrectly generated (incorrectly formed) during a
2273conversion to a Store() operator.
2274
2275AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
2276description text for the _REV predefined name. _REV now permanently
2277returns 2, as per the ACPI 6.0 specification.
2278
2279Debugger: Enhanced the output of the Debug ASL object for references
2280produced by the Index operator. For Buffers and strings, only output the
2281actual byte pointed to by the index. For packages, only print the single
2282package element decoded by the index. Previously, the entire
2283buffer/string/package was emitted.
2284
2285iASL/Table-compiler: Fixed a regression where the "generic" data types
2286were no longer recognized, causing errors.
2287
2288
2289----------------------------------------
229015 May 2015. Summary of changes for version 20150515:
2291
2292This release implements most of ACPI 6.0 as described below.
2293
22941) ACPICA kernel-resident subsystem:
2295
2296Implemented runtime argument checking and return value checking for all
2297new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
2298_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
2299
2300Example Code and Data Size: These are the sizes for the OS-independent
2301acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2302debug version of the code includes the debug output trace mechanism and
2303has a much larger code and data size.
2304
2305  Current Release:
2306    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
2307    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
2308  Previous Release:
2309    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
2310    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
2311
2312
23132) iASL Compiler/Disassembler and Tools:
2314
2315iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
2316names (argument count validation and return value typechecking.)
2317
2318iASL disassembler and table compiler: implemented support for all new
2319ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
2320
2321iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
2322tables: FADT, MADT.
2323
2324iASL preprocessor: Added a new directive to enable inclusion of binary
2325blobs into ASL code. The new directive is #includebuffer. It takes a
2326binary file as input and emits a named ascii buffer object into the ASL
2327code.
2328
2329AcpiHelp: Added support for all new ACPI 6.0 predefined names.
2330
2331AcpiHelp: Added a new option, -d, to display all iASL preprocessor
2332directives.
2333
2334AcpiHelp: Added a new option, -t, to display all known/supported ACPI
2335tables.
2336
2337
2338----------------------------------------
233910 April 2015. Summary of changes for version 20150410:
2340
2341Reverted a change introduced in version 20150408 that caused
2342a regression in the disassembler where incorrect operator
2343symbols could be emitted.
2344
2345
2346----------------------------------------
234708 April 2015. Summary of changes for version 20150408:
2348
2349
23501) ACPICA kernel-resident subsystem:
2351
2352Permanently set the return value for the _REV predefined name. It now
2353returns 2 (was 5). This matches other ACPI implementations. _REV will be
2354deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
2355for ACPI 2.0 and later. It should never be used to differentiate or
2356identify operating systems.
2357
2358Added the "Windows 2015" string to the _OSI support. ACPICA will now
2359return TRUE to a query with this string.
2360
2361Fixed several issues with the local version of the printf function.
2362
2363Added the C99 compiler option (-std=c99) to the Unix makefiles.
2364
2365  Current Release:
2366    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
2367    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
2368  Previous Release:
2369    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
2370    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
2371
2372
23732) iASL Compiler/Disassembler and Tools:
2374
2375iASL: Implemented an enhancement to the constant folding feature to
2376transform the parse tree to a simple Store operation whenever possible:
2377    Add (2, 3, X) ==> is converted to: Store (5, X)
2378    X = 2 + 3     ==> is converted to: Store (5, X)
2379
2380Updated support for the SLIC table (Software Licensing Description Table)
2381in both the Data Table compiler and the disassembler. The SLIC table
2382support now conforms to "Microsoft Software Licensing Tables (SLIC and
2383MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
2384following the ACPI header is now defined to be "Proprietary Data", and as
2385such, can only be entered or displayed as a hex data block.
2386
2387Implemented full support for the MSDM table as described in the document
2388above. Note: The format of MSDM is similar to SLIC. Any MSDM data
2389following the ACPI header is defined to be "Proprietary Data", and can
2390only be entered or displayed as a hex data block.
2391
2392Implemented the -Pn option for the iASL Table Compiler (was only
2393implemented for the ASL compiler). This option disables the iASL
2394preprocessor.
2395
2396Disassembler: For disassembly of Data Tables, added a comment field
2397around the Ascii equivalent data that is emitted as part of the "Raw
2398Table Data" block. This prevents the iASL Preprocessor from possible
2399confusion if/when the table is compiled.
2400
2401Disassembler: Added an option (-df) to force the disassembler to assume
2402that the table being disassembled contains valid AML. This feature is
2403useful for disassembling AML files that contain ACPI signatures other
2404than DSDT or SSDT (such as OEMx or other signatures).
2405
2406Changes for the EFI version of the tools:
24071) Fixed a build error/issue
24082) Fixed a cast warning
2409
2410iASL: Fixed a path issue with the __FILE__ operator by making the
2411directory prefix optional within the internal SplitInputFilename
2412function.
2413
2414Debugger: Removed some unused global variables.
2415
2416Tests: Updated the makefile for proper generation of the AAPITS suite.
2417
2418
2419----------------------------------------
242004 February 2015. Summary of changes for version 20150204:
2421
2422ACPICA kernel-resident subsystem:
2423
2424Updated all ACPICA copyrights and signons to 2014. Added the 2014
2425copyright to all module headers and signons, including the standard Linux
2426header. This affects virtually every file in the ACPICA core subsystem,
2427iASL compiler, all ACPICA utilities, and the test suites.
2428
2429Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
2430A raw gpe handling mechanism was created to allow better handling of GPE
2431storms that aren't easily managed by the normal handler. The raw handler
2432allows disabling/renabling of the the GPE so that interrupt storms can be
2433avoided in cases where events cannot be timely serviced. In this
2434scenario, handlers should use the AcpiSetGpe() API to disable/enable the
2435GPE. This API will leave the reference counts undisturbed, thereby
2436preventing unintentional clearing of the GPE when the intent in only to
2437temporarily disable it. Raw handlers allow enabling and disabling of a
2438GPE by removing GPE register locking. As such, raw handlers much provide
2439their own locks while using GPE API's to protect access to GPE data
2440structures.
2441Lv Zheng
2442
2443Events: Always modify GPE registers under the GPE lock.
2444Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
2445values. Reported as bug by joe.liu@apple.com.
2446
2447Unix makefiles: Separate option to disable optimizations and
2448_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
2449NOOPT disable option and creates a separate flag (NOFORTIFY) for this
2450purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
2451errors when building ACPICA. This allows disabling the option without
2452also having to disable optimazations.
2453David Box
2454
2455  Current Release:
2456    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2457    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
2458
2459--
2460--------------------------------------
246107 November 2014. Summary of changes for version 20141107:
2462
2463This release is available at https://acpica.org/downloads
2464
2465This release introduces and implements language extensions to ASL that
2466provide support for symbolic ("C-style") operators and expressions. These
2467language extensions are known collectively as ASL+.
2468
2469
24701) iASL Compiler/Disassembler and Tools:
2471
2472Disassembler: Fixed a problem with disassembly of the UartSerialBus
2473macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
2474Box.
2475
2476Disassembler: Fixed the Unicode macro support to add escape sequences.
2477All non-printable ASCII values are emitted as escape sequences, as well
2478as the standard escapes for quote and backslash. Ensures that the
2479disassembled macro can be correctly recompiled.
2480
2481iASL: Added Printf/Fprintf macros for formatted output. These macros are
2482translated to existing AML Concatenate and Store operations. Printf
2483writes to the ASL Debug object. Fprintf allows the specification of an
2484ASL name as the target. Only a single format specifier is required, %o,
2485since the AML interpreter dynamically converts objects to the required
2486type. David E. Box.
2487
2488    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
2489                 (Concatenate (Concatenate (Concatenate ("", Arg0),
2490                 ": Unexpected value for "), Arg1), ", "), Arg2),
2491                 " at line "), Arg3), Debug)
2492
2493    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
2494                 Arg0, Arg1, Arg2, Arg3)
2495
2496    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
2497                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
2498
2499    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
2500
2501iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
2502ASL parse tree before the AML code is generated. This allows blocks of
2503ASL code to be removed in order to help locate and identify problem
2504devices and/or code. David E. Box.
2505
2506AcpiExec: Added support (-fi) for an optional namespace object
2507initialization file. This file specifies initial values for namespace
2508objects as necessary for debugging and testing different ASL code paths
2509that may be taken as a result of BIOS options.
2510
2511
25122) Overview of symbolic operator support for ASL (ASL+)
2513-------------------------------------------------------
2514
2515As an extension to the ASL language, iASL implements support for symbolic
2516(C-style) operators for math and logical expressions. This can greatly
2517simplify ASL code as well as improve both readability and
2518maintainability. These language extensions can exist concurrently with
2519all legacy ASL code and expressions.
2520
2521The symbolic extensions are 100% compatible with existing AML
2522interpreters, since no new AML opcodes are created. To implement the
2523extensions, the iASL compiler transforms the symbolic expressions into
2524the legacy ASL/AML equivalents at compile time.
2525
2526Full symbolic expressions are supported, along with the standard C
2527precedence and associativity rules.
2528
2529Full disassembler support for the symbolic expressions is provided, and
2530creates an automatic migration path for existing ASL code to ASL+ code
2531via the disassembly process. By default, the disassembler now emits ASL+
2532code with symbolic expressions. An option (-dl) is provided to force the
2533disassembler to emit legacy ASL code if desired.
2534
2535Below is the complete list of the currently supported symbolic operators
2536with examples. See the iASL User Guide for additional information.
2537
2538
2539ASL+ Syntax      Legacy ASL Equivalent
2540-----------      ---------------------
2541
2542    // Math operators
2543
2544Z = X + Y        Add (X, Y, Z)
2545Z = X - Y        Subtract (X, Y, Z)
2546Z = X * Y        Multiply (X, Y, Z)
2547Z = X / Y        Divide (X, Y, , Z)
2548Z = X % Y        Mod (X, Y, Z)
2549Z = X << Y       ShiftLeft (X, Y, Z)
2550Z = X >> Y       ShiftRight (X, Y, Z)
2551Z = X & Y        And (X, Y, Z)
2552Z = X | Y        Or (X, Y, Z)
2553Z = X ^ Y        Xor (X, Y, Z)
2554Z = ~X           Not (X, Z)
2555X++              Increment (X)
2556X--              Decrement (X)
2557
2558    // Logical operators
2559
2560(X == Y)         LEqual (X, Y)
2561(X != Y)         LNotEqual (X, Y)
2562(X < Y)          LLess (X, Y)
2563(X > Y)          LGreater (X, Y)
2564(X <= Y)         LLessEqual (X, Y)
2565(X >= Y)         LGreaterEqual (X, Y)
2566(X && Y)         LAnd (X, Y)
2567(X || Y)         LOr (X, Y)
2568(!X)             LNot (X)
2569
2570    // Assignment and compound assignment operations
2571
2572X = Y           Store (Y, X)
2573X += Y          Add (X, Y, X)
2574X -= Y          Subtract (X, Y, X)
2575X *= Y          Multiply (X, Y, X)
2576X /= Y          Divide (X, Y, , X)
2577X %= Y          Mod (X, Y, X)
2578X <<= Y         ShiftLeft (X, Y, X)
2579X >>= Y         ShiftRight (X, Y, X)
2580X &= Y          And (X, Y, X)
2581X |= Y          Or (X, Y, X)
2582X ^= Y          Xor (X, Y, X)
2583
2584
25853) ASL+ Examples:
2586-----------------
2587
2588Legacy ASL:
2589        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
2590            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
25910x03FB),
2592            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
2593        {
2594            And (MEMB, 0xFFFFFFF0, SRMB)
2595            Store (MEMB, Local2)
2596            Store (PDBM, Local1)
2597            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
2598            Store (SRMB, MEMB)
2599            Or (PDBM, 0x02, PDBM)
2600        }
2601
2602ASL+ version:
2603        If (((R510 & 0x03FB) == 0x02E0) ||
2604            ((R520 & 0x03FB) == 0x02E0) ||
2605            ((R530 & 0x03FB) == 0x02E0) ||
2606            ((R540 & 0x03FB) == 0x02E0))
2607        {
2608            SRMB = (MEMB & 0xFFFFFFF0)
2609            Local2 = MEMB
2610            Local1 = PDBM
2611            PDBM &= 0xFFFFFFFFFFFFFFF9
2612            MEMB = SRMB
2613            PDBM |= 0x02
2614        }
2615
2616Legacy ASL:
2617        Store (0x1234, Local1)
2618        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
2619        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
2620        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
2621        Store (Index (PKG1, 0x03), Local6)
2622        Store (Add (Local3, Local2), Debug)
2623        Add (Local1, 0x0F, Local2)
2624        Add (Local1, Multiply (Local2, Local3), Local2)
2625        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
2626
2627ASL+ version:
2628        Local1 = 0x1234
2629        Local3 = (((Local1 + TEST) + 0x20) * Local2)
2630        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
2631        Local3 = (Local1 + (TEST + (0x20 * Local2)))
2632        Local6 = Index (PKG1, 0x03)
2633        Debug = (Local3 + Local2)
2634        Local2 = (Local1 + 0x0F)
2635        Local2 = (Local1 + (Local2 * Local3))
2636        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
2637
2638
2639----------------------------------------
264026 September 2014. Summary of changes for version 20140926:
2641
26421) ACPICA kernel-resident subsystem:
2643
2644Updated the GPIO operation region handler interface (GeneralPurposeIo).
2645In order to support GPIO Connection objects with multiple pins, along
2646with the related Field objects, the following changes to the interface
2647have been made: The Address is now defined to be the offset in bits of
2648the field unit from the previous invocation of a Connection. It can be
2649viewed as a "Pin Number Index" into the connection resource descriptor.
2650The BitWidth is the exact bit width of the field. It is usually one bit,
2651but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
2652additional information and examples.
2653
2654GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
2655corresponding _Lxx/_Exx methods are disabled (they may have been enabled
2656by the firmware), so that they cannot fire until they are enabled via
2657AcpiUpdateAllGpes. Rafael J. Wysocki.
2658
2659Added a new return flag for the Event/GPE status interfaces --
2660AcpiGetEventStatus and AcpiGetGpeStatus. The new
2661ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
2662GPE currently has a handler associated with it, and can thus actually
2663affect the system. Lv Zheng.
2664
2665Example Code and Data Size: These are the sizes for the OS-independent
2666acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2667debug version of the code includes the debug output trace mechanism and
2668has a much larger code and data size.
2669
2670  Current Release:
2671    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
2672    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
2673  Previous Release:
2674    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
2675    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
2676
26772) iASL Compiler/Disassembler and Tools:
2678
2679iASL: Fixed a memory allocation/free regression introduced in 20140828
2680that could cause the compiler to crash. This was introduced inadvertently
2681during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
26821113.
2683
2684iASL: Removed two error messages that have been found to create false
2685positives, until they can be fixed and fully validated (ACPICA BZ 1112):
26861) Illegal forward reference within a method
26872) Illegal reference across two methods
2688
2689iASL: Implemented a new option (-lm) to create a hardware mapping file
2690that summarizes all GPIO, I2C, SPI, and UART connections. This option
2691works for both the compiler and disassembler. See the iASL compiler user
2692guide for additional information and examples (section 6.4.6).
2693
2694AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
2695version 2. This corrects the AE_BAD_HEADER exception seen on systems with
2696a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
2697
2698AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
2699unless STDIN is actually a terminal. Assists with batch-mode processing.
2700ACPICA BZ 1114.
2701
2702Disassembler/AcpiHelp: Added another large group of recognized _HID
2703values.
2704
2705
2706----------------------------------------
270728 August 2014. Summary of changes for version 20140828:
2708
27091) ACPICA kernel-resident subsystem:
2710
2711Fixed a problem related to the internal use of the Timer() operator where
2712a 64-bit divide could cause an attempted link to a double-precision math
2713library. This divide is not actually necessary, so the code was
2714restructured to eliminate it. Lv Zheng.
2715
2716ACPI 5.1: Added support for the runtime validation of the _DSD package
2717(similar to the iASL support).
2718
2719ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
2720SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
2721
2722Example Code and Data Size: These are the sizes for the OS-independent
2723acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2724debug version of the code includes the debug output trace mechanism and
2725has a much larger code and data size.
2726
2727  Current Release:
2728    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
2729    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
2730  Previous Release:
2731    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
2732    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
2733
27342) iASL Compiler/Disassembler and Tools:
2735
2736AcpiExec: Fixed a problem on unix systems where the original terminal
2737state was not always properly restored upon exit. Seen when using the -v
2738option. ACPICA BZ 1104.
2739
2740iASL: Fixed a problem with the validation of the ranges/length within the
2741Memory24 resource descriptor. There was a boundary condition when the
2742range was equal to the (length -1) caused by the fact that these values
2743are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
2744
2745Disassembler: Fixed a problem with the GpioInt descriptor interrupt
2746polarity
2747flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
2748is
2749now supported properly.
2750
2751ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
2752in the disassembler, data table compiler, and table template generator.
2753
2754iASL: Added a requirement for Device() objects that one of either a _HID
2755or _ADR must exist within the scope of a Device, as per the ACPI
2756specification. Remove a similar requirement that was incorrectly in place
2757for the _DSD object.
2758
2759iASL: Added error detection for illegal named references within control
2760methods that would cause runtime failures. Now trapped as errors are: 1)
2761References to objects within a non-parent control method. 2) Forward
2762references (within a method) -- for control methods, AML interpreters use
2763a one-pass parse of control methods. ACPICA BZ 1008.
2764
2765iASL: Added error checking for dependencies related to the _PSx power
2766methods. ACPICA BZ 1029.
27671) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
2768_PS3.
27692) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
2770scope.
2771
2772iASL and table compiler: Cleanup miscellaneous memory leaks by fully
2773deploying the existing object and string caches and adding new caches for
2774the table compiler.
2775
2776iASL: Split the huge parser source file into multiple subfiles to improve
2777manageability. Generation now requires the M4 macro preprocessor, which
2778is part of the Bison distribution on both unix and windows platforms.
2779
2780AcpiSrc: Fixed and removed all extraneous warnings generated during
2781entire ACPICA source code scan and/or conversion.
2782
2783
2784----------------------------------------
2785
278624 July 2014. Summary of changes for version 20140724:
2787
2788The ACPI 5.1 specification has been released and is available at:
2789http://uefi.org/specs/access
2790
2791
27920) ACPI 5.1 support in ACPICA:
2793
2794ACPI 5.1 is fully supported in ACPICA as of this release.
2795
2796New predefined names. Support includes iASL and runtime ACPICA
2797validation.
2798    _CCA (Cache Coherency Attribute).
2799    _DSD (Device-Specific Data). David Box.
2800
2801Modifications to existing ACPI tables. Support includes headers, iASL
2802Data Table compiler, disassembler, and the template generator.
2803    FADT - New fields and flags. Graeme Gregory.
2804    GTDT - One new subtable and new fields. Tomasz Nowicki.
2805    MADT - Two new subtables. Tomasz Nowicki.
2806    PCCT - One new subtable.
2807
2808Miscellaneous.
2809    New notification type for System Resource Affinity change events.
2810
2811
28121) ACPICA kernel-resident subsystem:
2813
2814Fixed a regression introduced in 20140627 where a fault can happen during
2815the deletion of Alias AML namespace objects. The problem affected both
2816the core ACPICA and the ACPICA tools including iASL and AcpiExec.
2817
2818Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
2819simple mechanism to enable wake GPEs that have no associated handler or
2820control method. Rafael Wysocki.
2821
2822Updated the AcpiEnableGpe interface to disallow the enable if there is no
2823handler or control method associated with the particular GPE. This will
2824help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
2825
2826Updated GPE handling and dispatch by disabling the GPE before clearing
2827the status bit for edge-triggered GPEs. Lv Zheng.
2828
2829Added Timer() support to the AML Debug object. The current timer value is
2830now displayed with each invocation of (Store to) the debug object to
2831enable simple generation of execution times for AML code (method
2832execution for example.) ACPICA BZ 1093.
2833
2834Example Code and Data Size: These are the sizes for the OS-independent
2835acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2836debug version of the code includes the debug output trace mechanism and
2837has a much larger code and data size.
2838
2839  Current Release:
2840    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
2841    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
2842  Previous Release:
2843    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
2844    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
2845
2846
28472) iASL Compiler/Disassembler and Tools:
2848
2849Fixed an issue with the recently added local printf implementation,
2850concerning width/precision specifiers that could cause incorrect output.
2851Lv Zheng. ACPICA BZ 1094.
2852
2853Disassembler: Added support to detect buffers that contain UUIDs and
2854disassemble them to an invocation of the ToUUID operator. Also emit
2855commented descriptions of known ACPI-related UUIDs.
2856
2857AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
2858-u. Adds three new files.
2859
2860iASL: Update table compiler and disassembler for DMAR table changes that
2861were introduced in September 2013. With assistance by David Woodhouse.
2862
2863----------------------------------------
286427 June 2014. Summary of changes for version 20140627:
2865
28661) ACPICA kernel-resident subsystem:
2867
2868Formatted Output: Implemented local versions of standard formatted output
2869utilities such as printf, etc. Over time, it has been discovered that
2870there are in fact many portability issues with printf, and the addition
2871of this feature will fix/prevent these issues once and for all. Some
2872known issues are summarized below:
2873
28741) Output of 64-bit values is not portable. For example, UINT64 is %ull
2875for the Linux kernel and is %uI64 for some MSVC versions.
28762) Invoking printf consistently in a manner that is portable across both
287732-bit and 64-bit platforms is difficult at best in many situations.
28783) The output format for pointers varies from system to system (leading
2879zeros especially), and leads to inconsistent output from ACPICA across
2880platforms.
28814) Certain platform-specific printf formats may conflict with ACPICA use.
28825) If there is no local C library available, ACPICA now has local support
2883for printf.
2884
2885-- To address these printf issues in a complete manner, ACPICA now
2886directly implements a small subset of printf format specifiers, only
2887those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
2888
2889Implemented support for ACPICA generation within the EFI environment.
2890Initially, the AcpiDump utility is supported in the UEFI shell
2891environment. Lv Zheng.
2892
2893Added a new external interface, AcpiLogError, to improve ACPICA
2894portability. This allows the host to redirect error messages from the
2895ACPICA utilities. Lv Zheng.
2896
2897Added and deployed new OSL file I/O interfaces to improve ACPICA
2898portability:
2899  AcpiOsOpenFile
2900  AcpiOsCloseFile
2901  AcpiOsReadFile
2902  AcpiOsWriteFile
2903  AcpiOsGetFileOffset
2904  AcpiOsSetFileOffset
2905There are C library implementations of these functions in the new file
2906service_layers/oslibcfs.c -- however, the functions can be implemented by
2907the local host in any way necessary. Lv Zheng.
2908
2909Implemented a mechanism to disable/enable ACPI table checksum validation
2910at runtime. This can be useful when loading tables very early during OS
2911initialization when it may not be possible to map the entire table in
2912order to compute the checksum. Lv Zheng.
2913
2914Fixed a buffer allocation issue for the Generic Serial Bus support.
2915Originally, a fixed buffer length was used. This change allows for
2916variable-length buffers based upon the protocol indicated by the field
2917access attributes. Reported by Lan Tianyu. Lv Zheng.
2918
2919Fixed a problem where an object detached from a namespace node was not
2920properly terminated/cleared and could cause a circular list problem if
2921reattached. ACPICA BZ 1063. David Box.
2922
2923Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
2924
2925Fixed a possible memory leak in an error return path within the function
2926AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
2927
2928Example Code and Data Size: These are the sizes for the OS-independent
2929acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2930debug version of the code includes the debug output trace mechanism and
2931has a much larger code and data size.
2932
2933  Current Release:
2934    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
2935    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
2936  Previous Release:
2937    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
2938    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
2939
2940
29412) iASL Compiler/Disassembler and Tools:
2942
2943Disassembler: Add dump of ASCII equivalent text within a comment at the
2944end of each line of the output for the Buffer() ASL operator.
2945
2946AcpiDump: Miscellaneous changes:
2947  Fixed repetitive table dump in -n mode.
2948  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
2949the ACPI 2.0 GUID fails.
2950
2951iASL: Fixed a problem where the compiler could fault if incorrectly given
2952an acpidump output file as input. ACPICA BZ 1088. David Box.
2953
2954AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
2955they are invoked without any arguments.
2956
2957Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
29581086. Colin Ian King.
2959
2960Disassembler: Cleaned up a block of code that extracts a parent Op
2961object. Added a comment that explains that the parent is guaranteed to be
2962valid in this case. ACPICA BZ 1069.
2963
2964
2965----------------------------------------
296624 April 2014. Summary of changes for version 20140424:
2967
29681) ACPICA kernel-resident subsystem:
2969
2970Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
2971Some of these tables are known to contain a trailing NULL entry. Lv
2972Zheng.
2973
2974Removed an extraneous error message for the case where there are a large
2975number of system GPEs (> 124). This was the "32-bit FADT register is too
2976long to convert to GAS struct" message, which is irrelevant for GPEs
2977since the GPEx_BLK_LEN fields of the FADT are always used instead of the
2978(limited capacity) GAS bit length. Also, several changes to ensure proper
2979support for GPE numbers > 255, where some "GPE number" fields were 8-bits
2980internally.
2981
2982Implemented and deployed additional configuration support for the public
2983ACPICA external interfaces. Entire classes of interfaces can now be
2984easily modified or configured out, replaced by stubbed inline functions
2985by default. Lv Zheng.
2986
2987Moved all public ACPICA runtime configuration globals to the public
2988ACPICA external interface file for convenience. Also, removed some
2989obsolete/unused globals. See the file acpixf.h. Lv Zheng.
2990
2991Documentation: Added a new section to the ACPICA reference describing the
2992maximum number of GPEs that can be supported by the FADT-defined GPEs in
2993block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
2994reference.
2995
2996Example Code and Data Size: These are the sizes for the OS-independent
2997acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2998debug version of the code includes the debug output trace mechanism and
2999has a much larger code and data size.
3000
3001  Current Release:
3002    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
3003    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
3004  Previous Release:
3005    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
3006    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
3007
3008
30092) iASL Compiler/Disassembler and Tools:
3010
3011iASL and disassembler: Add full support for the LPIT table (Low Power
3012Idle Table). Includes support in the disassembler, data table compiler,
3013and template generator.
3014
3015AcpiDump utility:
30161) Add option to force the use of the RSDT (over the XSDT).
30172) Improve validation of the RSDP signature (use 8 chars instead of 4).
3018
3019iASL: Add check for predefined packages that are too large.  For
3020predefined names that contain subpackages, check if each subpackage is
3021too large. (Check for too small already exists.)
3022
3023Debugger: Updated the GPE command (which simulates a GPE by executing the
3024GPE code paths in ACPICA). The GPE device is now optional, and defaults
3025to the GPE 0/1 FADT-defined blocks.
3026
3027Unix application OSL: Update line-editing support. Add additional error
3028checking and take care not to reset terminal attributes on exit if they
3029were never set. This should help guarantee that the terminal is always
3030left in the previous state on program exit.
3031
3032
3033----------------------------------------
303425 March 2014. Summary of changes for version 20140325:
3035
30361) ACPICA kernel-resident subsystem:
3037
3038Updated the auto-serialize feature for control methods. This feature
3039automatically serializes all methods that create named objects in order
3040to prevent runtime errors. The update adds support to ignore the
3041currently executing AML SyncLevel when invoking such a method, in order
3042to prevent disruption of any existing SyncLevel priorities that may exist
3043in the AML code. Although the use of SyncLevels is relatively rare, this
3044change fixes a regression where an AE_AML_MUTEX_ORDER exception can
3045appear on some machines starting with the 20140214 release.
3046
3047Added a new external interface to allow the host to install ACPI tables
3048very early, before the namespace is even created. AcpiInstallTable gives
3049the host additional flexibility for ACPI table management. Tables can be
3050installed directly by the host as if they had originally appeared in the
3051XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
3052(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
3053with additional internal restructuring and cleanup. See the ACPICA
3054Reference for interface details. Lv Zheng.
3055
3056Added validation of the checksum for all incoming dynamically loaded
3057tables (via external interfaces or via AML Load/LoadTable operators). Lv
3058Zheng.
3059
3060Updated the use of the AcpiOsWaitEventsComplete interface during Notify
3061and GPE handler removal. Restructured calls to eliminate possible race
3062conditions. Lv Zheng.
3063
3064Added a warning for the use/execution of the ASL/AML Unload (table)
3065operator. This will help detect and identify machines that use this
3066operator if and when it is ever used. This operator has never been seen
3067in the field and the usage model and possible side-effects of the drastic
3068runtime action of a full table removal are unknown.
3069
3070Reverted the use of #pragma push/pop which was introduced in the 20140214
3071release. It appears that push and pop are not implemented by enough
3072compilers to make the use of this feature feasible for ACPICA at this
3073time. However, these operators may be deployed in a future ACPICA
3074release.
3075
3076Added the missing EXPORT_SYMBOL macros for the install and remove SCI
3077handler interfaces.
3078
3079Source code generation:
30801) Disabled the use of the "strchr" macro for the gcc-specific
3081generation. For some versions of gcc, this macro can periodically expose
3082a compiler bug which in turn causes compile-time error(s).
30832) Added support for PPC64 compilation. Colin Ian King.
3084
3085Example Code and Data Size: These are the sizes for the OS-independent
3086acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3087debug version of the code includes the debug output trace mechanism and
3088has a much larger code and data size.
3089
3090  Current Release:
3091    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
3092    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
3093  Previous Release:
3094    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
3095    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
3096
3097
30982) iASL Compiler/Disassembler and Tools:
3099
3100Disassembler: Added several new features to improve the readability of
3101the resulting ASL code. Extra information is emitted within comment
3102fields in the ASL code:
31031) Known _HID/_CID values are decoded to descriptive text.
31042) Standard values for the Notify() operator are decoded to descriptive
3105text.
31063) Target operands are expanded to full pathnames (in a comment) when
3107possible.
3108
3109Disassembler: Miscellaneous updates for extern() handling:
31101) Abort compiler if file specified by -fe option does not exist.
31112) Silence unnecessary warnings about argument count mismatches.
31123) Update warning messages concerning unresolved method externals.
31134) Emit "UnknownObj" keyword for externals whose type cannot be
3114determined.
3115
3116AcpiHelp utility:
31171) Added the -a option to display both the ASL syntax and the AML
3118encoding for an input ASL operator. This effectively displays all known
3119information about an ASL operator with one AcpiHelp invocation.
31202) Added substring match support (similar to a wildcard) for the -i
3121(_HID/PNP IDs) option.
3122
3123iASL/Disassembler: Since this tool does not yet support execution on big-
3124endian machines, added detection of endianness and an error message if
3125execution is attempted on big-endian. Support for big-endian within iASL
3126is a feature that is on the ACPICA to-be-done list.
3127
3128AcpiBin utility:
31291) Remove option to extract binary files from an acpidump; this function
3130is made obsolete by the AcpiXtract utility.
31312) General cleanup of open files and allocated buffers.
3132
3133
3134----------------------------------------
313514 February 2014. Summary of changes for version 20140214:
3136
31371) ACPICA kernel-resident subsystem:
3138
3139Implemented a new mechanism to proactively prevent problems with ill-
3140behaved reentrant control methods that create named ACPI objects. This
3141behavior is illegal as per the ACPI specification, but is nonetheless
3142frequently seen in the field. Previously, this could lead to an
3143AE_ALREADY_EXISTS exception if the method was actually entered by more
3144than one thread. This new mechanism detects such methods at table load
3145time and marks them "serialized" to prevent reentrancy. A new global
3146option, AcpiGbl_AutoSerializeMethods, has been added to disable this
3147feature if desired. This mechanism and global option obsoletes and
3148supersedes the previous AcpiGbl_SerializeAllMethods option.
3149
3150Added the "Windows 2013" string to the _OSI support. ACPICA will now
3151respond TRUE to _OSI queries with this string. It is the stated policy of
3152ACPICA to add new strings to the _OSI support as soon as possible after
3153they are defined. See the full ACPICA _OSI policy which has been added to
3154the utilities/utosi.c file.
3155
3156Hardened/updated the _PRT return value auto-repair code:
31571) Do not abort the repair on a single subpackage failure, continue to
3158check all subpackages.
31592) Add check for the minimum subpackage length (4).
31603) Properly handle extraneous NULL package elements.
3161
3162Added support to avoid the possibility of infinite loops when traversing
3163object linked lists. Never allow an infinite loop, even in the face of
3164corrupted object lists.
3165
3166ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
3167pack(pop) directives to ensure that the ACPICA headers are independent of
3168compiler settings or other host headers.
3169
3170Example Code and Data Size: These are the sizes for the OS-independent
3171acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3172debug version of the code includes the debug output trace mechanism and
3173has a much larger code and data size.
3174
3175  Current Release:
3176    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
3177    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
3178  Previous Release:
3179    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
3180    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
3181
3182
31832) iASL Compiler/Disassembler and Tools:
3184
3185iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
3186first reserved field was incorrectly forced to have a value of zero. This
3187change correctly forces the field to have a value of one. ACPICA BZ 1081.
3188
3189Debugger: Added missing support for the "Extra" and "Data" subobjects
3190when displaying object data.
3191
3192Debugger: Added support to display entire object linked lists when
3193displaying object data.
3194
3195iASL: Removed the obsolete -g option to obtain ACPI tables from the
3196Windows registry. This feature has been superseded by the acpidump
3197utility.
3198
3199
3200----------------------------------------
320114 January 2014. Summary of changes for version 20140114:
3202
32031) ACPICA kernel-resident subsystem:
3204
3205Updated all ACPICA copyrights and signons to 2014. Added the 2014
3206copyright to all module headers and signons, including the standard Linux
3207header. This affects virtually every file in the ACPICA core subsystem,
3208iASL compiler, all ACPICA utilities, and the test suites.
3209
3210Improved parameter validation for AcpiInstallGpeBlock. Added the
3211following checks:
32121) The incoming device handle refers to type ACPI_TYPE_DEVICE.
32132) There is not already a GPE block attached to the device.
3214Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
3215device.
3216
3217Correctly support "references" in the ACPI_OBJECT. This change fixes the
3218support to allow references (namespace nodes) to be passed as arguments
3219to control methods via the evaluate object interface. This is probably
3220most useful for testing purposes, however.
3221
3222Improved support for 32/64 bit physical addresses in printf()-like
3223output. This change improves the support for physical addresses in printf
3224debug statements and other output on both 32-bit and 64-bit hosts. It
3225consistently outputs the appropriate number of bytes for each host. The
3226%p specifier is unsatisfactory since it does not emit uniform output on
3227all hosts/clib implementations (on some, leading zeros are not supported,
3228leading to difficult-to-read output).
3229
3230Example Code and Data Size: These are the sizes for the OS-independent
3231acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3232debug version of the code includes the debug output trace mechanism and
3233has a much larger code and data size.
3234
3235  Current Release:
3236    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
3237    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
3238  Previous Release:
3239    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
3240    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
3241
3242
32432) iASL Compiler/Disassembler and Tools:
3244
3245iASL: Fix a possible fault when using the Connection() operator. Fixes a
3246problem if the parent Field definition for the Connection operator refers
3247to an operation region that does not exist. ACPICA BZ 1064.
3248
3249AcpiExec: Load of local test tables is now optional. The utility has the
3250capability to load some various tables to test features of ACPICA.
3251However, there are enough of them that the output of the utility became
3252confusing. With this change, only the required local tables are displayed
3253(RSDP, XSDT, etc.) along with the actual tables loaded via the command
3254line specification. This makes the default output simler and easier to
3255understand. The -el command line option restores the original behavior
3256for testing purposes.
3257
3258AcpiExec: Added support for overlapping operation regions. This change
3259expands the simulation of operation regions by supporting regions that
3260overlap within the given address space. Supports SystemMemory and
3261SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
3262
3263AcpiExec: Added region handler support for PCI_Config and EC spaces. This
3264allows AcpiExec to simulate these address spaces, similar to the current
3265support for SystemMemory and SystemIO.
3266
3267Debugger: Added new command to read/write/compare all namespace objects.
3268The command "test objects" will exercise the entire namespace by writing
3269new values to each data object, and ensuring that the write was
3270successful. The original value is then restored and verified.
3271
3272Debugger: Added the "test predefined" command. This change makes this
3273test public and puts it under the new "test" command. The test executes
3274each and every predefined name within the current namespace.
3275
3276
3277----------------------------------------
327818 December 2013. Summary of changes for version 20131218:
3279
3280Global note: The ACPI 5.0A specification was released this month. There
3281are no changes needed for ACPICA since this release of ACPI is an
3282errata/clarification release. The specification is available at
3283acpi.info.
3284
3285
32861) ACPICA kernel-resident subsystem:
3287
3288Added validation of the XSDT root table if it is present. Some older
3289platforms contain an XSDT that is ill-formed or otherwise invalid (such
3290as containing some or all entries that are NULL pointers). This change
3291adds a new function to validate the XSDT before actually using it. If the
3292XSDT is found to be invalid, ACPICA will now automatically fall back to
3293using the RSDT instead. Original implementation by Zhao Yakui. Ported to
3294ACPICA and enhanced by Lv Zheng and Bob Moore.
3295
3296Added a runtime option to ignore the XSDT and force the use of the RSDT.
3297This change adds a runtime option that will force ACPICA to use the RSDT
3298instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
3299requires that an XSDT be used instead of the RSDT, the XSDT has been
3300found to be corrupt or ill-formed on some machines. Lv Zheng.
3301
3302Added a runtime option to favor 32-bit FADT register addresses over the
330364-bit addresses. This change adds an option to favor 32-bit FADT
3304addresses when there is a conflict between the 32-bit and 64-bit versions
3305of the same register. The default behavior is to use the 64-bit version
3306in accordance with the ACPI specification. This can now be overridden via
3307the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
3308
3309During the change above, the internal "Convert FADT" and "Verify FADT"
3310functions have been merged to simplify the code, making it easier to
3311understand and maintain. ACPICA BZ 933.
3312
3313Improve exception reporting and handling for GPE block installation.
3314Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
3315status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
3316
3317Added helper macros to extract bus/segment numbers from the HEST table.
3318This change adds two macros to extract the encoded bus and segment
3319numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
3320Betty Dall <betty.dall@hp.com>
3321
3322Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
3323by ACPICA. It is not a public macro, so it should have no effect on
3324existing OSV code. Lv Zheng.
3325
3326Example Code and Data Size: These are the sizes for the OS-independent
3327acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3328debug version of the code includes the debug output trace mechanism and
3329has a much larger code and data size.
3330
3331  Current Release:
3332    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
3333    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
3334  Previous Release:
3335    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
3336    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
3337
3338
33392) iASL Compiler/Disassembler and Tools:
3340
3341Disassembler: Improved pathname support for emitted External()
3342statements. This change adds full pathname support for external names
3343that have been resolved internally by the inclusion of additional ACPI
3344tables (via the iASL -e option). Without this change, the disassembler
3345can emit multiple externals for the same object, or it become confused
3346when the Scope() operator is used on an external object. Overall, greatly
3347improves the ability to actually recompile the emitted ASL code when
3348objects a referenced across multiple ACPI tables. Reported by Michael
3349Tsirkin (mst@redhat.com).
3350
3351Tests/ASLTS: Updated functional control suite to execute with no errors.
3352David Box. Fixed several errors related to the testing of the interpreter
3353slack mode. Lv Zheng.
3354
3355iASL: Added support to detect names that are declared within a control
3356method, but are unused (these are temporary names that are only valid
3357during the time the method is executing). A remark is issued for these
3358cases. ACPICA BZ 1022.
3359
3360iASL: Added full support for the DBG2 table. Adds full disassembler,
3361table compiler, and template generator support for the DBG2 table (Debug
3362Port 2 table).
3363
3364iASL: Added full support for the PCCT table, update the table definition.
3365Updates the PCCT table definition in the actbl3.h header and adds table
3366compiler and template generator support.
3367
3368iASL: Added an option to emit only error messages (no warnings/remarks).
3369The -ve option will enable only error messages, warnings and remarks are
3370suppressed. This can simplify debugging when only the errors are
3371important, such as when an ACPI table is disassembled and there are many
3372warnings and remarks -- but only the actual errors are of real interest.
3373
3374Example ACPICA code (source/tools/examples): Updated the example code so
3375that it builds to an actual working program, not just example code. Added
3376ACPI tables and execution of an example control method in the DSDT. Added
3377makefile support for Unix generation.
3378
3379
3380----------------------------------------
338115 November 2013. Summary of changes for version 20131115:
3382
3383This release is available at https://acpica.org/downloads
3384
3385
33861) ACPICA kernel-resident subsystem:
3387
3388Resource Manager: Fixed loop termination for the "get AML length"
3389function. The loop previously had an error termination on a NULL resource
3390pointer, which can never happen since the loop simply increments a valid
3391resource pointer. This fix changes the loop to terminate with an error on
3392an invalid end-of-buffer condition. The problem can be seen as an
3393infinite loop by callers to AcpiSetCurrentResources with an invalid or
3394corrupted resource descriptor, or a resource descriptor that is missing
3395an END_TAG descriptor. Reported by Dan Carpenter
3396<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
3397
3398Table unload and ACPICA termination: Delete all attached data objects
3399during namespace node deletion. This fix updates namespace node deletion
3400to delete the entire list of attached objects (attached via
3401AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
34021024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
3403
3404ACPICA termination: Added support to delete all objects attached to the
3405root namespace node. This fix deletes any and all objects that have been
3406attached to the root node via AcpiAttachData. Previously, none of these
3407objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
3408
3409Debug output: Do not emit the function nesting level for the in-kernel
3410build. The nesting level is really only useful during a single-thread
3411execution. Therefore, only enable this output for the AcpiExec utility.
3412Also, only emit the thread ID when executing under AcpiExec (Context
3413switches are still always detected and a message is emitted). ACPICA BZ
3414972.
3415
3416Example Code and Data Size: These are the sizes for the OS-independent
3417acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3418debug version of the code includes the debug output trace mechanism and
3419has a much larger code and data size.
3420
3421  Current Release:
3422    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
3423    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
3424  Previous Release:
3425    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
3426    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
3427
3428
34292) iASL Compiler/Disassembler and Tools:
3430
3431AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
3432correct portable POSIX header for terminal control functions.
3433
3434Disassembler: Fixed control method invocation issues related to the use
3435of the CondRefOf() operator. The problem is seen in the disassembly where
3436control method invocations may not be disassembled properly if the
3437control method name has been used previously as an argument to CondRefOf.
3438The solution is to not attempt to emit an external declaration for the
3439CondRefOf target (it is not necessary in the first place). This prevents
3440disassembler object type confusion. ACPICA BZ 988.
3441
3442Unix Makefiles: Added an option to disable compiler optimizations and the
3443_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
3444with optimizations (reportedly, gcc 4.4 for example). This change adds a
3445command line option for make (NOOPT) that disables all compiler
3446optimizations and the _FORTIFY_SOURCE compiler flag. The default
3447optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
34481034. Lv Zheng, Bob Moore.
3449
3450Tests/ASLTS: Added options to specify individual test cases and modes.
3451This allows testers running aslts.sh to optionally specify individual
3452test modes and test cases. Also added an option to disable the forced
3453generation of the ACPICA tools from source if desired. Lv Zheng.
3454
3455----------------------------------------
345627 September 2013. Summary of changes for version 20130927:
3457
3458This release is available at https://acpica.org/downloads
3459
3460
34611) ACPICA kernel-resident subsystem:
3462
3463Fixed a problem with store operations to reference objects. This change
3464fixes a problem where a Store operation to an ArgX object that contained
3465a
3466reference to a field object did not complete the automatic dereference
3467and
3468then write to the actual field object. Instead, the object type of the
3469field object was inadvertently changed to match the type of the source
3470operand. The new behavior will actually write to the field object (buffer
3471field or field unit), thus matching the correct ACPI-defined behavior.
3472
3473Implemented support to allow the host to redefine individual OSL
3474prototypes. This change enables the host to redefine OSL prototypes found
3475in the acpiosxf.h file. This allows the host to implement OSL interfaces
3476with a macro or inlined function. Further, it allows the host to add any
3477additional required modifiers such as __iomem, __init, __exit, etc., as
3478necessary on a per-interface basis. Enables maximum flexibility for the
3479OSL interfaces. Lv Zheng.
3480
3481Hardcoded the access width for the FADT-defined reset register. The ACPI
3482specification requires the reset register width to be 8 bits. ACPICA now
3483hardcodes the width to 8 and ignores the FADT width value. This provides
3484compatibility with other ACPI implementations that have allowed BIOS code
3485with bad register width values to go unnoticed. Matthew Garett, Bob
3486Moore,
3487Lv Zheng.
3488
3489Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
3490used
3491in the OSL header (acpiosxf). The change modifies the position of this
3492macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
3493build issues if the OSL defines the implementation of the interface to be
3494an inline stub function. Lv Zheng.
3495
3496Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
3497initialization interfaces. This change adds a new macro for the main init
3498and terminate external interfaces in order to support hosts that require
3499additional or different processing for these functions. Changed from
3500ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
3501Zheng, Bob Moore.
3502
3503Cleaned up the memory allocation macros for configurability. In the
3504common
3505case, the ACPI_ALLOCATE and related macros now resolve directly to their
3506respective AcpiOs* OSL interfaces. Two options:
35071) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
3508default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
35092) For AcpiExec (and for debugging), the macros can optionally be
3510resolved
3511to the local ACPICA interfaces that track each allocation (local tracking
3512is used to immediately detect memory leaks).
3513Lv Zheng.
3514
3515Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
3516to predefine this macro to either TRUE or FALSE during the system build.
3517
3518Replaced __FUNCTION_ with __func__ in the gcc-specific header.
3519
3520Example Code and Data Size: These are the sizes for the OS-independent
3521acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3522debug version of the code includes the debug output trace mechanism and
3523has a much larger code and data size.
3524
3525  Current Release:
3526    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
3527    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
3528  Previous Release:
3529    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
3530    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
3531
3532
35332) iASL Compiler/Disassembler and Tools:
3534
3535iASL: Implemented wildcard support for the -e option. This simplifies use
3536when there are many SSDTs that must be included to resolve external
3537method
3538declarations. ACPICA BZ 1041. Example:
3539    iasl -e ssdt*.dat -d dsdt.dat
3540
3541AcpiExec: Add history/line-editing for Unix/Linux systems. This change
3542adds a portable module that implements full history and limited line
3543editing for Unix and Linux systems. It does not use readline() due to
3544portability issues. Instead it uses the POSIX termio interface to put the
3545terminal in raw input mode so that the various special keys can be
3546trapped
3547(such as up/down-arrow for history support and left/right-arrow for line
3548editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
3549
3550AcpiXtract: Add support to handle (ignore) "empty" lines containing only
3551one or more spaces. This provides compatible with early or different
3552versions of the AcpiDump utility. ACPICA BZ 1044.
3553
3554AcpiDump: Do not ignore tables that contain only an ACPI table header.
3555Apparently, some BIOSs create SSDTs that contain an ACPI table header but
3556no other data. This change adds support to dump these tables. Any tables
3557shorter than the length of an ACPI table header remain in error (an error
3558message is emitted). Reported by Yi Li.
3559
3560Debugger: Echo actual command along with the "unknown command" message.
3561
3562----------------------------------------
356323 August 2013. Summary of changes for version 20130823:
3564
35651) ACPICA kernel-resident subsystem:
3566
3567Implemented support for host-installed System Control Interrupt (SCI)
3568handlers. Certain ACPI functionality requires the host to handle raw
3569SCIs. For example, the "SCI Doorbell" that is defined for memory power
3570state support requires the host device driver to handle SCIs to examine
3571if the doorbell has been activated. Multiple SCI handlers can be
3572installed to allow for future expansion. New external interfaces are
3573AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
3574details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
3575
3576Operation region support: Never locally free the handler "context"
3577pointer. This change removes some dangerous code that attempts to free
3578the handler context pointer in some (rare) circumstances. The owner of
3579the handler owns this pointer and the ACPICA code should never touch it.
3580Although not seen to be an issue in any kernel, it did show up as a
3581problem (fault) under AcpiExec. Also, set the internal storage field for
3582the context pointer to zero when the region is deactivated, simply for
3583sanity. David Box. ACPICA BZ 1039.
3584
3585AcpiRead: On error, do not modify the return value target location. If an
3586error happens in the middle of a split 32/32 64-bit I/O operation, do not
3587modify the target of the return value pointer. Makes the code consistent
3588with the rest of ACPICA. Bjorn Helgaas.
3589
3590Example Code and Data Size: These are the sizes for the OS-independent
3591acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3592debug version of the code includes the debug output trace mechanism and
3593has a much larger code and data size.
3594
3595  Current Release:
3596    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
3597    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
3598  Previous Release:
3599    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
3600    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
3601
3602
36032) iASL Compiler/Disassembler and Tools:
3604
3605AcpiDump: Implemented several new features and fixed some problems:
36061) Added support to dump the RSDP, RSDT, and XSDT tables.
36072) Added support for multiple table instances (SSDT, UEFI).
36083) Added option to dump "customized" (overridden) tables (-c).
36094) Fixed a problem where some table filenames were improperly
3610constructed.
36115) Improved some error messages, removed some unnecessary messages.
3612
3613iASL: Implemented additional support for disassembly of ACPI tables that
3614contain invocations of external control methods. The -fe<file> option
3615allows the import of a file that specifies the external methods along
3616with the required number of arguments for each -- allowing for the
3617correct disassembly of the table. This is a workaround for a limitation
3618of AML code where the disassembler often cannot determine the number of
3619arguments required for an external control method and generates incorrect
3620ASL code. See the iASL reference for details. ACPICA BZ 1030.
3621
3622Debugger: Implemented a new command (paths) that displays the full
3623pathnames (namepaths) and object types of all objects in the namespace.
3624This is an alternative to the namespace command.
3625
3626Debugger: Implemented a new command (sci) that invokes the SCI dispatch
3627mechanism and any installed handlers.
3628
3629iASL: Fixed a possible segfault for "too many parent prefixes" condition.
3630This can occur if there are too many parent prefixes in a namepath (for
3631example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
3632
3633Application OSLs: Set the return value for the PCI read functions. These
3634functions simply return AE_OK, but should set the return value to zero
3635also. This change implements this. ACPICA BZ 1038.
3636
3637Debugger: Prevent possible command line buffer overflow. Increase the
3638size of a couple of the debugger line buffers, and ensure that overflow
3639cannot happen. ACPICA BZ 1037.
3640
3641iASL: Changed to abort immediately on serious errors during the parsing
3642phase. Due to the nature of ASL, there is no point in attempting to
3643compile these types of errors, and they typically end up causing a
3644cascade of hundreds of errors which obscure the original problem.
3645
3646----------------------------------------
364725 July 2013. Summary of changes for version 20130725:
3648
36491) ACPICA kernel-resident subsystem:
3650
3651Fixed a problem with the DerefOf operator where references to FieldUnits
3652and BufferFields incorrectly returned the parent object, not the actual
3653value of the object. After this change, a dereference of a FieldUnit
3654reference results in a read operation on the field to get the value, and
3655likewise, the appropriate BufferField value is extracted from the target
3656buffer.
3657
3658Fixed a problem where the _WAK method could cause a fault under these
3659circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
3660method returned no value. The problem is rarely seen because most kernels
3661run ACPICA in slack mode.
3662
3663For the DerefOf operator, a fatal error now results if an attempt is made
3664to dereference a reference (created by the Index operator) to a NULL
3665package element. Provides compatibility with other ACPI implementations,
3666and this behavior will be added to a future version of the ACPI
3667specification.
3668
3669The ACPI Power Management Timer (defined in the FADT) is now optional.
3670This provides compatibility with other ACPI implementations and will
3671appear in the next version of the ACPI specification. If there is no PM
3672Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
3673zero in the FADT indicates no PM timer.
3674
3675Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
3676allows the host to globally enable/disable all vendor strings, all
3677feature strings, or both. Intended to be primarily used for debugging
3678purposes only. Lv Zheng.
3679
3680Expose the collected _OSI data to the host via a global variable. This
3681data tracks the highest level vendor ID that has been invoked by the BIOS
3682so that the host (and potentially ACPICA itself) can change behaviors
3683based upon the age of the BIOS.
3684
3685Example Code and Data Size: These are the sizes for the OS-independent
3686acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3687debug version of the code includes the debug output trace mechanism and
3688has a much larger code and data size.
3689
3690  Current Release:
3691    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
3692    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
3693  Previous Release:
3694    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
3695    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
3696
3697
36982) iASL Compiler/Disassembler and Tools:
3699
3700iASL: Created the following enhancements for the -so option (create
3701offset table):
37021)Add offsets for the last nameseg in each namepath for every supported
3703object type
37042)Add support for Processor, Device, Thermal Zone, and Scope objects
37053)Add the actual AML opcode for the parent object of every supported
3706object type
37074)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
3708
3709Disassembler: Emit all unresolved external symbols in a single block.
3710These are external references to control methods that could not be
3711resolved, and thus, the disassembler had to make a guess at the number of
3712arguments to parse.
3713
3714iASL: The argument to the -T option (create table template) is now
3715optional. If not specified, the default table is a DSDT, typically the
3716most common case.
3717
3718----------------------------------------
371926 June 2013. Summary of changes for version 20130626:
3720
37211) ACPICA kernel-resident subsystem:
3722
3723Fixed an issue with runtime repair of the _CST object. Null or invalid
3724elements were not always removed properly. Lv Zheng.
3725
3726Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
3727FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
3728the maximum number of GPEs is 1016. Use of multiple GPE block devices
3729makes the system-wide number of GPEs essentially unlimited.
3730
3731Example Code and Data Size: These are the sizes for the OS-independent
3732acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3733debug version of the code includes the debug output trace mechanism and
3734has a much larger code and data size.
3735
3736  Current Release:
3737    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
3738    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
3739  Previous Release:
3740    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
3741    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
3742
3743
37442) iASL Compiler/Disassembler and Tools:
3745
3746Portable AcpiDump: Implemented full support for the Linux and FreeBSD
3747hosts. Now supports Linux, FreeBSD, and Windows.
3748
3749Disassembler: Added some missing types for the HEST and EINJ tables: "Set
3750Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
3751
3752iASL/Preprocessor: Implemented full support for nested
3753#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
3754
3755Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
3756max. The original purpose of this constraint was to limit the amount of
3757debug output. However, the string function in question (UtPrintString) is
3758now used for the disassembler also, where 256 bytes is insufficient.
3759Reported by RehabMan@GitHub.
3760
3761iASL/DataTables: Fixed some problems and issues with compilation of DMAR
3762tables. ACPICA BZ 999. Lv Zheng.
3763
3764iASL: Fixed a couple of error exit issues that could result in a "Could
3765not delete <file>" message during ASL compilation.
3766
3767AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
3768the actual signatures for these tables are "FACP" and "APIC",
3769respectively.
3770
3771AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
3772tables are allowed to have multiple instances.
3773
3774----------------------------------------
377517 May 2013. Summary of changes for version 20130517:
3776
37771) ACPICA kernel-resident subsystem:
3778
3779Fixed a regression introduced in version 20130328 for _INI methods. This
3780change fixes a problem introduced in 20130328 where _INI methods are no
3781longer executed properly because of a memory block that was not
3782initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
3783<tomasz.nowicki@linaro.org>.
3784
3785Fixed a possible problem with the new extended sleep registers in the
3786ACPI
37875.0 FADT. Do not use these registers (even if populated) unless the HW-
3788reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
37891020. Lv Zheng.
3790
3791Implemented return value repair code for _CST predefined objects: Sort
3792the
3793list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
3794
3795Implemented a debug-only option to disable loading of SSDTs from the
3796RSDT/XSDT during ACPICA initialization. This can be useful for debugging
3797ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
3798acglobal.h - ACPICA BZ 1005. Lv Zheng.
3799
3800Fixed some issues in the ACPICA initialization and termination code:
3801Tomasz Nowicki <tomasz.nowicki@linaro.org>
38021) Clear events initialized flag upon event component termination. ACPICA
3803BZ 1013.
38042) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
38053) Delete global lock pending lock during termination. ACPICA BZ 1012.
38064) Clear debug buffer global on termination to prevent possible multiple
3807delete. ACPICA BZ 1010.
3808
3809Standardized all switch() blocks across the entire source base. After
3810many
3811years, different formatting for switch() had crept in. This change makes
3812the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
3813
3814Split some files to enhance ACPICA modularity and configurability:
38151) Split buffer dump routines into utilities/utbuffer.c
38162) Split internal error message routines into utilities/uterror.c
38173) Split table print utilities into tables/tbprint.c
38184) Split iASL command-line option processing into asloptions.c
3819
3820Makefile enhancements:
38211) Support for all new files above.
38222) Abort make on errors from any subcomponent. Chao Guan.
38233) Add build support for Apple Mac OS X. Liang Qi.
3824
3825Example Code and Data Size: These are the sizes for the OS-independent
3826acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3827debug version of the code includes the debug output trace mechanism and
3828has a much larger code and data size.
3829
3830  Current Release:
3831    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
3832    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
3833  Previous Release:
3834    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
3835    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
3836
3837
38382) iASL Compiler/Disassembler and Tools:
3839
3840New utility: Implemented an easily portable version of the acpidump
3841utility to extract ACPI tables from the system (or a file) in an ASCII
3842hex
3843dump format. The top-level code implements the various command line
3844options, file I/O, and table dump routines. To port to a new host, only
3845three functions need to be implemented to get tables -- since this
3846functionality is OS-dependent. See the tools/acpidump/apmain.c module and
3847the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
38481) The Windows version obtains the ACPI tables from the Registry.
38492) The Linux version is under development.
38503) Other hosts - If an OS-dependent module is submitted, it will be
3851distributed with ACPICA.
3852
3853iASL: Fixed a regression for -D preprocessor option (define symbol). A
3854restructuring/change to the initialization sequence caused this option to
3855no longer work properly.
3856
3857iASL: Implemented a mechanism to disable specific warnings and remarks.
3858Adds a new command line option, "-vw <messageid> as well as "#pragma
3859disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
3860
3861iASL: Fix for too-strict package object validation. The package object
3862validation for return values from the predefined names is a bit too
3863strict, it does not allow names references within the package (which will
3864be resolved at runtime.) These types of references cannot be validated at
3865compile time. This change ignores named references within package objects
3866for names that return or define static packages.
3867
3868Debugger: Fixed the 80-character command line limitation for the History
3869command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
3870
3871iASL: Added control method and package support for the -so option
3872(generates AML offset table for BIOS support.)
3873
3874iASL: issue a remark if a non-serialized method creates named objects. If
3875a thread blocks within the method for any reason, and another thread
3876enters the method, the method will fail because an attempt will be made
3877to
3878create the same (named) object twice. In this case, issue a remark that
3879the method should be marked serialized. NOTE: may become a warning later.
3880ACPICA BZ 909.
3881
3882----------------------------------------
388318 April 2013. Summary of changes for version 20130418:
3884
38851) ACPICA kernel-resident subsystem:
3886
3887Fixed a possible buffer overrun during some rare but specific field unit
3888read operations. This overrun can only happen if the DSDT version is 1 --
3889meaning that all AML integers are 32 bits -- and the field length is
3890between 33 and 55 bits long. During the read, an internal buffer object
3891is
3892created for the field unit because the field is larger than an integer
3893(32
3894bits). However, in this case, the buffer will be incorrectly written
3895beyond the end because the buffer length is less than the internal
3896minimum
3897of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
3898long, but a full 8 bytes will be written.
3899
3900Updated the Embedded Controller "orphan" _REG method support. This refers
3901to _REG methods under the EC device that have no corresponding operation
3902region. This is allowed by the ACPI specification. This update removes a
3903dependency on the existence an ECDT table. It will execute an orphan _REG
3904method as long as the operation region handler for the EC is installed at
3905the EC device node and not the namespace root. Rui Zhang (original
3906update), Bob Moore (update/integrate).
3907
3908Implemented run-time argument typechecking for all predefined ACPI names
3909(_STA, _BIF, etc.) This change performs object typechecking on all
3910incoming arguments for all predefined names executed via
3911AcpiEvaluateObject. This ensures that ACPI-related device drivers are
3912passing correct object types as well as the correct number of arguments
3913(therefore identifying any issues immediately). Also, the ASL/namespace
3914definition of the predefined name is checked against the ACPI
3915specification for the proper argument count. Adds one new file,
3916nsarguments.c
3917
3918Changed an exception code for the ASL UnLoad() operator. Changed the
3919exception code for the case where the input DdbHandle is invalid, from
3920AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
3921
3922Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
3923global makefile. The use of this flag causes compiler errors on earlier
3924versions of GCC, so it has been removed for compatibility.
3925
3926Miscellaneous cleanup:
39271) Removed some unused/obsolete macros
39282) Fixed a possible memory leak in the _OSI support
39293) Removed an unused variable in the predefined name support
39304) Windows OSL: remove obsolete reference to a memory list field
3931
3932Example Code and Data Size: These are the sizes for the OS-independent
3933acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3934debug version of the code includes the debug output trace mechanism and
3935has a much larger code and data size.
3936
3937  Current Release:
3938    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
3939    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
3940  Previous Release:
3941    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
3942    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
3943
3944
39452) iASL Compiler/Disassembler and Tools:
3946
3947AcpiExec: Added installation of a handler for the SystemCMOS address
3948space. This prevents control method abort if a method accesses this
3949space.
3950
3951AcpiExec: Added support for multiple EC devices, and now install EC
3952operation region handler(s) at the actual EC device instead of the
3953namespace root. This reflects the typical behavior of host operating
3954systems.
3955
3956AcpiExec: Updated to ensure that all operation region handlers are
3957installed before the _REG methods are executed. This prevents a _REG
3958method from aborting if it accesses an address space has no handler.
3959AcpiExec installs a handler for every possible address space.
3960
3961Debugger: Enhanced the "handlers" command to display non-root handlers.
3962This change enhances the handlers command to display handlers associated
3963with individual devices throughout the namespace, in addition to the
3964currently supported display of handlers associated with the root
3965namespace
3966node.
3967
3968ASL Test Suite: Several test suite errors have been identified and
3969resolved, reducing the total error count during execution. Chao Guan.
3970
3971----------------------------------------
397228 March 2013. Summary of changes for version 20130328:
3973
39741) ACPICA kernel-resident subsystem:
3975
3976Fixed several possible race conditions with the internal object reference
3977counting mechanism. Some of the external ACPICA interfaces update object
3978reference counts without holding the interpreter or namespace lock. This
3979change adds a spinlock to protect reference count updates on the internal
3980ACPICA objects. Reported by and with assistance from Andriy Gapon
3981(avg@FreeBSD.org).
3982
3983FADT support: Removed an extraneous warning for very large GPE register
3984sets. This change removes a size mismatch warning if the legacy length
3985field for a GPE register set is larger than the 64-bit GAS structure can
3986accommodate. GPE register sets can be larger than the 255-bit width
3987limitation of the GAS structure. Linn Crosetto (linn@hp.com).
3988
3989_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
3990return from this interface. Handles a possible timeout case if
3991ACPI_WAIT_FOREVER is modified by the host to be a value less than
3992"forever". Jung-uk Kim.
3993
3994Predefined name support: Add allowed/required argument type information
3995to
3996the master predefined info table. This change adds the infrastructure to
3997enable typechecking on incoming arguments for all predefined
3998methods/objects. It does not actually contain the code that will fully
3999utilize this information, this is still under development. Also condenses
4000some duplicate code for the predefined names into a new module,
4001utilities/utpredef.c
4002
4003Example Code and Data Size: These are the sizes for the OS-independent
4004acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4005debug version of the code includes the debug output trace mechanism and
4006has a much larger code and data size.
4007
4008  Previous Release:
4009    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
4010    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
4011  Current Release:
4012    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
4013    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
4014
4015
40162) iASL Compiler/Disassembler and Tools:
4017
4018iASL: Implemented a new option to simplify the development of ACPI-
4019related
4020BIOS code. Adds support for a new "offset table" output file. The -so
4021option will create a C table containing the AML table offsets of various
4022named objects in the namespace so that BIOS code can modify them easily
4023at
4024boot time. This can simplify BIOS runtime code by eliminating expensive
4025searches for "magic values", enhancing boot times and adding greater
4026reliability. With assistance from Lee Hamel.
4027
4028iASL: Allow additional predefined names to return zero-length packages.
4029Now, all predefined names that are defined by the ACPI specification to
4030return a "variable-length package of packages" are allowed to return a
4031zero length top-level package. This allows the BIOS to tell the host that
4032the requested feature is not supported, and supports existing BIOS/ASL
4033code and practices.
4034
4035iASL: Changed the "result not used" warning to an error. This is the case
4036where an ASL operator is effectively a NOOP because the result of the
4037operation is not stored anywhere. For example:
4038    Add (4, Local0)
4039There is no target (missing 3rd argument), nor is the function return
4040value used. This is potentially a very serious problem -- since the code
4041was probably intended to do something, but for whatever reason, the value
4042was not stored. Therefore, this issue has been upgraded from a warning to
4043an error.
4044
4045AcpiHelp: Added allowable/required argument types to the predefined names
4046info display. This feature utilizes the recent update to the predefined
4047names table (above).
4048
4049----------------------------------------
405014 February 2013. Summary of changes for version 20130214:
4051
40521) ACPICA Kernel-resident Subsystem:
4053
4054Fixed a possible regression on some hosts: Reinstated the safe return
4055macros (return_ACPI_STATUS, etc.) that ensure that the argument is
4056evaluated only once. Although these macros are not needed for the ACPICA
4057code itself, they are often used by ACPI-related host device drivers
4058where
4059the safe feature may be necessary.
4060
4061Fixed several issues related to the ACPI 5.0 reduced hardware support
4062(SOC): Now ensure that if the platform declares itself as hardware-
4063reduced
4064via the FADT, the following functions become NOOPs (and always return
4065AE_OK) because ACPI is always enabled by definition on these machines:
4066  AcpiEnable
4067  AcpiDisable
4068  AcpiHwGetMode
4069  AcpiHwSetMode
4070
4071Dynamic Object Repair: Implemented additional runtime repairs for
4072predefined name return values. Both of these repairs can simplify code in
4073the related device drivers that invoke these methods:
40741) For the _STR and _MLS names, automatically repair/convert an ASCII
4075string to a Unicode buffer.
40762) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
4077a
4078lone end tag descriptor in the following cases: A Return(0) was executed,
4079a null buffer was returned, or no object at all was returned (non-slack
4080mode only). Adds a new file, nsconvert.c
4081ACPICA BZ 998. Bob Moore, Lv Zheng.
4082
4083Resource Manager: Added additional code to prevent possible infinite
4084loops
4085while traversing corrupted or ill-formed resource template buffers. Check
4086for zero-length resource descriptors in all code that loops through
4087resource templates (the length field is used to index through the
4088template). This change also hardens the external AcpiWalkResources and
4089AcpiWalkResourceBuffer interfaces.
4090
4091Local Cache Manager: Enhanced the main data structure to eliminate an
4092unnecessary mechanism to access the next object in the list. Actually
4093provides a small performance enhancement for hosts that use the local
4094ACPICA cache manager. Jung-uk Kim.
4095
4096Example Code and Data Size: These are the sizes for the OS-independent
4097acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4098debug version of the code includes the debug output trace mechanism and
4099has a much larger code and data size.
4100
4101  Previous Release:
4102    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
4103    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
4104  Current Release:
4105    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
4106    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
4107
4108
41092) iASL Compiler/Disassembler and Tools:
4110
4111iASL/Disassembler: Fixed several issues with the definition of the ACPI
41125.0 RASF table (RAS Feature Table). This change incorporates late changes
4113that were made to the ACPI 5.0 specification.
4114
4115iASL/Disassembler: Added full support for the following new ACPI tables:
4116  1) The MTMR table (MID Timer Table)
4117  2) The VRTC table (Virtual Real Time Clock Table).
4118Includes header file, disassembler, table compiler, and template support
4119for both tables.
4120
4121iASL: Implemented compile-time validation of package objects returned by
4122predefined names. This new feature validates static package objects
4123returned by the various predefined names defined to return packages. Both
4124object types and package lengths are validated, for both parent packages
4125and sub-packages, if any. The code is similar in structure and behavior
4126to
4127the runtime repair mechanism within the AML interpreter and uses the
4128existing predefined name information table. Adds a new file, aslprepkg.c.
4129ACPICA BZ 938.
4130
4131iASL: Implemented auto-detection of binary ACPI tables for disassembly.
4132This feature detects a binary file with a valid ACPI table header and
4133invokes the disassembler automatically. Eliminates the need to
4134specifically invoke the disassembler with the -d option. ACPICA BZ 862.
4135
4136iASL/Disassembler: Added several warnings for the case where there are
4137unresolved control methods during the disassembly. This can potentially
4138cause errors when the output file is compiled, because the disassembler
4139assumes zero method arguments in these cases (it cannot determine the
4140actual number of arguments without resolution/definition of the method).
4141
4142Debugger: Added support to display all resources with a single command.
4143Invocation of the resources command with no arguments will now display
4144all
4145resources within the current namespace.
4146
4147AcpiHelp: Added descriptive text for each ACPICA exception code displayed
4148via the -e option.
4149
4150----------------------------------------
415117 January 2013. Summary of changes for version 20130117:
4152
41531) ACPICA Kernel-resident Subsystem:
4154
4155Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
4156return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
4157objects to return a package containing one integer, most BIOS code
4158returns
4159two integers and the previous code reflects that. However, we also need
4160to
4161support BIOS code that actually implements to the ACPI spec, and this
4162change reflects this.
4163
4164Fixed two issues with the ACPI_DEBUG_PRINT macros:
41651) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
4166C compilers that require this support.
41672) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
4168ACPI_DEBUG is already used by many of the various hosts.
4169
4170Updated all ACPICA copyrights and signons to 2013. Added the 2013
4171copyright to all module headers and signons, including the standard Linux
4172header. This affects virtually every file in the ACPICA core subsystem,
4173iASL compiler, all ACPICA utilities, and the test suites.
4174
4175Example Code and Data Size: These are the sizes for the OS-independent
4176acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4177debug version of the code includes the debug output trace mechanism and
4178has a much larger code and data size.
4179
4180  Previous Release:
4181    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
4182    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
4183  Current Release:
4184    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
4185    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
4186
4187
41882) iASL Compiler/Disassembler and Tools:
4189
4190Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
4191prevent a possible fault on some hosts. Some C libraries modify the arg
4192pointer parameter to vfprintf making it difficult to call it twice in the
4193AcpiOsVprintf function. Use a local buffer to workaround this issue. This
4194does not affect the Windows OSL since the Win C library does not modify
4195the arg pointer. Chao Guan, Bob Moore.
4196
4197iASL: Fixed a possible infinite loop when the maximum error count is
4198reached. If an output file other than the .AML file is specified (such as
4199a listing file), and the maximum number of errors is reached, do not
4200attempt to flush data to the output file(s) as the compiler is aborting.
4201This can cause an infinite loop as the max error count code essentially
4202keeps calling itself.
4203
4204iASL/Disassembler: Added an option (-in) to ignore NOOP
4205opcodes/operators.
4206Implemented for both the compiler and the disassembler. Often, the NOOP
4207opcode is used as padding for packages that are changed dynamically by
4208the
4209BIOS. When disassembled and recompiled, these NOOPs will cause syntax
4210errors. This option causes the disassembler to ignore all NOOP opcodes
4211(0xA3), and it also causes the compiler to ignore all ASL source code
4212NOOP
4213statements as well.
4214
4215Debugger: Enhanced the Sleep command to execute all sleep states. This
4216change allows Sleep to be invoked with no arguments and causes the
4217debugger to execute all of the sleep states, 0-5, automatically.
4218
4219----------------------------------------
422020 December 2012. Summary of changes for version 20121220:
4221
42221) ACPICA Kernel-resident Subsystem:
4223
4224Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
4225alternate entry point for AcpiWalkResources and improves the usability of
4226the resource manager by accepting as input a buffer containing the output
4227of either a _CRS, _PRS, or _AEI method. The key functionality is that the
4228input buffer is not deleted by this interface so that it can be used by
4229the host later. See the ACPICA reference for details.
4230
4231Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
4232(DSDT version < 2). The constant will be truncated and this warning
4233reflects that behavior.
4234
4235Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
4236ExtendedInterrupt, and GpioInt descriptors. This change adds support to
4237both get and set the new wake bit in these descriptors, separately from
4238the existing share bit. Reported by Aaron Lu.
4239
4240Interpreter: Fix Store() when an implicit conversion is not possible. For
4241example, in the cases such as a store of a string to an existing package
4242object, implement the store as a CopyObject(). This is a small departure
4243from the ACPI specification which states that the control method should
4244be
4245aborted in this case. However, the ASLTS suite depends on this behavior.
4246
4247Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
4248macros: check if debug output is currently enabled as soon as possible to
4249minimize performance impact if debug is in fact not enabled.
4250
4251Source code restructuring: Cleanup to improve modularity. The following
4252new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
4253psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
4254Associated makefiles and project files have been updated.
4255
4256Changed an exception code for LoadTable operator. For the case where one
4257of the input strings is too long, change the returned exception code from
4258AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
4259
4260Fixed a possible memory leak in dispatcher error path. On error, delete
4261the mutex object created during method mutex creation. Reported by
4262tim.gardner@canonical.com.
4263
4264Example Code and Data Size: These are the sizes for the OS-independent
4265acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4266debug version of the code includes the debug output trace mechanism and
4267has a much larger code and data size.
4268
4269  Previous Release:
4270    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
4271    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
4272  Current Release:
4273    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
4274    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
4275
4276
42772) iASL Compiler/Disassembler and Tools:
4278
4279iASL: Disallow a method call as argument to the ObjectType ASL operator.
4280This change tracks an errata to the ACPI 5.0 document. The AML grammar
4281will not allow the interpreter to differentiate between a method and a
4282method invocation when these are used as an argument to the ObjectType
4283operator. The ACPI specification change is to disallow a method
4284invocation
4285(UserTerm) for the ObjectType operator.
4286
4287Finish support for the TPM2 and CSRT tables in the headers, table
4288compiler, and disassembler.
4289
4290Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
4291always expires immediately if the semaphore is not available. The
4292original
4293code was using a relative-time timeout, but sem_timedwait requires the
4294use
4295of an absolute time.
4296
4297iASL: Added a remark if the Timer() operator is used within a 32-bit
4298table. This operator returns a 64-bit time value that will be truncated
4299within a 32-bit table.
4300
4301iASL Source code restructuring: Cleanup to improve modularity. The
4302following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
4303aslmethod.c, and aslfileio.c. Associated makefiles and project files have
4304been updated.
4305
4306
4307----------------------------------------
430814 November 2012. Summary of changes for version 20121114:
4309
43101) ACPICA Kernel-resident Subsystem:
4311
4312Implemented a performance enhancement for ACPI/AML Package objects. This
4313change greatly increases the performance of Package objects within the
4314interpreter. It changes the processing of reference counts for packages
4315by
4316optimizing for the most common case where the package sub-objects are
4317either Integers, Strings, or Buffers. Increases the overall performance
4318of
4319the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
43202X.)
4321Chao Guan. ACPICA BZ 943.
4322
4323Implemented and deployed common macros to extract flag bits from resource
4324descriptors. Improves readability and maintainability of the code. Fixes
4325a
4326problem with the UART serial bus descriptor for the number of data bits
4327flags (was incorrectly 2 bits, should be 3).
4328
4329Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
4330of the macros and changed the SETx macros to the style of (destination,
4331source). Also added ACPI_CASTx companion macros. Lv Zheng.
4332
4333Example Code and Data Size: These are the sizes for the OS-independent
4334acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4335debug version of the code includes the debug output trace mechanism and
4336has a much larger code and data size.
4337
4338  Previous Release:
4339    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
4340    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
4341  Current Release:
4342    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
4343    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
4344
4345
43462) iASL Compiler/Disassembler and Tools:
4347
4348Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
4349adds the ShareAndWake and ExclusiveAndWake flags which were added to the
4350Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
4351
4352Disassembler: Fixed a problem with external declaration generation. Fixes
4353a problem where an incorrect pathname could be generated for an external
4354declaration if the original reference to the object includes leading
4355carats (^). ACPICA BZ 984.
4356
4357Debugger: Completed a major update for the Disassemble<method> command.
4358This command was out-of-date and did not properly disassemble control
4359methods that had any reasonable complexity. This fix brings the command
4360up
4361to the same level as the rest of the disassembler. Adds one new file,
4362dmdeferred.c, which is existing code that is now common with the main
4363disassembler and the debugger disassemble command. ACPICA MZ 978.
4364
4365iASL: Moved the parser entry prototype to avoid a duplicate declaration.
4366Newer versions of Bison emit this prototype, so moved the prototype out
4367of
4368the iASL header to where it is actually used in order to avoid a
4369duplicate
4370declaration.
4371
4372iASL/Tools: Standardized use of the stream I/O functions:
4373  1) Ensure check for I/O error after every fopen/fread/fwrite
4374  2) Ensure proper order of size/count arguments for fread/fwrite
4375  3) Use test of (Actual != Requested) after all fwrite, and most fread
4376  4) Standardize I/O error messages
4377Improves reliability and maintainability of the code. Bob Moore, Lv
4378Zheng.
4379ACPICA BZ 981.
4380
4381Disassembler: Prevent duplicate External() statements. During generation
4382of external statements, detect similar pathnames that are actually
4383duplicates such as these:
4384  External (\ABCD)
4385  External (ABCD)
4386Remove all leading '\' characters from pathnames during the external
4387statement generation so that duplicates will be detected and tossed.
4388ACPICA BZ 985.
4389
4390Tools: Replace low-level I/O with stream I/O functions. Replace
4391open/read/write/close with the stream I/O equivalents
4392fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
4393Moore.
4394
4395AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
4396name header so that AcpiXtract recognizes the output file/table.
4397
4398iASL: Remove obsolete -2 option flag. Originally intended to force the
4399compiler/disassembler into an ACPI 2.0 mode, this was never implemented
4400and the entire concept is now obsolete.
4401
4402----------------------------------------
440318 October 2012. Summary of changes for version 20121018:
4404
4405
44061) ACPICA Kernel-resident Subsystem:
4407
4408Updated support for the ACPI 5.0 MPST table. Fixes some problems
4409introduced by late changes to the table as it was added to the ACPI 5.0
4410specification. Includes header, disassembler, and data table compiler
4411support as well as a new version of the MPST template.
4412
4413AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
44145.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
4415methods: _HID, _CID, and _UID.
4416
4417Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
4418ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
4419name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
4420names for their various drivers. Affects the AcpiGetObjectInfo external
4421interface, and other internal interfaces as well.
4422
4423Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
4424This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
4425on machines that support non-aligned transfers. Optimizes for this case
4426rather than using a strncpy. With assistance from Zheng Lv.
4427
4428Resource Manager: Small fix for buffer size calculation. Fixed a one byte
4429error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
4430
4431Added a new debug print message for AML mutex objects that are force-
4432released. At control method termination, any currently acquired mutex
4433objects are force-released. Adds a new debug-only message for each one
4434that is released.
4435
4436Audited/updated all ACPICA return macros and the function debug depth
4437counter: 1) Ensure that all functions that use the various TRACE macros
4438also use the appropriate ACPICA return macros. 2) Ensure that all normal
4439return statements surround the return expression (value) with parens to
4440ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
4441Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
4442
4443Global source code changes/maintenance: All extra lines at the start and
4444end of each source file have been removed for consistency. Also, within
4445comments, all new sentences start with a single space instead of a double
4446space, again for consistency across the code base.
4447
4448Example Code and Data Size: These are the sizes for the OS-independent
4449acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4450debug version of the code includes the debug output trace mechanism and
4451has a much larger code and data size.
4452
4453  Previous Release:
4454    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
4455    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
4456  Current Release:
4457    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
4458    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
4459
4460
44612) iASL Compiler/Disassembler and Tools:
4462
4463AcpiExec: Improved the algorithm used for memory leak/corruption
4464detection. Added some intelligence to the code that maintains the global
4465list of allocated memory. The list is now ordered by allocated memory
4466address, significantly improving performance. When running AcpiExec on
4467the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
4468on the platform and/or the environment. Note, this performance
4469enhancement affects the AcpiExec utility only, not the kernel-resident
4470ACPICA code.
4471
4472Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
4473the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
4474incorrect table offset reported for invalid opcodes. Report the original
447532-bit value for bad ACPI_NAMEs (as well as the repaired name.)
4476
4477Disassembler: Enhanced the -vt option to emit the binary table data in
4478hex format to assist with debugging.
4479
4480Fixed a potential filename buffer overflow in osunixdir.c. Increased the
4481size of file structure. Colin Ian King.
4482
4483----------------------------------------
448413 September 2012. Summary of changes for version 20120913:
4485
4486
44871) ACPICA Kernel-resident Subsystem:
4488
4489ACPI 5.0: Added two new notify types for the Hardware Error Notification
4490Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
4491and
4492MCE(6).
4493
4494Table Manager: Merged/removed duplicate code in the root table resize
4495functions. One function is external, the other is internal. Lv Zheng,
4496ACPICA
4497BZ 846.
4498
4499Makefiles: Completely removed the obsolete "Linux" makefiles under
4500acpica/generate/linux. These makefiles are obsolete and have been
4501replaced
4502by
4503the generic unix makefiles under acpica/generate/unix.
4504
4505Makefiles: Ensure that binary files always copied properly. Minor rule
4506change
4507to ensure that the final binary output files are always copied up to the
4508appropriate binary directory (bin32 or bin64.)
4509
4510Example Code and Data Size: These are the sizes for the OS-independent
4511acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4512debug
4513version of the code includes the debug output trace mechanism and has a
4514much
4515larger code and data size.
4516
4517  Previous Release:
4518    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
4519    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
4520  Current Release:
4521    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
4522    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
4523
4524
45252) iASL Compiler/Disassembler and Tools:
4526
4527Disassembler: Fixed a possible fault during the disassembly of resource
4528descriptors when a second parse is required because of the invocation of
4529external control methods within the table. With assistance from
4530adq@lidskialf.net. ACPICA BZ 976.
4531
4532iASL: Fixed a namepath optimization problem. An error can occur if the
4533parse
4534node that contains the namepath to be optimized does not have a parent
4535node
4536that is a named object. This change fixes the problem.
4537
4538iASL: Fixed a regression where the AML file is not deleted on errors. The
4539AML
4540output file should be deleted if there are any errors during the
4541compiler.
4542The
4543only exception is if the -f (force output) option is used. ACPICA BZ 974.
4544
4545iASL: Added a feature to automatically increase internal line buffer
4546sizes.
4547Via realloc(), automatically increase the internal line buffer sizes as
4548necessary to support very long source code lines. The current version of
4549the
4550preprocessor requires a buffer long enough to contain full source code
4551lines.
4552This change increases the line buffer(s) if the input lines go beyond the
4553current buffer size. This eliminates errors that occurred when a source
4554code
4555line was longer than the buffer.
4556
4557iASL: Fixed a problem with constant folding in method declarations. The
4558SyncLevel term is a ByteConstExpr, and incorrect code would be generated
4559if a
4560Type3 opcode was used.
4561
4562Debugger: Improved command help support. For incorrect argument count,
4563display
4564full help for the command. For help command itself, allow an argument to
4565specify a command.
4566
4567Test Suites: Several bug fixes for the ASLTS suite reduces the number of
4568errors during execution of the suite. Guan Chao.
4569
4570----------------------------------------
457116 August 2012. Summary of changes for version 20120816:
4572
4573
45741) ACPICA Kernel-resident Subsystem:
4575
4576Removed all use of the deprecated _GTS and _BFS predefined methods. The
4577_GTS
4578(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
4579deprecated and will probably be removed from the ACPI specification.
4580Windows
4581does not invoke them, and reportedly never will. The final nail in the
4582coffin
4583is that the ACPI specification states that these methods must be run with
4584interrupts off, which is not going to happen in a kernel interpreter.
4585Note:
4586Linux has removed all use of the methods also. It was discovered that
4587invoking these functions caused failures on some machines, probably
4588because
4589they were never tested since Windows does not call them. Affects two
4590external
4591interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
4592ACPICA BZ 969.
4593
4594Implemented support for complex bit-packed buffers returned from the _PLD
4595(Physical Location of Device) predefined method. Adds a new external
4596interface, AcpiDecodePldBuffer that parses the buffer into a more usable
4597C
4598structure. Note: C Bitfields cannot be used for this type of predefined
4599structure since the memory layout of individual bitfields is not defined
4600by
4601the C language. In addition, there are endian concerns where a compiler
4602will
4603change the bitfield ordering based on the machine type. The new ACPICA
4604interface eliminates these issues, and should be called after _PLD is
4605executed. ACPICA BZ 954.
4606
4607Implemented a change to allow a scope change to root (via "Scope (\)")
4608during
4609execution of module-level ASL code (code that is executed at table load
4610time.) Lin Ming.
4611
4612Added the Windows8/Server2012 string for the _OSI method. This change
4613adds
4614a
4615new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
46162012.
4617
4618Added header support for the new ACPI tables DBG2 (Debug Port Table Type
46192)
4620and CSRT (Core System Resource Table).
4621
4622Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
4623names. This simplifies access to the buffers returned by these predefined
4624names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
4625
4626GPE support: Removed an extraneous parameter from the various low-level
4627internal GPE functions. Tang Feng.
4628
4629Removed the linux makefiles from the unix packages. The generate/linux
4630makefiles are obsolete and have been removed from the unix tarball
4631release
4632packages. The replacement makefiles are under generate/unix, and there is
4633a
4634top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
4635
4636Updates for Unix makefiles:
46371) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
46382) Update linker flags (move to end of command line) for AcpiExec
4639utility.
4640Guan Chao.
4641
4642Split ACPICA initialization functions to new file, utxfinit.c. Split from
4643utxface.c to improve modularity and reduce file size.
4644
4645Example Code and Data Size: These are the sizes for the OS-independent
4646acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4647debug version of the code includes the debug output trace mechanism and
4648has a
4649much larger code and data size.
4650
4651  Previous Release:
4652    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
4653    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
4654  Current Release:
4655    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
4656    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
4657
4658
46592) iASL Compiler/Disassembler and Tools:
4660
4661iASL: Fixed a problem with constant folding for fixed-length constant
4662expressions. The constant-folding code was not being invoked for constant
4663expressions that allow the use of type 3/4/5 opcodes to generate
4664constants
4665for expressions such as ByteConstExpr, WordConstExpr, etc. This could
4666result
4667in the generation of invalid AML bytecode. ACPICA BZ 970.
4668
4669iASL: Fixed a generation issue on newer versions of Bison. Newer versions
4670apparently automatically emit some of the necessary externals. This
4671change
4672handles these versions in order to eliminate generation warnings.
4673
4674Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
4675
4676Disassembler: Add support to decode _PLD buffers. The decoded buffer
4677appears
4678within comments in the output file.
4679
4680Debugger: Fixed a regression with the "Threads" command where
4681AE_BAD_PARAMETER was always returned.
4682
4683----------------------------------------
468411 July 2012. Summary of changes for version 20120711:
4685
46861) ACPICA Kernel-resident Subsystem:
4687
4688Fixed a possible fault in the return package object repair code. Fixes a
4689problem that can occur when a lone package object is wrapped with an
4690outer
4691package object in order to force conformance to the ACPI specification.
4692Can
4693affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
4694_DLM,
4695_CSD, _PSD, _TSD.
4696
4697Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
4698PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
4699ARB_DIS bit must be implemented in the host-dependent C3 processor power
4700state
4701support. Note, ARB_DIS is obsolete and only applies to older chipsets,
4702both
4703Intel and other vendors. (for Intel: ICH4-M and earlier)
4704
4705This change removes the code to disable/enable bus master arbitration
4706during
4707suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
4708causes
4709resume problems on some machines. The change has been in use for over
4710seven
4711years within Linux.
4712
4713Implemented two new external interfaces to support host-directed dynamic
4714ACPI
4715table load and unload. They are intended to simplify the host
4716implementation
4717of hot-plug support:
4718  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
4719  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
4720table.
4721See the ACPICA reference for additional details. Adds one new file,
4722components/tables/tbxfload.c
4723
4724Implemented and deployed two new interfaces for errors and warnings that
4725are
4726known to be caused by BIOS/firmware issues:
4727  AcpiBiosError: Prints "ACPI Firmware Error" message.
4728  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
4729Deployed these new interfaces in the ACPICA Table Manager code for ACPI
4730table
4731and FADT errors. Additional deployment to be completed as appropriate in
4732the
4733future. The associated conditional macros are ACPI_BIOS_ERROR and
4734ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
4735ACPICA
4736BZ
4737843.
4738
4739Implicit notify support: ensure that no memory allocation occurs within a
4740critical region. This fix moves a memory allocation outside of the time
4741that a
4742spinlock is held. Fixes issues on systems that do not allow this
4743behavior.
4744Jung-uk Kim.
4745
4746Split exception code utilities and tables into a new file,
4747utilities/utexcep.c
4748
4749Example Code and Data Size: These are the sizes for the OS-independent
4750acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4751debug
4752version of the code includes the debug output trace mechanism and has a
4753much
4754larger code and data size.
4755
4756  Previous Release:
4757    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
4758    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
4759  Current Release:
4760    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
4761    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
4762
4763
47642) iASL Compiler/Disassembler and Tools:
4765
4766iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
4767of
47680. Jung-uk Kim.
4769
4770Debugger: Enhanced the "tables" command to emit additional information
4771about
4772the current set of ACPI tables, including the owner ID and flags decode.
4773
4774Debugger: Reimplemented the "unload" command to use the new
4775AcpiUnloadParentTable external interface. This command was disable
4776previously
4777due to need for an unload interface.
4778
4779AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
4780option
4781will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
4782
4783----------------------------------------
478420 June 2012. Summary of changes for version 20120620:
4785
4786
47871) ACPICA Kernel-resident Subsystem:
4788
4789Implemented support to expand the "implicit notify" feature to allow
4790multiple
4791devices to be notified by a single GPE. This feature automatically
4792generates a
4793runtime device notification in the absence of a BIOS-provided GPE control
4794method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
4795notify is
4796provided by ACPICA for Windows compatibility, and is a workaround for
4797BIOS
4798AML
4799code errors. See the description of the AcpiSetupGpeForWake interface in
4800the
4801APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
4802
4803Changed some comments and internal function names to simplify and ensure
4804correctness of the Linux code translation. No functional changes.
4805
4806Example Code and Data Size: These are the sizes for the OS-independent
4807acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4808debug
4809version of the code includes the debug output trace mechanism and has a
4810much
4811larger code and data size.
4812
4813  Previous Release:
4814    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
4815    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
4816  Current Release:
4817    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
4818    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
4819
4820
48212) iASL Compiler/Disassembler and Tools:
4822
4823Disassembler: Added support to emit short, commented descriptions for the
4824ACPI
4825predefined names in order to improve the readability of the disassembled
4826output. ACPICA BZ 959. Changes include:
4827  1) Emit descriptions for all standard predefined names (_INI, _STA,
4828_PRW,
4829etc.)
4830  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
4831  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
4832etc.)
4833
4834AcpiSrc: Fixed several long-standing Linux code translation issues.
4835Argument
4836descriptions in function headers are now translated properly to lower
4837case
4838and
4839underscores. ACPICA BZ 961. Also fixes translation problems such as
4840these:
4841(old -> new)
4842  i_aSL -> iASL
4843  00-7_f -> 00-7F
4844  16_k -> 16K
4845  local_fADT -> local_FADT
4846  execute_oSI -> execute_OSI
4847
4848iASL: Fixed a problem where null bytes were inadvertently emitted into
4849some
4850listing files.
4851
4852iASL: Added the existing debug options to the standard help screen. There
4853are
4854no longer two different help screens. ACPICA BZ 957.
4855
4856AcpiHelp: Fixed some typos in the various predefined name descriptions.
4857Also
4858expand some of the descriptions where appropriate.
4859
4860iASL: Fixed the -ot option (display compile times/statistics). Was not
4861working
4862properly for standard output; only worked for the debug file case.
4863
4864----------------------------------------
486518 May 2012. Summary of changes for version 20120518:
4866
4867
48681) ACPICA Core Subsystem:
4869
4870Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
4871defined
4872to block until asynchronous events such as notifies and GPEs have
4873completed.
4874Within ACPICA, it is only called before a notify or GPE handler is
4875removed/uninstalled. It also may be useful for the host OS within related
4876drivers such as the Embedded Controller driver. See the ACPICA reference
4877for
4878additional information. ACPICA BZ 868.
4879
4880ACPI Tables: Added a new error message for a possible overflow failure
4881during
4882the conversion of FADT 32-bit legacy register addresses to internal
4883common
488464-
4885bit GAS structure representation. The GAS has a one-byte "bit length"
4886field,
4887thus limiting the register length to 255 bits. ACPICA BZ 953.
4888
4889Example Code and Data Size: These are the sizes for the OS-independent
4890acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4891debug
4892version of the code includes the debug output trace mechanism and has a
4893much
4894larger code and data size.
4895
4896  Previous Release:
4897    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
4898    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
4899  Current Release:
4900    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
4901    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
4902
4903
49042) iASL Compiler/Disassembler and Tools:
4905
4906iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
4907macro.
4908This keyword was added late in the ACPI 5.0 release cycle and was not
4909implemented until now.
4910
4911Disassembler: Added support for Operation Region externals. Adds missing
4912support for operation regions that are defined in another table, and
4913referenced locally via a Field or BankField ASL operator. Now generates
4914the
4915correct External statement.
4916
4917Disassembler: Several additional fixes for the External() statement
4918generation
4919related to some ASL operators. Also, order the External() statements
4920alphabetically in the disassembler output. Fixes the External()
4921generation
4922for
4923the Create* field, Alias, and Scope operators:
4924 1) Create* buffer field operators - fix type mismatch warning on
4925disassembly
4926 2) Alias - implement missing External support
4927 3) Scope - fix to make sure all necessary externals are emitted.
4928
4929iASL: Improved pathname support. For include files, merge the prefix
4930pathname
4931with the file pathname and eliminate unnecessary components. Convert
4932backslashes in all pathnames to forward slashes, for readability. Include
4933file
4934pathname changes affect both #include and Include() type operators.
4935
4936iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
4937end
4938of a valid line by inserting a newline and then returning the EOF during
4939the
4940next call to GetNextLine. Prevents the line from being ignored due to EOF
4941condition.
4942
4943iASL: Implemented some changes to enhance the IDE support (-vi option.)
4944Error
4945and Warning messages are now correctly recognized for both the source
4946code
4947browser and the global error and warning counts.
4948
4949----------------------------------------
495020 April 2012. Summary of changes for version 20120420:
4951
4952
49531) ACPICA Core Subsystem:
4954
4955Implemented support for multiple notify handlers. This change adds
4956support
4957to
4958allow multiple system and device notify handlers on Device, Thermal Zone,
4959and
4960Processor objects. This can simplify the host OS notification
4961implementation.
4962Also re-worked and restructured the entire notify support code to
4963simplify
4964handler installation, handler removal, notify event queuing, and notify
4965dispatch to handler(s). Note: there can still only be two global notify
4966handlers - one for system notifies and one for device notifies. There are
4967no
4968changes to the existing handler install/remove interfaces. Lin Ming, Bob
4969Moore, Rafael Wysocki.
4970
4971Fixed a regression in the package repair code where the object reference
4972count was calculated incorrectly. Regression was introduced in the commit
4973"Support to add Package wrappers".
4974
4975Fixed a couple possible memory leaks in the AML parser, in the error
4976recovery
4977path. Jesper Juhl, Lin Ming.
4978
4979Example Code and Data Size: These are the sizes for the OS-independent
4980acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4981debug version of the code includes the debug output trace mechanism and
4982has a
4983much larger code and data size.
4984
4985  Previous Release:
4986    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
4987    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
4988  Current Release:
4989    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
4990    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
4991
4992
49932) iASL Compiler/Disassembler and Tools:
4994
4995iASL: Fixed a problem with the resource descriptor support where the
4996length
4997of the StartDependentFn and StartDependentFnNoPrio descriptors were not
4998included in cumulative descriptor offset, resulting in incorrect values
4999for
5000resource tags within resource descriptors appearing after a
5001StartDependent*
5002descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
5003
5004iASL and Preprocessor: Implemented full support for the #line directive
5005to
5006correctly track original source file line numbers through the .i
5007preprocessor
5008output file - for error and warning messages.
5009
5010iASL: Expand the allowable byte constants for address space IDs.
5011Previously,
5012the allowable range was 0x80-0xFF (user-defined spaces), now the range is
50130x0A-0xFF to allow for custom and new IDs without changing the compiler.
5014
5015iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
5016
5017iASL: Add option to completely disable the preprocessor (-Pn).
5018
5019iASL: Now emit all error/warning messages to standard error (stderr) by
5020default (instead of the previous stdout).
5021
5022ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
5023Update
5024for resource descriptor offset fix above. Update/cleanup error output
5025routines. Enable and send iASL errors/warnings to an error logfile
5026(error.txt). Send all other iASL output to a logfile (compiler.txt).
5027Fixed
5028several extraneous "unrecognized operator" messages.
5029
5030----------------------------------------
503120 March 2012. Summary of changes for version 20120320:
5032
5033
50341) ACPICA Core Subsystem:
5035
5036Enhanced the sleep/wake interfaces to optionally execute the _GTS method
5037(Going To Sleep) and the _BFS method (Back From Sleep). Windows
5038apparently
5039does not execute these methods, and therefore these methods are often
5040untested. It has been seen on some systems where the execution of these
5041methods causes errors and also prevents the machine from entering S5. It
5042is
5043therefore suggested that host operating systems do not execute these
5044methods
5045by default. In the future, perhaps these methods can be optionally
5046executed
5047based on the age of the system and/or what is the newest version of
5048Windows
5049that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
5050and
5051AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
5052Ming.
5053
5054Fixed a problem where the length of the local/common FADT was set too
5055early.
5056The local FADT table length cannot be set to the common length until the
5057original length has been examined. There is code that checks the table
5058length
5059and sets various fields appropriately. This can affect older machines
5060with
5061early FADT versions. For example, this can cause inadvertent writes to
5062the
5063CST_CNT register. Julian Anastasov.
5064
5065Fixed a mapping issue related to a physical table override. Use the
5066deferred
5067mapping mechanism for tables loaded via the physical override OSL
5068interface.
5069This allows for early mapping before the virtual memory manager is
5070available.
5071Thomas Renninger, Bob Moore.
5072
5073Enhanced the automatic return-object repair code: Repair a common problem
5074with
5075predefined methods that are defined to return a variable-length Package
5076of
5077sub-objects. If there is only one sub-object, some BIOS ASL code
5078mistakenly
5079simply returns the single object instead of a Package with one sub-
5080object.
5081This new support will repair this error by wrapping a Package object
5082around
5083the original object, creating the correct and expected Package with one
5084sub-
5085object. Names that can be repaired in this manner include: _ALR, _CSD,
5086_HPX,
5087_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
5088939.
5089
5090Changed the exception code returned for invalid ACPI paths passed as
5091parameters to external interfaces such as AcpiEvaluateObject. Was
5092AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
5093
5094Example Code and Data Size: These are the sizes for the OS-independent
5095acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5096debug
5097version of the code includes the debug output trace mechanism and has a
5098much
5099larger code and data size.
5100
5101  Previous Release:
5102    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
5103    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
5104  Current Release:
5105    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
5106    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
5107
5108
51092) iASL Compiler/Disassembler and Tools:
5110
5111iASL: Added the infrastructure and initial implementation of a integrated
5112C-
5113like preprocessor. This will simplify BIOS development process by
5114eliminating
5115the need for a separate preprocessing step during builds. On Windows, it
5116also
5117eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
5118features including full #define() macro support are still under
5119development.
5120These preprocessor directives are supported:
5121    #define
5122    #elif
5123    #else
5124    #endif
5125    #error
5126    #if
5127    #ifdef
5128    #ifndef
5129    #include
5130    #pragma message
5131    #undef
5132    #warning
5133In addition, these new command line options are supported:
5134    -D <symbol> Define symbol for preprocessor use
5135    -li         Create preprocessed output file (*.i)
5136    -P          Preprocess only and create preprocessor output file (*.i)
5137
5138Table Compiler: Fixed a problem where the equals operator within an
5139expression
5140did not work properly.
5141
5142Updated iASL to use the current versions of Bison/Flex. Updated the
5143Windows
5144project file to invoke these tools from the standard location. ACPICA BZ
5145904.
5146Versions supported:
5147    Flex for Windows:  V2.5.4
5148    Bison for Windows: V2.4.1
5149
5150----------------------------------------
515115 February 2012. Summary of changes for version 20120215:
5152
5153
51541) ACPICA Core Subsystem:
5155
5156There have been some major changes to the sleep/wake support code, as
5157described below (a - e).
5158
5159a) The AcpiLeaveSleepState has been split into two interfaces, similar to
5160AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
5161AcpiLeaveSleepStatePrep. This allows the host to perform actions between
5162the
5163time the _BFS method is called and the _WAK method is called. NOTE: all
5164hosts
5165must update their wake/resume code or else sleep/wake will not work
5166properly.
5167Rafael Wysocki.
5168
5169b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
5170_WAK
5171method. Some machines require that the GPEs are enabled before the _WAK
5172method
5173is executed. Thomas Renninger.
5174
5175c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
5176bit.
5177Some BIOS code assumes that WAK_STS will be cleared on resume and use it
5178to
5179determine whether the system is rebooting or resuming. Matthew Garrett.
5180
5181d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
5182Sleep) to
5183match the ACPI specification requirement. Rafael Wysocki.
5184
5185e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
5186registers within the V5 FADT. This support adds two new files:
5187hardware/hwesleep.c implements the support for the new registers. Moved
5188all
5189sleep/wake external interfaces to hardware/hwxfsleep.c.
5190
5191
5192Added a new OSL interface for ACPI table overrides,
5193AcpiOsPhysicalTableOverride. This interface allows the host to override a
5194table via a physical address, instead of the logical address required by
5195AcpiOsTableOverride. This simplifies the host implementation. Initial
5196implementation by Thomas Renninger. The ACPICA implementation creates a
5197single
5198shared function for table overrides that attempts both a logical and a
5199physical override.
5200
5201Expanded the OSL memory read/write interfaces to 64-bit data
5202(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
5203transfer support for GAS register structures passed to AcpiRead and
5204AcpiWrite.
5205
5206Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
5207custom
5208build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
5209model.
5210See the ACPICA reference for details. ACPICA BZ 942. This option removes
5211about
521210% of the code and 5% of the static data, and the following hardware
5213ACPI
5214features become unavailable:
5215    PM Event and Control registers
5216    SCI interrupt (and handler)
5217    Fixed Events
5218    General Purpose Events (GPEs)
5219    Global Lock
5220    ACPI PM timer
5221    FACS table (Waking vectors and Global Lock)
5222
5223Updated the unix tarball directory structure to match the ACPICA git
5224source
5225tree. This ensures that the generic unix makefiles work properly (in
5226generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
5227867.
5228
5229Updated the return value of the _REV predefined method to integer value 5
5230to
5231reflect ACPI 5.0 support.
5232
5233Moved the external ACPI PM timer interface prototypes to the public
5234acpixf.h
5235file where they belong.
5236
5237Example Code and Data Size: These are the sizes for the OS-independent
5238acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5239debug
5240version of the code includes the debug output trace mechanism and has a
5241much
5242larger code and data size.
5243
5244  Previous Release:
5245    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
5246    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
5247  Current Release:
5248    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
5249    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
5250
5251
52522) iASL Compiler/Disassembler and Tools:
5253
5254Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
5255descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
5256incorrectly displayed.
5257
5258AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
5259specification.
5260
5261----------------------------------------
526211 January 2012. Summary of changes for version 20120111:
5263
5264
52651) ACPICA Core Subsystem:
5266
5267Implemented a new mechanism to allow host device drivers to check for
5268address
5269range conflicts with ACPI Operation Regions. Both SystemMemory and
5270SystemIO
5271address spaces are supported. A new external interface,
5272AcpiCheckAddressRange,
5273allows drivers to check an address range against the ACPI namespace. See
5274the
5275ACPICA reference for additional details. Adds one new file,
5276utilities/utaddress.c. Lin Ming, Bob Moore.
5277
5278Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
5279Control
5280and
5281Status registers, update the ACPI 5.0 flags, and update internal data
5282structures to handle an FADT larger than 256 bytes. The size of the ACPI
52835.0
5284FADT is 268 bytes.
5285
5286Updated all ACPICA copyrights and signons to 2012. Added the 2012
5287copyright to
5288all module headers and signons, including the standard Linux header. This
5289affects virtually every file in the ACPICA core subsystem, iASL compiler,
5290and
5291all ACPICA utilities.
5292
5293Example Code and Data Size: These are the sizes for the OS-independent
5294acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5295debug
5296version of the code includes the debug output trace mechanism and has a
5297much
5298larger code and data size.
5299
5300  Previous Release:
5301    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
5302    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
5303  Current Release:
5304    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
5305    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
5306
5307
53082) iASL Compiler/Disassembler and Tools:
5309
5310Disassembler: fixed a problem with the automatic resource tag generation
5311support. Fixes a problem where the resource tags are inadvertently not
5312constructed if the table being disassembled contains external references
5313to
5314control methods. Moved the actual construction of the tags to after the
5315final
5316namespace is constructed (after 2nd parse is invoked due to external
5317control
5318method references.) ACPICA BZ 941.
5319
5320Table Compiler: Make all "generic" operators caseless. These are the
5321operators
5322like UINT8, String, etc. Making these caseless improves ease-of-use.
5323ACPICA BZ
5324934.
5325
5326----------------------------------------
532723 November 2011. Summary of changes for version 20111123:
5328
53290) ACPI 5.0 Support:
5330
5331This release contains full support for the ACPI 5.0 specification, as
5332summarized below.
5333
5334Reduced Hardware Support:
5335-------------------------
5336
5337This support allows for ACPI systems without the usual ACPI hardware.
5338This
5339support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
5340will
5341not attempt to initialize or use any of the usual ACPI hardware. Note,
5342when
5343this flag is set, all of the following ACPI hardware is assumed to be not
5344present and is not initialized or accessed:
5345
5346    General Purpose Events (GPEs)
5347    Fixed Events (PM1a/PM1b and PM Control)
5348    Power Management Timer and Console Buttons (power/sleep)
5349    Real-time Clock Alarm
5350    Global Lock
5351    System Control Interrupt (SCI)
5352    The FACS is assumed to be non-existent
5353
5354ACPI Tables:
5355------------
5356
5357All new tables and updates to existing tables are fully supported in the
5358ACPICA headers (for use by device drivers), the disassembler, and the
5359iASL
5360Data Table Compiler. ACPI 5.0 defines these new tables:
5361
5362    BGRT        /* Boot Graphics Resource Table */
5363    DRTM        /* Dynamic Root of Trust for Measurement table */
5364    FPDT        /* Firmware Performance Data Table */
5365    GTDT        /* Generic Timer Description Table */
5366    MPST        /* Memory Power State Table */
5367    PCCT        /* Platform Communications Channel Table */
5368    PMTT        /* Platform Memory Topology Table */
5369    RASF        /* RAS Feature table */
5370
5371Operation Regions/SpaceIDs:
5372---------------------------
5373
5374All new operation regions are fully supported by the iASL compiler, the
5375disassembler, and the ACPICA runtime code (for dispatch to region
5376handlers.)
5377The new operation region Space IDs are:
5378
5379    GeneralPurposeIo
5380    GenericSerialBus
5381
5382Resource Descriptors:
5383---------------------
5384
5385All new ASL resource descriptors are fully supported by the iASL
5386compiler,
5387the
5388ASL/AML disassembler, and the ACPICA runtime Resource Manager code
5389(including
5390all new predefined resource tags). New descriptors are:
5391
5392    FixedDma
5393    GpioIo
5394    GpioInt
5395    I2cSerialBus
5396    SpiSerialBus
5397    UartSerialBus
5398
5399ASL/AML Operators, New and Modified:
5400------------------------------------
5401
5402One new operator is added, the Connection operator, which is used to
5403associate
5404a GeneralPurposeIo or GenericSerialBus resource descriptor with
5405individual
5406field objects within an operation region. Several new protocols are
5407associated
5408with the AccessAs operator. All are fully supported by the iASL compiler,
5409disassembler, and runtime ACPICA AML interpreter:
5410
5411    Connection                      // Declare Field Connection
5412attributes
5413    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
5414    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
5415Protocol
5416    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
5417    RawDataBuffer                       // Data type for Vendor Data
5418fields
5419
5420Predefined ASL/AML Objects:
5421---------------------------
5422
5423All new predefined objects/control-methods are supported by the iASL
5424compiler
5425and the ACPICA runtime validation/repair (arguments and return values.)
5426New
5427predefined names include the following:
5428
5429Standard Predefined Names (Objects or Control Methods):
5430    _AEI, _CLS, _CPC, _CWS, _DEP,
5431    _DLM, _EVT, _GCP, _CRT, _GWS,
5432    _HRV, _PRE, _PSE, _SRT, _SUB.
5433
5434Resource Tags (Names used to access individual fields within resource
5435descriptors):
5436    _DBT, _DPL, _DRS, _END, _FLC,
5437    _IOR, _LIN, _MOD, _PAR, _PHA,
5438    _PIN, _PPI, _POL, _RXL, _SLV,
5439    _SPE, _STB, _TXL, _VEN.
5440
5441ACPICA External Interfaces:
5442---------------------------
5443
5444Several new interfaces have been defined for use by ACPI-related device
5445drivers and other host OS services:
5446
5447AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
5448to
5449acquire and release AML mutexes that are defined in the DSDT/SSDT tables
5450provided by the BIOS. They are intended to be used in conjunction with
5451the
5452ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
5453mutual exclusion with the AML code/interpreter.
5454
5455AcpiGetEventResources: Returns the (formatted) resource descriptors as
5456defined
5457by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
5458provides
5459resource descriptors associated with hardware-reduced platform events,
5460similar
5461to the AcpiGetCurrentResources interface.
5462
5463Operation Region Handlers: For General Purpose IO and Generic Serial Bus
5464operation regions, information about the Connection() object and any
5465optional
5466length information is passed to the region handler within the Context
5467parameter.
5468
5469AcpiBufferToResource: This interface converts a raw AML buffer containing
5470a
5471resource template or resource descriptor to the ACPI_RESOURCE internal
5472format
5473suitable for use by device drivers. Can be used by an operation region
5474handler
5475to convert the Connection() buffer object into a ACPI_RESOURCE.
5476
5477Miscellaneous/Tools/TestSuites:
5478-------------------------------
5479
5480Support for extended _HID names (Four alpha characters instead of three).
5481Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
5482Support for ACPI 5.0 features in the ASLTS test suite.
5483Fully updated documentation (ACPICA and iASL reference documents.)
5484
5485ACPI Table Definition Language:
5486-------------------------------
5487
5488Support for this language was implemented and released as a subsystem of
5489the
5490iASL compiler in 2010. (See the iASL compiler User Guide.)
5491
5492
5493Non-ACPI 5.0 changes for this release:
5494--------------------------------------
5495
54961) ACPICA Core Subsystem:
5497
5498Fix a problem with operation region declarations where a failure can
5499occur
5500if
5501the region name and an argument that evaluates to an object (such as the
5502region address) are in different namespace scopes. Lin Ming, ACPICA BZ
5503937.
5504
5505Do not abort an ACPI table load if an invalid space ID is found within.
5506This
5507will be caught later if the offending method is executed. ACPICA BZ 925.
5508
5509Fixed an issue with the FFixedHW space ID where the ID was not always
5510recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
5511
5512Fixed a problem with the 32-bit generation of the unix-specific OSL
5513(osunixxf.c). Lin Ming, ACPICA BZ 936.
5514
5515Several changes made to enable generation with the GCC 4.6 compiler.
5516ACPICA BZ
5517935.
5518
5519New error messages: Unsupported I/O requests (not 8/16/32 bit), and
5520Index/Bank
5521field registers out-of-range.
5522
55232) iASL Compiler/Disassembler and Tools:
5524
5525iASL: Implemented the __PATH__ operator, which returns the full pathname
5526of
5527the current source file.
5528
5529AcpiHelp: Automatically display expanded keyword information for all ASL
5530operators.
5531
5532Debugger: Add "Template" command to disassemble/dump resource template
5533buffers.
5534
5535Added a new master script to generate and execute the ASLTS test suite.
5536Automatically handles 32- and 64-bit generation. See tests/aslts.sh
5537
5538iASL: Fix problem with listing generation during processing of the
5539Switch()
5540operator where AML listing was disabled until the entire Switch block was
5541completed.
5542
5543iASL: Improve support for semicolon statement terminators. Fix "invalid
5544character" message for some cases when the semicolon is used. Semicolons
5545are
5546now allowed after every <Term> grammar element. ACPICA BZ 927.
5547
5548iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
5549923.
5550
5551Disassembler: Fix problem with disassembly of the DataTableRegion
5552operator
5553where an inadvertent "Unhandled deferred opcode" message could be
5554generated.
5555
55563) Example Code and Data Size
5557
5558These are the sizes for the OS-independent acpica.lib produced by the
5559Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
5560includes the debug output trace mechanism and has a much larger code and
5561data
5562size.
5563
5564  Previous Release:
5565    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
5566    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
5567  Current Release:
5568    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
5569    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
5570
5571----------------------------------------
557222 September 2011. Summary of changes for version 20110922:
5573
55740) ACPI 5.0 News:
5575
5576Support for ACPI 5.0 in ACPICA has been underway for several months and
5577will
5578be released at the same time that ACPI 5.0 is officially released.
5579
5580The ACPI 5.0 specification is on track for release in the next few
5581months.
5582
55831) ACPICA Core Subsystem:
5584
5585Fixed a problem where the maximum sleep time for the Sleep() operator was
5586intended to be limited to two seconds, but was inadvertently limited to
558720
5588seconds instead.
5589
5590Linux and Unix makefiles: Added header file dependencies to ensure
5591correct
5592generation of ACPICA core code and utilities. Also simplified the
5593makefiles
5594considerably through the use of the vpath variable to specify search
5595paths.
5596ACPICA BZ 924.
5597
55982) iASL Compiler/Disassembler and Tools:
5599
5600iASL: Implemented support to check the access length for all fields
5601created to
5602access named Resource Descriptor fields. For example, if a resource field
5603is
5604defined to be two bits, a warning is issued if a CreateXxxxField() is
5605used
5606with an incorrect bit length. This is implemented for all current
5607resource
5608descriptor names. ACPICA BZ 930.
5609
5610Disassembler: Fixed a byte ordering problem with the output of 24-bit and
561156-
5612bit integers.
5613
5614iASL: Fixed a couple of issues associated with variable-length package
5615objects. 1) properly handle constants like One, Ones, Zero -- do not make
5616a
5617VAR_PACKAGE when these are used as a package length. 2) Allow the
5618VAR_PACKAGE
5619opcode (in addition to PACKAGE) when validating object types for
5620predefined
5621names.
5622
5623iASL: Emit statistics for all output files (instead of just the ASL input
5624and
5625AML output). Includes listings, hex files, etc.
5626
5627iASL: Added -G option to the table compiler to allow the compilation of
5628custom
5629ACPI tables. The only part of a table that is required is the standard
563036-
5631byte
5632ACPI header.
5633
5634AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
5635headers),
5636which also adds correct 64-bit support. Also, now all output filenames
5637are
5638completely lower case.
5639
5640AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
5641loading table files. A warning is issued for any such tables. The only
5642exception is an FADT. This also fixes a possible fault when attempting to
5643load
5644non-AML tables. ACPICA BZ 932.
5645
5646AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
5647a
5648missing table terminator could cause a fault when using the -p option.
5649
5650AcpiSrc: Fixed a possible divide-by-zero fault when generating file
5651statistics.
5652
56533) Example Code and Data Size
5654
5655These are the sizes for the OS-independent acpica.lib produced by the
5656Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
5657includes the debug output trace mechanism and has a much larger code and
5658data
5659size.
5660
5661  Previous Release (VC 9.0):
5662    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
5663    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
5664  Current Release (VC 9.0):
5665    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
5666    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
5667
5668
5669----------------------------------------
567023 June 2011. Summary of changes for version 20110623:
5671
56721) ACPI CA Core Subsystem:
5673
5674Updated the predefined name repair mechanism to not attempt repair of a
5675_TSS
5676return object if a _PSS object is present. We can only sort the _TSS
5677return
5678package if there is no _PSS within the same scope. This is because if
5679_PSS
5680is
5681present, the ACPI specification dictates that the _TSS Power Dissipation
5682field
5683is to be ignored, and therefore some BIOSs leave garbage values in the
5684_TSS
5685Power field(s). In this case, it is best to just return the _TSS package
5686as-
5687is. Reported by, and fixed with assistance from Fenghua Yu.
5688
5689Added an option to globally disable the control method return value
5690validation
5691and repair. This runtime option can be used to disable return value
5692repair
5693if
5694this is causing a problem on a particular machine. Also added an option
5695to
5696AcpiExec (-dr) to set this disable flag.
5697
5698All makefiles and project files: Major changes to improve generation of
5699ACPICA
5700tools. ACPICA BZ 912:
5701    Reduce default optimization levels to improve compatibility
5702    For Linux, add strict-aliasing=0 for gcc 4
5703    Cleanup and simplify use of command line defines
5704    Cleanup multithread library support
5705    Improve usage messages
5706
5707Linux-specific header: update handling of THREAD_ID and pthread. For the
570832-
5709bit case, improve casting to eliminate possible warnings, especially with
5710the
5711acpica tools.
5712
5713Example Code and Data Size: These are the sizes for the OS-independent
5714acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5715debug
5716version of the code includes the debug output trace mechanism and has a
5717much
5718larger code and data size.
5719
5720  Previous Release (VC 9.0):
5721    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
5722    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
5723  Current Release (VC 9.0):
5724    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
5725    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
5726
57272) iASL Compiler/Disassembler and Tools:
5728
5729With this release, a new utility named "acpihelp" has been added to the
5730ACPICA
5731package. This utility summarizes the ACPI specification chapters for the
5732ASL
5733and AML languages. It generates under Linux/Unix as well as Windows, and
5734provides the following functionality:
5735    Find/display ASL operator(s) -- with description and syntax.
5736    Find/display ASL keyword(s) -- with exact spelling and descriptions.
5737    Find/display ACPI predefined name(s) -- with description, number
5738        of arguments, and the return value data type.
5739    Find/display AML opcode name(s) -- with opcode, arguments, and
5740grammar.
5741    Decode/display AML opcode -- with opcode name, arguments, and
5742grammar.
5743
5744Service Layers: Make multi-thread support configurable. Conditionally
5745compile
5746the multi-thread support so that threading libraries will not be linked
5747if
5748not
5749necessary. The only tool that requires multi-thread support is AcpiExec.
5750
5751iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
5752of
5753Bison appear to want the interface to yyerror to be a const char * (or at
5754least this is a problem when generating iASL on some systems.) ACPICA BZ
5755923
5756Pierre Lejeune.
5757
5758Tools: Fix for systems where O_BINARY is not defined. Only used for
5759Windows
5760versions of the tools.
5761
5762----------------------------------------
576327 May 2011. Summary of changes for version 20110527:
5764
57651) ACPI CA Core Subsystem:
5766
5767ASL Load() operator: Reinstate most restrictions on the incoming ACPI
5768table
5769signature. Now, only allow SSDT, OEMx, and a null signature. History:
5770    1) Originally, we checked the table signature for "SSDT" or "PSDT".
5771       (PSDT is now obsolete.)
5772    2) We added support for OEMx tables, signature "OEM" plus a fourth
5773       "don't care" character.
5774    3) Valid tables were encountered with a null signature, so we just
5775       gave up on validating the signature, (05/2008).
5776    4) We encountered non-AML tables such as the MADT, which caused
5777       interpreter errors and kernel faults. So now, we once again allow
5778       only SSDT, OEMx, and now, also a null signature. (05/2011).
5779
5780Added the missing _TDL predefined name to the global name list in order
5781to
5782enable validation. Affects both the core ACPICA code and the iASL
5783compiler.
5784
5785Example Code and Data Size: These are the sizes for the OS-independent
5786acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5787debug
5788version of the code includes the debug output trace mechanism and has a
5789much
5790larger code and data size.
5791
5792  Previous Release (VC 9.0):
5793    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
5794    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
5795  Current Release (VC 9.0):
5796    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
5797    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
5798
57992) iASL Compiler/Disassembler and Tools:
5800
5801Debugger/AcpiExec: Implemented support for "complex" method arguments on
5802the
5803debugger command line. This adds support beyond simple integers --
5804including
5805Strings, Buffers, and Packages. Includes support for nested packages.
5806Increased the default command line buffer size to accommodate these
5807arguments.
5808See the ACPICA reference for details and syntax. ACPICA BZ 917.
5809
5810Debugger/AcpiExec: Implemented support for "default" method arguments for
5811the
5812Execute/Debug command. Now, the debugger will always invoke a control
5813method
5814with the required number of arguments -- even if the command line
5815specifies
5816none or insufficient arguments. It uses default integer values for any
5817missing
5818arguments. Also fixes a bug where only six method arguments maximum were
5819supported instead of the required seven.
5820
5821Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
5822and
5823also return status in order to prevent buffer overruns. See the ACPICA
5824reference for details and syntax. ACPICA BZ 921
5825
5826iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
5827makefiles to simplify support for the two different but similar parser
5828generators, bison and yacc.
5829
5830Updated the generic unix makefile for gcc 4. The default gcc version is
5831now
5832expected to be 4 or greater, since options specific to gcc 4 are used.
5833
5834----------------------------------------
583513 April 2011. Summary of changes for version 20110413:
5836
58371) ACPI CA Core Subsystem:
5838
5839Implemented support to execute a so-called "orphan" _REG method under the
5840EC
5841device. This change will force the execution of a _REG method underneath
5842the
5843EC
5844device even if there is no corresponding operation region of type
5845EmbeddedControl. Fixes a problem seen on some machines and apparently is
5846compatible with Windows behavior. ACPICA BZ 875.
5847
5848Added more predefined methods that are eligible for automatic NULL
5849package
5850element removal. This change adds another group of predefined names to
5851the
5852list
5853of names that can be repaired by having NULL package elements dynamically
5854removed. This group are those methods that return a single variable-
5855length
5856package containing simple data types such as integers, buffers, strings.
5857This
5858includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
5859_PSL,
5860_Sx,
5861and _TZD. ACPICA BZ 914.
5862
5863Split and segregated all internal global lock functions to a new file,
5864evglock.c.
5865
5866Updated internal address SpaceID for DataTable regions. Moved this
5867internal
5868space
5869id in preparation for ACPI 5.0 changes that will include some new space
5870IDs.
5871This
5872change should not affect user/host code.
5873
5874Example Code and Data Size: These are the sizes for the OS-independent
5875acpica.lib
5876produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
5877version of
5878the code includes the debug output trace mechanism and has a much larger
5879code
5880and
5881data size.
5882
5883  Previous Release (VC 9.0):
5884    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
5885    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
5886  Current Release (VC 9.0):
5887    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
5888    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
5889
58902) iASL Compiler/Disassembler and Tools:
5891
5892iASL/DTC: Major update for new grammar features. Allow generic data types
5893in
5894custom ACPI tables. Field names are now optional. Any line can be split
5895to
5896multiple lines using the continuation char (\). Large buffers now use
5897line-
5898continuation character(s) and no colon on the continuation lines. See the
5899grammar
5900update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
5901Moore.
5902
5903iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
5904statements.
5905Since the parser stuffs a "zero" as the return value for these statements
5906(due
5907to
5908the underlying AML grammar), they were seen as "return with value" by the
5909iASL
5910semantic checking. They are now seen correctly as "null" return
5911statements.
5912
5913iASL: Check if a_REG declaration has a corresponding Operation Region.
5914Adds a
5915check for each _REG to ensure that there is in fact a corresponding
5916operation
5917region declaration in the same scope. If not, the _REG method is not very
5918useful
5919since it probably won't be executed. ACPICA BZ 915.
5920
5921iASL/DTC: Finish support for expression evaluation. Added a new
5922expression
5923parser
5924that implements c-style operator precedence and parenthesization. ACPICA
5925bugzilla
5926908.
5927
5928Disassembler/DTC: Remove support for () and <> style comments in data
5929tables.
5930Now
5931that DTC has full expression support, we don't want to have comment
5932strings
5933that
5934start with a parentheses or a less-than symbol. Now, only the standard /*
5935and
5936//
5937comments are supported, as well as the bracket [] comments.
5938
5939AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
5940"unusual"
5941headers in the acpidump file. Update the header validation to support
5942these
5943tables. Problem introduced in previous AcpiXtract version in the change
5944to
5945support "wrong checksum" error messages emitted by acpidump utility.
5946
5947iASL: Add a * option to generate all template files (as a synonym for
5948ALL)
5949as
5950in
5951"iasl -T *" or "iasl -T ALL".
5952
5953iASL/DTC: Do not abort compiler on fatal errors. We do not want to
5954completely
5955abort the compiler on "fatal" errors, simply should abort the current
5956compile.
5957This allows multiple compiles with a single (possibly wildcard) compiler
5958invocation.
5959
5960----------------------------------------
596116 March 2011. Summary of changes for version 20110316:
5962
59631) ACPI CA Core Subsystem:
5964
5965Fixed a problem caused by a _PRW method appearing at the namespace root
5966scope
5967during the setup of wake GPEs. A fault could occur if a _PRW directly
5968under
5969the
5970root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
5971
5972Implemented support for "spurious" Global Lock interrupts. On some
5973systems, a
5974global lock interrupt can occur without the pending flag being set. Upon
5975a
5976GL
5977interrupt, we now ensure that a thread is actually waiting for the lock
5978before
5979signaling GL availability. Rafael Wysocki, Bob Moore.
5980
5981Example Code and Data Size: These are the sizes for the OS-independent
5982acpica.lib
5983produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
5984version of
5985the code includes the debug output trace mechanism and has a much larger
5986code
5987and
5988data size.
5989
5990  Previous Release (VC 9.0):
5991    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
5992    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
5993  Current Release (VC 9.0):
5994    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
5995    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
5996
59972) iASL Compiler/Disassembler and Tools:
5998
5999Implemented full support for the "SLIC" ACPI table. Includes support in
6000the
6001header files, disassembler, table compiler, and template generator. Bob
6002Moore,
6003Lin Ming.
6004
6005AcpiXtract: Correctly handle embedded comments and messages from
6006AcpiDump.
6007Apparently some or all versions of acpidump will occasionally emit a
6008comment
6009like
6010"Wrong checksum", etc., into the dump file. This was causing problems for
6011AcpiXtract. ACPICA BZ 905.
6012
6013iASL: Fix the Linux makefile by removing an inadvertent double file
6014inclusion.
6015ACPICA BZ 913.
6016
6017AcpiExec: Update installation of operation region handlers. Install one
6018handler
6019for a user-defined address space. This is used by the ASL test suite
6020(ASLTS).
6021
6022----------------------------------------
602311 February 2011. Summary of changes for version 20110211:
6024
60251) ACPI CA Core Subsystem:
6026
6027Added a mechanism to defer _REG methods for some early-installed
6028handlers.
6029Most user handlers should be installed before call to
6030AcpiEnableSubsystem.
6031However, Event handlers and region handlers should be installed after
6032AcpiInitializeObjects. Override handlers for the "default" regions should
6033be
6034installed early, however. This change executes all _REG methods for the
6035default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
6036chicken/egg issues between them. ACPICA BZ 848.
6037
6038Implemented an optimization for GPE detection. This optimization will
6039simply
6040ignore GPE registers that contain no enabled GPEs -- there is no need to
6041read the register since this information is available internally. This
6042becomes more important on machines with a large GPE space. ACPICA
6043bugzilla
6044884. Lin Ming. Suggestion from Joe Liu.
6045
6046Removed all use of the highly unreliable FADT revision field. The
6047revision
6048number in the FADT has been found to be completely unreliable and cannot
6049be
6050trusted. Only the actual table length can be used to infer the version.
6051This
6052change updates the ACPICA core and the disassembler so that both no
6053longer
6054even look at the FADT version and instead depend solely upon the FADT
6055length.
6056
6057Fix an unresolved name issue for the no-debug and no-error-message source
6058generation cases. The _AcpiModuleName was left undefined in these cases,
6059but
6060it is actually needed as a parameter to some interfaces. Define
6061_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
6062
6063Split several large files (makefiles and project files updated)
6064  utglobal.c   -> utdecode.c
6065  dbcomds.c    -> dbmethod.c dbnames.c
6066  dsopcode.c   -> dsargs.c dscontrol.c
6067  dsload.c     -> dsload2.c
6068  aslanalyze.c -> aslbtypes.c aslwalks.c
6069
6070Example Code and Data Size: These are the sizes for the OS-independent
6071acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6072debug version of the code includes the debug output trace mechanism and
6073has
6074a much larger code and data size.
6075
6076  Previous Release (VC 9.0):
6077    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
6078    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
6079  Current Release (VC 9.0):
6080    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
6081    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
6082
60832) iASL Compiler/Disassembler and Tools:
6084
6085iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
6086These are useful C-style macros with the standard definitions. ACPICA
6087bugzilla 898.
6088
6089iASL/DTC: Added support for integer expressions and labels. Support for
6090full
6091expressions for all integer fields in all ACPI tables. Support for labels
6092in
6093"generic" portions of tables such as UEFI. See the iASL reference manual.
6094
6095Debugger: Added a command to display the status of global handlers. The
6096"handlers" command will display op region, fixed event, and miscellaneous
6097global handlers. installation status -- and for op regions, whether
6098default
6099or user-installed handler will be used.
6100
6101iASL: Warn if reserved method incorrectly returns a value. Many
6102predefined
6103names are defined such that they do not return a value. If implemented as
6104a
6105method, issue a warning if such a name explicitly returns a value. ACPICA
6106Bugzilla 855.
6107
6108iASL: Added detection of GPE method name conflicts. Detects a conflict
6109where
6110there are two GPE methods of the form _Lxy and _Exy in the same scope.
6111(For
6112example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
6113
6114iASL/DTC: Fixed a couple input scanner issues with comments and line
6115numbers. Comment remover could get confused and miss a comment ending.
6116Fixed
6117a problem with line counter maintenance.
6118
6119iASL/DTC: Reduced the severity of some errors from fatal to error. There
6120is
6121no need to abort on simple errors within a field definition.
6122
6123Debugger: Simplified the output of the help command. All help output now
6124in
6125a single screen, instead of help subcommands. ACPICA Bugzilla 897.
6126
6127----------------------------------------
612812 January 2011. Summary of changes for version 20110112:
6129
61301) ACPI CA Core Subsystem:
6131
6132Fixed a race condition between method execution and namespace walks that
6133can
6134possibly cause a fault. The problem was apparently introduced in version
613520100528 as a result of a performance optimization that reduces the
6136number
6137of
6138namespace walks upon method exit by using the delete_namespace_subtree
6139function instead of the delete_namespace_by_owner function used
6140previously.
6141Bug is a missing namespace lock in the delete_namespace_subtree function.
6142dana.myers@oracle.com
6143
6144Fixed several issues and a possible fault with the automatic "serialized"
6145method support. History: This support changes a method to "serialized" on
6146the
6147fly if the method generates an AE_ALREADY_EXISTS error, indicating the
6148possibility that it cannot handle reentrancy. This fix repairs a couple
6149of
6150issues seen in the field, especially on machines with many cores:
6151
6152    1) Delete method children only upon the exit of the last thread,
6153       so as to not delete objects out from under other running threads
6154      (and possibly causing a fault.)
6155    2) Set the "serialized" bit for the method only upon the exit of the
6156       Last thread, so as to not cause deadlock when running threads
6157       attempt to exit.
6158    3) Cleanup the use of the AML "MethodFlags" and internal method flags
6159       so that there is no longer any confusion between the two.
6160
6161    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
6162
6163Debugger: Now lock the namespace for duration of a namespace dump.
6164Prevents
6165issues if the namespace is changing dynamically underneath the debugger.
6166Especially affects temporary namespace nodes, since the debugger displays
6167these also.
6168
6169Updated the ordering of include files. The ACPICA headers should appear
6170before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
6171set
6172any necessary compiler-specific defines, etc. Affects the ACPI-related
6173tools
6174and utilities.
6175
6176Updated all ACPICA copyrights and signons to 2011. Added the 2011
6177copyright
6178to all module headers and signons, including the Linux header. This
6179affects
6180virtually every file in the ACPICA core subsystem, iASL compiler, and all
6181utilities.
6182
6183Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
6184project files for VC++ 6.0 are now obsolete. New project files can be
6185found
6186under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
6187details.
6188
6189Example Code and Data Size: These are the sizes for the OS-independent
6190acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6191debug version of the code includes the debug output trace mechanism and
6192has a
6193much larger code and data size.
6194
6195  Previous Release (VC 6.0):
6196    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
6197    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
6198  Current Release (VC 9.0):
6199    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
6200    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
6201
62022) iASL Compiler/Disassembler and Tools:
6203
6204iASL: Added generic data types to the Data Table compiler. Add "generic"
6205data
6206types such as UINT32, String, Unicode, etc., to simplify the generation
6207of
6208platform-defined tables such as UEFI. Lin Ming.
6209
6210iASL: Added listing support for the Data Table Compiler. Adds listing
6211support
6212(-l) to display actual binary output for each line of input code.
6213
6214----------------------------------------
621509 December 2010. Summary of changes for version 20101209:
6216
62171) ACPI CA Core Subsystem:
6218
6219Completed the major overhaul of the GPE support code that was begun in
6220July
62212010. Major features include: removal of _PRW execution in ACPICA (host
6222executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
6223changes to existing interfaces, simplification of GPE handler operation,
6224and
6225a handful of new interfaces:
6226
6227    AcpiUpdateAllGpes
6228    AcpiFinishGpe
6229    AcpiSetupGpeForWake
6230    AcpiSetGpeWakeMask
6231    One new file, evxfgpe.c to consolidate all external GPE interfaces.
6232
6233See the ACPICA Programmer Reference for full details and programming
6234information. See the new section 4.4 "General Purpose Event (GPE)
6235Support"
6236for a full overview, and section 8.7 "ACPI General Purpose Event
6237Management"
6238for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
6239Ming,
6240Bob Moore, Rafael Wysocki.
6241
6242Implemented a new GPE feature for Windows compatibility, the "Implicit
6243Wake
6244GPE Notify". This feature will automatically issue a Notify(2) on a
6245device
6246when a Wake GPE is received if there is no corresponding GPE method or
6247handler. ACPICA BZ 870.
6248
6249Fixed a problem with the Scope() operator during table parse and load
6250phase.
6251During load phase (table load or method execution), the scope operator
6252should
6253not enter the target into the namespace. Instead, it should open a new
6254scope
6255at the target location. Linux BZ 19462, ACPICA BZ 882.
6256
6257Example Code and Data Size: These are the sizes for the OS-independent
6258acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6259debug version of the code includes the debug output trace mechanism and
6260has a
6261much larger code and data size.
6262
6263  Previous Release:
6264    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
6265    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
6266  Current Release:
6267    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
6268    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
6269
62702) iASL Compiler/Disassembler and Tools:
6271
6272iASL: Relax the alphanumeric restriction on _CID strings. These strings
6273are
6274"bus-specific" per the ACPI specification, and therefore any characters
6275are
6276acceptable. The only checks that can be performed are for a null string
6277and
6278perhaps for a leading asterisk. ACPICA BZ 886.
6279
6280iASL: Fixed a problem where a syntax error that caused a premature EOF
6281condition on the source file emitted a very confusing error message. The
6282premature EOF is now detected correctly. ACPICA BZ 891.
6283
6284Disassembler: Decode the AccessSize within a Generic Address Structure
6285(byte
6286access, word access, etc.) Note, this field does not allow arbitrary bit
6287access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
6288
6289New: AcpiNames utility - Example namespace dump utility. Shows an example
6290of
6291ACPICA configuration for a minimal namespace dump utility. Uses table and
6292namespace managers, but no AML interpreter. Does not add any
6293functionality
6294over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
6295partition and configure ACPICA. ACPICA BZ 883.
6296
6297AML Debugger: Increased the debugger buffer size for method return
6298objects.
6299Was 4K, increased to 16K. Also enhanced error messages for debugger
6300method
6301execution, including the buffer overflow case.
6302
6303----------------------------------------
630413 October 2010. Summary of changes for version 20101013:
6305
63061) ACPI CA Core Subsystem:
6307
6308Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
6309now
6310clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
6311HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
6312
6313Changed the type of the predefined namespace object _TZ from ThermalZone
6314to
6315Device. This was found to be confusing to the host software that
6316processes
6317the various thermal zones, since _TZ is not really a ThermalZone.
6318However,
6319a
6320Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
6321Zhang.
6322
6323Added Windows Vista SP2 to the list of supported _OSI strings. The actual
6324string is "Windows 2006 SP2".
6325
6326Eliminated duplicate code in AcpiUtExecute* functions. Now that the
6327nsrepair
6328code automatically repairs _HID-related strings, this type of code is no
6329longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
6330878.
6331
6332Example Code and Data Size: These are the sizes for the OS-independent
6333acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6334debug version of the code includes the debug output trace mechanism and
6335has a
6336much larger code and data size.
6337
6338  Previous Release:
6339    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
6340    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
6341  Current Release:
6342    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
6343    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
6344
63452) iASL Compiler/Disassembler and Tools:
6346
6347iASL: Implemented additional compile-time validation for _HID strings.
6348The
6349non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
6350length
6351of
6352the string must be exactly seven or eight characters. For both _HID and
6353_CID
6354strings, all characters must be alphanumeric. ACPICA BZ 874.
6355
6356iASL: Allow certain "null" resource descriptors. Some BIOS code creates
6357descriptors that are mostly or all zeros, with the expectation that they
6358will
6359be filled in at runtime. iASL now allows this as long as there is a
6360"resource
6361tag" (name) associated with the descriptor, which gives the ASL a handle
6362needed to modify the descriptor. ACPICA BZ 873.
6363
6364Added single-thread support to the generic Unix application OSL.
6365Primarily
6366for iASL support, this change removes the use of semaphores in the
6367single-
6368threaded ACPICA tools/applications - increasing performance. The
6369_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
6370option. ACPICA BZ 879.
6371
6372AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
6373support
6374for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
6375
6376iASL: Moved all compiler messages to a new file, aslmessages.h.
6377
6378----------------------------------------
637915 September 2010. Summary of changes for version 20100915:
6380
63811) ACPI CA Core Subsystem:
6382
6383Removed the AcpiOsDerivePciId OSL interface. The various host
6384implementations
6385of this function were not OS-dependent and are now obsolete and can be
6386removed from all host OSLs. This function has been replaced by
6387AcpiHwDerivePciId, which is now part of the ACPICA core code.
6388AcpiHwDerivePciId has been implemented without recursion. Adds one new
6389module, hwpci.c. ACPICA BZ 857.
6390
6391Implemented a dynamic repair for _HID and _CID strings. The following
6392problems are now repaired at runtime: 1) Remove a leading asterisk in the
6393string, and 2) the entire string is uppercased. Both repairs are in
6394accordance with the ACPI specification and will simplify host driver
6395code.
6396ACPICA BZ 871.
6397
6398The ACPI_THREAD_ID type is no longer configurable, internally it is now
6399always UINT64. This simplifies the ACPICA code, especially any printf
6400output.
6401UINT64 is the only common data type for all thread_id types across all
6402operating systems. It is now up to the host OSL to cast the native
6403thread_id
6404type to UINT64 before returning the value to ACPICA (via
6405AcpiOsGetThreadId).
6406Lin Ming, Bob Moore.
6407
6408Added the ACPI_INLINE type to enhance the ACPICA configuration. The
6409"inline"
6410keyword is not standard across compilers, and this type allows inline to
6411be
6412configured on a per-compiler basis. Lin Ming.
6413
6414Made the system global AcpiGbl_SystemAwakeAndRunning publically
6415available.
6416Added an extern for this boolean in acpixf.h. Some hosts utilize this
6417value
6418during suspend/restore operations. ACPICA BZ 869.
6419
6420All code that implements error/warning messages with the "ACPI:" prefix
6421has
6422been moved to a new module, utxferror.c.
6423
6424The UINT64_OVERLAY was moved to utmath.c, which is the only module where
6425it
6426is used. ACPICA BZ 829. Lin Ming, Bob Moore.
6427
6428Example Code and Data Size: These are the sizes for the OS-independent
6429acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6430debug version of the code includes the debug output trace mechanism and
6431has a
6432much larger code and data size.
6433
6434  Previous Release:
6435    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
6436    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
6437  Current Release:
6438    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
6439    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
6440
64412) iASL Compiler/Disassembler and Tools:
6442
6443iASL/Disassembler: Write ACPI errors to stderr instead of the output
6444file.
6445This keeps the output files free of random error messages that may
6446originate
6447from within the namespace/interpreter code. Used this opportunity to
6448merge
6449all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
6450866. Lin Ming, Bob Moore.
6451
6452Tools: update some printfs for ansi warnings on size_t. Handle width
6453change
6454of size_t on 32-bit versus 64-bit generations. Lin Ming.
6455
6456----------------------------------------
645706 August 2010. Summary of changes for version 20100806:
6458
64591) ACPI CA Core Subsystem:
6460
6461Designed and implemented a new host interface to the _OSI support code.
6462This
6463will allow the host to dynamically add or remove multiple _OSI strings,
6464as
6465well as install an optional handler that is called for each _OSI
6466invocation.
6467Also added a new AML debugger command, 'osi' to display and modify the
6468global
6469_OSI string table, and test support in the AcpiExec utility. See the
6470ACPICA
6471reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
6472New Functions:
6473    AcpiInstallInterface - Add an _OSI string.
6474    AcpiRemoveInterface - Delete an _OSI string.
6475    AcpiInstallInterfaceHandler - Install optional _OSI handler.
6476Obsolete Functions:
6477    AcpiOsValidateInterface - no longer used.
6478New Files:
6479    source/components/utilities/utosi.c
6480
6481Re-introduced the support to enable multi-byte transfers for Embedded
6482Controller (EC) operation regions. A reported problem was found to be a
6483bug
6484in the host OS, not in the multi-byte support. Previously, the maximum
6485data
6486size passed to the EC operation region handler was a single byte. There
6487are
6488often EC Fields larger than one byte that need to be transferred, and it
6489is
6490useful for the EC driver to lock these as a single transaction. This
6491change
6492enables single transfers larger than 8 bits. This effectively changes the
6493access to the EC space from ByteAcc to AnyAcc, and will probably require
6494changes to the host OS Embedded Controller driver to enable 16/32/64/256-
6495bit
6496transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
6497
6498Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
6499prototype in acpiosxf.h had the output value pointer as a (void *).
6500It should be a (UINT64 *). This may affect some host OSL code.
6501
6502Fixed a couple problems with the recently modified Linux makefiles for
6503iASL
6504and AcpiExec. These new makefiles place the generated object files in the
6505local directory so that there can be no collisions between the files that
6506are
6507shared between them that are compiled with different options.
6508
6509Example Code and Data Size: These are the sizes for the OS-independent
6510acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6511debug version of the code includes the debug output trace mechanism and
6512has a
6513much larger code and data size.
6514
6515  Previous Release:
6516    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
6517    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
6518  Current Release:
6519    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
6520    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
6521
65222) iASL Compiler/Disassembler and Tools:
6523
6524iASL/Disassembler: Added a new option (-da, "disassemble all") to load
6525the
6526namespace from and disassemble an entire group of AML files. Useful for
6527loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
6528and
6529disassembling with one simple command. ACPICA BZ 865. Lin Ming.
6530
6531iASL: Allow multiple invocations of -e option. This change allows
6532multiple
6533uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
6534834.
6535Lin Ming.
6536
6537----------------------------------------
653802 July 2010. Summary of changes for version 20100702:
6539
65401) ACPI CA Core Subsystem:
6541
6542Implemented several updates to the recently added GPE reference count
6543support. The model for "wake" GPEs is changing to give the host OS
6544complete
6545control of these GPEs. Eventually, the ACPICA core will not execute any
6546_PRW
6547methods, since the host already must execute them. Also, additional
6548changes
6549were made to help ensure that the reference counts are kept in proper
6550synchronization with reality. Rafael J. Wysocki.
6551
65521) Ensure that GPEs are not enabled twice during initialization.
65532) Ensure that GPE enable masks stay in sync with the reference count.
65543) Do not inadvertently enable GPEs when writing GPE registers.
65554) Remove the internal wake reference counter and add new AcpiGpeWakeup
6556interface. This interface will set or clear individual GPEs for wakeup.
65575) Remove GpeType argument from AcpiEnable and AcpiDisable. These
6558interfaces
6559are now used for "runtime" GPEs only.
6560
6561Changed the behavior of the GPE install/remove handler interfaces. The
6562GPE
6563is
6564no longer disabled during this process, as it was found to cause problems
6565on
6566some machines. Rafael J. Wysocki.
6567
6568Reverted a change introduced in version 20100528 to enable Embedded
6569Controller multi-byte transfers. This change was found to cause problems
6570with
6571Index Fields and possibly Bank Fields. It will be reintroduced when these
6572problems have been resolved.
6573
6574Fixed a problem with references to Alias objects within Package Objects.
6575A
6576reference to an Alias within the definition of a Package was not always
6577resolved properly. Aliases to objects like Processors, Thermal zones,
6578etc.
6579were resolved to the actual object instead of a reference to the object
6580as
6581it
6582should be. Package objects are only allowed to contain integer, string,
6583buffer, package, and reference objects. Redhat bugzilla 608648.
6584
6585Example Code and Data Size: These are the sizes for the OS-independent
6586acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6587debug version of the code includes the debug output trace mechanism and
6588has a
6589much larger code and data size.
6590
6591  Previous Release:
6592    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
6593    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
6594  Current Release:
6595    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
6596    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
6597
65982) iASL Compiler/Disassembler and Tools:
6599
6600iASL: Implemented a new compiler subsystem to allow definition and
6601compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
6602These
6603are called "ACPI Data Tables", and the new compiler is the "Data Table
6604Compiler". This compiler is intended to simplify the existing error-prone
6605process of creating these tables for the BIOS, as well as allowing the
6606disassembly, modification, recompilation, and override of existing ACPI
6607data
6608tables. See the iASL User Guide for detailed information.
6609
6610iASL: Implemented a new Template Generator option in support of the new
6611Data
6612Table Compiler. This option will create examples of all known ACPI tables
6613that can be used as the basis for table development. See the iASL
6614documentation and the -T option.
6615
6616Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
6617Descriptor Table).
6618
6619Updated the Linux makefiles for iASL and AcpiExec to place the generated
6620object files in the local directory so that there can be no collisions
6621between the shared files between them that are generated with different
6622options.
6623
6624Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
6625Use
6626the #define __APPLE__ to enable this support.
6627
6628----------------------------------------
662928 May 2010. Summary of changes for version 20100528:
6630
6631Note: The ACPI 4.0a specification was released on April 5, 2010 and is
6632available at www.acpi.info. This is primarily an errata release.
6633
66341) ACPI CA Core Subsystem:
6635
6636Undefined ACPI tables: We are looking for the definitions for the
6637following
6638ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
6639
6640Implemented support to enable multi-byte transfers for Embedded
6641Controller
6642(EC) operation regions. Previously, the maximum data size passed to the
6643EC
6644operation region handler was a single byte. There are often EC Fields
6645larger
6646than one byte that need to be transferred, and it is useful for the EC
6647driver
6648to lock these as a single transaction. This change enables single
6649transfers
6650larger than 8 bits. This effectively changes the access to the EC space
6651from
6652ByteAcc to AnyAcc, and will probably require changes to the host OS
6653Embedded
6654Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
6655bit
6656transfers. Alexey Starikovskiy, Lin Ming
6657
6658Implemented a performance enhancement for namespace search and access.
6659This
6660change enhances the performance of namespace searches and walks by adding
6661a
6662backpointer to the parent in each namespace node. On large namespaces,
6663this
6664change can improve overall ACPI performance by up to 9X. Adding a pointer
6665to
6666each namespace node increases the overall size of the internal namespace
6667by
6668about 5%, since each namespace entry usually consists of both a namespace
6669node and an ACPI operand object. However, this is the first growth of the
6670namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
6671
6672Implemented a performance optimization that reduces the number of
6673namespace
6674walks. On control method exit, only walk the namespace if the method is
6675known
6676to have created namespace objects outside of its local scope. Previously,
6677the
6678entire namespace was traversed on each control method exit. This change
6679can
6680improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
6681Moore.
6682
6683Added support to truncate I/O addresses to 16 bits for Windows
6684compatibility.
6685Some ASL code has been seen in the field that inadvertently has bits set
6686above bit 15. This feature is optional and is enabled if the BIOS
6687requests
6688any Windows OSI strings. It can also be enabled by the host OS. Matthew
6689Garrett, Bob Moore.
6690
6691Added support to limit the maximum time for the ASL Sleep() operator. To
6692prevent accidental deep sleeps, limit the maximum time that Sleep() will
6693actually sleep. Configurable, the default maximum is two seconds. ACPICA
6694bugzilla 854.
6695
6696Added run-time validation support for the _WDG and_WED Microsoft
6697predefined
6698methods. These objects are defined by "Windows Instrumentation", and are
6699not
6700part of the ACPI spec. ACPICA BZ 860.
6701
6702Expanded all statistic counters used during namespace and device
6703initialization from 16 to 32 bits in order to support very large
6704namespaces.
6705
6706Replaced all instances of %d in printf format specifiers with %u since
6707nearly
6708all integers in ACPICA are unsigned.
6709
6710Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
6711returned
6712as AE_NO_HANDLER.
6713
6714Example Code and Data Size: These are the sizes for the OS-independent
6715acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6716debug version of the code includes the debug output trace mechanism and
6717has a
6718much larger code and data size.
6719
6720  Previous Release:
6721    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
6722    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
6723  Current Release:
6724    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
6725    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
6726
67272) iASL Compiler/Disassembler and Tools:
6728
6729iASL: Added compiler support for the _WDG and_WED Microsoft predefined
6730methods. These objects are defined by "Windows Instrumentation", and are
6731not
6732part of the ACPI spec. ACPICA BZ 860.
6733
6734AcpiExec: added option to disable the memory tracking mechanism. The -dt
6735option will disable the tracking mechanism, which improves performance
6736considerably.
6737
6738AcpiExec: Restructured the command line options into -d (disable) and -e
6739(enable) options.
6740
6741----------------------------------------
674228 April 2010. Summary of changes for version 20100428:
6743
67441) ACPI CA Core Subsystem:
6745
6746Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
6747including FADT-based and GPE Block Devices, execute any _PRW methods in
6748the
6749new table, and process any _Lxx/_Exx GPE methods in the new table. Any
6750runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
6751immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
6752Devices. Provides compatibility with other ACPI implementations. Two new
6753files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
6754Moore.
6755
6756Fixed a regression introduced in version 20100331 within the table
6757manager
6758where initial table loading could fail. This was introduced in the fix
6759for
6760AcpiReallocateRootTable. Also, renamed some of fields in the table
6761manager
6762data structures to clarify their meaning and use.
6763
6764Fixed a possible allocation overrun during internal object copy in
6765AcpiUtCopySimpleObject. The original code did not correctly handle the
6766case
6767where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
6768847.
6769
6770Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
6771possible access beyond end-of-allocation. Also, now fully validate
6772descriptor
6773(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
6774
6775Example Code and Data Size: These are the sizes for the OS-independent
6776acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6777debug version of the code includes the debug output trace mechanism and
6778has a
6779much larger code and data size.
6780
6781  Previous Release:
6782    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
6783    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
6784  Current Release:
6785    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
6786    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
6787
67882) iASL Compiler/Disassembler and Tools:
6789
6790iASL: Implemented Min/Max/Len/Gran validation for address resource
6791descriptors. This change implements validation for the address fields
6792that
6793are common to all address-type resource descriptors. These checks are
6794implemented: Checks for valid Min/Max, length within the Min/Max window,
6795valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
6796per
6797table 6-40 in the ACPI 4.0a specification. Also split the large
6798aslrestype1.c
6799and aslrestype2.c files into five new files. ACPICA BZ 840.
6800
6801iASL: Added support for the _Wxx predefined names. This support was
6802missing
6803and these names were not recognized by the compiler as valid predefined
6804names. ACPICA BZ 851.
6805
6806iASL: Added an error for all predefined names that are defined to return
6807no
6808value and thus must be implemented as Control Methods. These include all
6809of
6810the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
6811names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
6812
6813iASL: Implemented the -ts option to emit hex AML data in ASL format, as
6814an
6815ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
6816be
6817dynamically loaded via the Load() operator. Also cleaned up output for
6818the
6819-
6820ta and -tc options. ACPICA BZ 853.
6821
6822Tests: Added a new file with examples of extended iASL error checking.
6823Demonstrates the advanced error checking ability of the iASL compiler.
6824Available at tests/misc/badcode.asl.
6825
6826----------------------------------------
682731 March 2010. Summary of changes for version 20100331:
6828
68291) ACPI CA Core Subsystem:
6830
6831Completed a major update for the GPE support in order to improve support
6832for
6833shared GPEs and to simplify both host OS and ACPICA code. Added a
6834reference
6835count mechanism to support shared GPEs that require multiple device
6836drivers.
6837Several external interfaces have changed. One external interface has been
6838removed. One new external interface was added. Most of the GPE external
6839interfaces now use the GPE spinlock instead of the events mutex (and the
6840Flags parameter for many GPE interfaces has been removed.) See the
6841updated
6842ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
6843Rafael
6844Wysocki. ACPICA BZ 831.
6845
6846Changed:
6847    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
6848Removed:
6849    AcpiSetGpeType
6850New:
6851    AcpiSetGpe
6852
6853Implemented write support for DataTable operation regions. These regions
6854are
6855defined via the DataTableRegion() operator. Previously, only read support
6856was
6857implemented. The ACPI specification allows DataTableRegions to be
6858read/write,
6859however.
6860
6861Implemented a new subsystem option to force a copy of the DSDT to local
6862memory. Optionally copy the entire DSDT to local memory (instead of
6863simply
6864mapping it.) There are some (albeit very rare) BIOSs that corrupt or
6865replace
6866the original DSDT, creating the need for this option. Default is FALSE,
6867do
6868not copy the DSDT.
6869
6870Implemented detection of a corrupted or replaced DSDT. This change adds
6871support to detect a DSDT that has been corrupted and/or replaced from
6872outside
6873the OS (by firmware). This is typically catastrophic for the system, but
6874has
6875been seen on some machines. Once this problem has been detected, the DSDT
6876copy option can be enabled via system configuration. Lin Ming, Bob Moore.
6877
6878Fixed two problems with AcpiReallocateRootTable during the root table
6879copy.
6880When copying the root table to the new allocation, the length used was
6881incorrect. The new size was used instead of the current table size,
6882meaning
6883too much data was copied. Also, the count of available slots for ACPI
6884tables
6885was not set correctly. Alexey Starikovskiy, Bob Moore.
6886
6887Example Code and Data Size: These are the sizes for the OS-independent
6888acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6889debug version of the code includes the debug output trace mechanism and
6890has a
6891much larger code and data size.
6892
6893  Previous Release:
6894    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
6895    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
6896  Current Release:
6897    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
6898    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
6899
69002) iASL Compiler/Disassembler and Tools:
6901
6902iASL: Implement limited typechecking for values returned from predefined
6903control methods. The type of any returned static (unnamed) object is now
6904validated. For example, Return(1). ACPICA BZ 786.
6905
6906iASL: Fixed a predefined name object verification regression. Fixes a
6907problem
6908introduced in version 20100304. An error is incorrectly generated if a
6909predefined name is declared as a static named object with a value defined
6910using the keywords "Zero", "One", or "Ones". Lin Ming.
6911
6912iASL: Added Windows 7 support for the -g option (get local ACPI tables)
6913by
6914reducing the requested registry access rights. ACPICA BZ 842.
6915
6916Disassembler: fixed a possible fault when generating External()
6917statements.
6918Introduced in commit ae7d6fd: Properly handle externals with parent-
6919prefix
6920(carat). Fixes a string length allocation calculation. Lin Ming.
6921
6922----------------------------------------
692304 March 2010. Summary of changes for version 20100304:
6924
69251) ACPI CA Core Subsystem:
6926
6927Fixed a possible problem with the AML Mutex handling function
6928AcpiExReleaseMutex where the function could fault under the very rare
6929condition when the interpreter has blocked, the interpreter lock is
6930released,
6931the interpreter is then reentered via the same thread, and attempts to
6932acquire an AML mutex that was previously acquired. FreeBSD report 140979.
6933Lin
6934Ming.
6935
6936Implemented additional configuration support for the AML "Debug Object".
6937Output from the debug object can now be enabled via a global variable,
6938AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
6939debugging.
6940This debug output is now available in the release version of ACPICA
6941instead
6942of just the debug version. Also, the entire debug output module can now
6943be
6944configured out of the ACPICA build if desired. One new file added,
6945executer/exdebug.c. Lin Ming, Bob Moore.
6946
6947Added header support for the ACPI MCHI table (Management Controller Host
6948Interface Table). This table was added in ACPI 4.0, but the defining
6949document
6950has only recently become available.
6951
6952Standardized output of integer values for ACPICA warnings/errors. Always
6953use
69540x prefix for hex output, always use %u for unsigned integer decimal
6955output.
6956Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
6957400
6958invocations.) These invocations were converted from the original
6959ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
6960
6961Example Code and Data Size: These are the sizes for the OS-independent
6962acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6963debug version of the code includes the debug output trace mechanism and
6964has a
6965much larger code and data size.
6966
6967  Previous Release:
6968    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
6969    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
6970  Current Release:
6971    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
6972    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
6973
69742) iASL Compiler/Disassembler and Tools:
6975
6976iASL: Implemented typechecking support for static (non-control method)
6977predefined named objects that are declared with the Name() operator. For
6978example, the type of this object is now validated to be of type Integer:
6979Name(_BBN, 1). This change migrates the compiler to using the core
6980predefined
6981name table instead of maintaining a local version. Added a new file,
6982aslpredef.c. ACPICA BZ 832.
6983
6984Disassembler: Added support for the ACPI 4.0 MCHI table.
6985
6986----------------------------------------
698721 January 2010. Summary of changes for version 20100121:
6988
69891) ACPI CA Core Subsystem:
6990
6991Added the 2010 copyright to all module headers and signons. This affects
6992virtually every file in the ACPICA core subsystem, the iASL compiler, the
6993tools/utilities, and the test suites.
6994
6995Implemented a change to the AcpiGetDevices interface to eliminate
6996unnecessary
6997invocations of the _STA method. In the case where a specific _HID is
6998requested, do not run _STA until a _HID match is found. This eliminates
6999potentially dozens of _STA calls during a search for a particular
7000device/HID,
7001which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
7002
7003Implemented an additional repair for predefined method return values.
7004Attempt
7005to repair unexpected NULL elements within returned Package objects.
7006Create
7007an
7008Integer of value zero, a NULL String, or a zero-length Buffer as
7009appropriate.
7010ACPICA BZ 818. Lin Ming, Bob Moore.
7011
7012Removed the obsolete ACPI_INTEGER data type. This type was introduced as
7013the
7014code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
7015(with
701664-bit AML integers). It is now obsolete and this change removes it from
7017the
7018ACPICA code base, replaced by UINT64. The original typedef has been
7019retained
7020for now for compatibility with existing device driver code. ACPICA BZ
7021824.
7022
7023Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
7024in
7025the parse tree object.
7026
7027Added additional warning options for the gcc-4 generation. Updated the
7028source
7029accordingly. This includes some code restructuring to eliminate
7030unreachable
7031code, elimination of some gotos, elimination of unused return values,
7032some
7033additional casting, and removal of redundant declarations.
7034
7035Example Code and Data Size: These are the sizes for the OS-independent
7036acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7037debug version of the code includes the debug output trace mechanism and
7038has a
7039much larger code and data size.
7040
7041  Previous Release:
7042    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
7043    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
7044  Current Release:
7045    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
7046    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
7047
70482) iASL Compiler/Disassembler and Tools:
7049
7050No functional changes for this release.
7051
7052----------------------------------------
705314 December 2009. Summary of changes for version 20091214:
7054
70551) ACPI CA Core Subsystem:
7056
7057Enhanced automatic data type conversions for predefined name repairs.
7058This
7059change expands the automatic repairs/conversions for predefined name
7060return
7061values to make Integers, Strings, and Buffers fully interchangeable.
7062Also,
7063a
7064Buffer can be converted to a Package of Integers if necessary. The
7065nsrepair.c
7066module was completely restructured. Lin Ming, Bob Moore.
7067
7068Implemented automatic removal of null package elements during predefined
7069name
7070repairs. This change will automatically remove embedded and trailing NULL
7071package elements from returned package objects that are defined to
7072contain
7073a
7074variable number of sub-packages. The driver is then presented with a
7075package
7076with no null elements to deal with. ACPICA BZ 819.
7077
7078Implemented a repair for the predefined _FDE and _GTM names. The expected
7079return value for both names is a Buffer of 5 DWORDs. This repair fixes
7080two
7081possible problems (both seen in the field), where a package of integers
7082is
7083returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
7084Kim.
7085
7086Implemented additional module-level code support. This change will
7087properly
7088execute module-level code that is not at the root of the namespace (under
7089a
7090Device object, etc.). Now executes the code within the current scope
7091instead
7092of the root. ACPICA BZ 762. Lin Ming.
7093
7094Fixed possible mutex acquisition errors when running _REG methods. Fixes
7095a
7096problem where mutex errors can occur when running a _REG method that is
7097in
7098the same scope as a method-defined operation region or an operation
7099region
7100under a module-level IF block. This type of code is rare, so the problem
7101has
7102not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
7103
7104Fixed a possible memory leak during module-level code execution. An
7105object
7106could be leaked for each block of executed module-level code if the
7107interpreter slack mode is enabled This change deletes any implicitly
7108returned
7109object from the module-level code block. Lin Ming.
7110
7111Removed messages for successful predefined repair(s). The repair
7112mechanism
7113was considered too wordy. Now, messages are only unconditionally emitted
7114if
7115the return object cannot be repaired. Existing messages for successful
7116repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
7117827.
7118
7119Example Code and Data Size: These are the sizes for the OS-independent
7120acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7121debug version of the code includes the debug output trace mechanism and
7122has a
7123much larger code and data size.
7124
7125  Previous Release:
7126    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
7127    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
7128  Current Release:
7129    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
7130    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
7131
71322) iASL Compiler/Disassembler and Tools:
7133
7134iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
7135files
7136were no longer automatically removed at the termination of the compile.
7137
7138acpiexec: Implemented the -f option to specify default region fill value.
7139This option specifies the value used to initialize buffers that simulate
7140operation regions. Default value is zero. Useful for debugging problems
7141that
7142depend on a specific initial value for a region or field.
7143
7144----------------------------------------
714512 November 2009. Summary of changes for version 20091112:
7146
71471) ACPI CA Core Subsystem:
7148
7149Implemented a post-order callback to AcpiWalkNamespace. The existing
7150interface only has a pre-order callback. This change adds an additional
7151parameter for a post-order callback which will be more useful for bus
7152scans.
7153ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
7154
7155Modified the behavior of the operation region memory mapping cache for
7156SystemMemory. Ensure that the memory mappings created for operation
7157regions
7158do not cross 4K page boundaries. Crossing a page boundary while mapping
7159regions can cause kernel warnings on some hosts if the pages have
7160different
7161attributes. Such regions are probably BIOS bugs, and this is the
7162workaround.
7163Linux BZ 14445. Lin Ming.
7164
7165Implemented an automatic repair for predefined methods that must return
7166sorted lists. This change will repair (by sorting) packages returned by
7167_ALR,
7168_PSS, and _TSS. Drivers can now assume that the packages are correctly
7169sorted
7170and do not contain NULL package elements. Adds one new file,
7171namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
7172
7173Fixed a possible fault during predefined name validation if a return
7174Package
7175object contains NULL elements. Also adds a warning if a NULL element is
7176followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
7177may
7178include repair or removal of all such NULL elements where possible.
7179
7180Implemented additional module-level executable AML code support. This
7181change
7182will execute module-level code that is not at the root of the namespace
7183(under a Device object, etc.) at table load time. Module-level executable
7184AML
7185code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
7186
7187Implemented a new internal function to create Integer objects. This
7188function
7189simplifies miscellaneous object creation code. ACPICA BZ 823.
7190
7191Reduced the severity of predefined repair messages, Warning to Info.
7192Since
7193the object was successfully repaired, a warning is too severe. Reduced to
7194an
7195info message for now. These messages may eventually be changed to debug-
7196only.
7197ACPICA BZ 812.
7198
7199Example Code and Data Size: These are the sizes for the OS-independent
7200acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7201debug version of the code includes the debug output trace mechanism and
7202has a
7203much larger code and data size.
7204
7205  Previous Release:
7206    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
7207    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
7208  Current Release:
7209    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
7210    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
7211
72122) iASL Compiler/Disassembler and Tools:
7213
7214iASL: Implemented Switch() with While(1) so that Break works correctly.
7215This
7216change correctly implements the Switch operator with a surrounding
7217While(1)
7218so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
7219
7220iASL: Added a message if a package initializer list is shorter than
7221package
7222length. Adds a new remark for a Package() declaration if an initializer
7223list
7224exists, but is shorter than the declared length of the package. Although
7225technically legal, this is probably a coding error and it is seen in the
7226field. ACPICA BZ 815. Lin Ming, Bob Moore.
7227
7228iASL: Fixed a problem where the compiler could fault after the maximum
7229number
7230of errors was reached (200).
7231
7232acpixtract: Fixed a possible warning for pointer cast if the compiler
7233warning
7234level set very high.
7235
7236----------------------------------------
723713 October 2009. Summary of changes for version 20091013:
7238
72391) ACPI CA Core Subsystem:
7240
7241Fixed a problem where an Operation Region _REG method could be executed
7242more
7243than once. If a custom address space handler is installed by the host
7244before
7245the "initialize operation regions" phase of the ACPICA initialization,
7246any
7247_REG methods for that address space could be executed twice. This change
7248fixes the problem. ACPICA BZ 427. Lin Ming.
7249
7250Fixed a possible memory leak for the Scope() ASL operator. When the exact
7251invocation of "Scope(\)" is executed (change scope to root), one internal
7252operand object was leaked. Lin Ming.
7253
7254Implemented a run-time repair for the _MAT predefined method. If the _MAT
7255return value is defined as a Field object in the AML, and the field
7256size is less than or equal to the default width of an integer (32 or
725764),_MAT
7258can incorrectly return an Integer instead of a Buffer. ACPICA now
7259automatically repairs this problem. ACPICA BZ 810.
7260
7261Implemented a run-time repair for the _BIF and _BIX predefined methods.
7262The
7263"OEM Information" field is often incorrectly returned as an Integer with
7264value zero if the field is not supported by the platform. This is due to
7265an
7266ambiguity in the ACPI specification. The field should always be a string.
7267ACPICA now automatically repairs this problem by returning a NULL string
7268within the returned Package. ACPICA BZ 807.
7269
7270Example Code and Data Size: These are the sizes for the OS-independent
7271acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7272debug version of the code includes the debug output trace mechanism and
7273has a
7274much larger code and data size.
7275
7276  Previous Release:
7277    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
7278    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
7279  Current Release:
7280    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
7281    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
7282
72832) iASL Compiler/Disassembler and Tools:
7284
7285Disassembler: Fixed a problem where references to external symbols that
7286contained one or more parent-prefixes (carats) were not handled
7287correctly,
7288possibly causing a fault. ACPICA BZ 806. Lin Ming.
7289
7290Disassembler: Restructured the code so that all functions that handle
7291external symbols are in a single module. One new file is added,
7292common/dmextern.c.
7293
7294AML Debugger: Added a max count argument for the Batch command (which
7295executes multiple predefined methods within the namespace.)
7296
7297iASL: Updated the compiler documentation (User Reference.) Available at
7298http://www.acpica.org/documentation/. ACPICA BZ 750.
7299
7300AcpiXtract: Updated for Lint and other formatting changes. Close all open
7301files.
7302
7303----------------------------------------
730403 September 2009. Summary of changes for version 20090903:
7305
73061) ACPI CA Core Subsystem:
7307
7308For Windows Vista compatibility, added the automatic execution of an _INI
7309method located at the namespace root (\_INI). This method is executed at
7310table load time. This support is in addition to the automatic execution
7311of
7312\_SB._INI. Lin Ming.
7313
7314Fixed a possible memory leak in the interpreter for AML package objects
7315if
7316the package initializer list is longer than the defined size of the
7317package.
7318This apparently can only happen if the BIOS changes the package size on
7319the
7320fly (seen in a _PSS object), as ASL compilers do not allow this. The
7321interpreter will truncate the package to the defined size (and issue an
7322error
7323message), but previously could leave the extra objects undeleted if they
7324were
7325pre-created during the argument processing (such is the case if the
7326package
7327consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
7328
7329Fixed a problem seen when a Buffer or String is stored to itself via ASL.
7330This has been reported in the field. Previously, ACPICA would zero out
7331the
7332buffer/string. Now, the operation is treated as a noop. Provides Windows
7333compatibility. ACPICA BZ 803. Lin Ming.
7334
7335Removed an extraneous error message for ASL constructs of the form
7336Store(LocalX,LocalX) when LocalX is uninitialized. These curious
7337statements
7338are seen in many BIOSs and are once again treated as NOOPs and no error
7339is
7340emitted when they are encountered. ACPICA BZ 785.
7341
7342Fixed an extraneous warning message if a _DSM reserved method returns a
7343Package object. _DSM can return any type of object, so validation on the
7344return type cannot be performed. ACPICA BZ 802.
7345
7346Example Code and Data Size: These are the sizes for the OS-independent
7347acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7348debug version of the code includes the debug output trace mechanism and
7349has a
7350much larger code and data size.
7351
7352  Previous Release:
7353    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
7354    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
7355  Current Release:
7356    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
7357    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
7358
73592) iASL Compiler/Disassembler and Tools:
7360
7361iASL: Fixed a problem with the use of the Alias operator and Resource
7362Templates. The correct alias is now constructed and no error is emitted.
7363ACPICA BZ 738.
7364
7365iASL: Implemented the -I option to specify additional search directories
7366for
7367include files. Allows multiple additional search paths for include files.
7368Directories are searched in the order specified on the command line
7369(after
7370the local directory is searched.) ACPICA BZ 800.
7371
7372iASL: Fixed a problem where the full pathname for include files was not
7373emitted for warnings/errors. This caused the IDE support to not work
7374properly. ACPICA BZ 765.
7375
7376iASL: Implemented the -@ option to specify a Windows-style response file
7377containing additional command line options. ACPICA BZ 801.
7378
7379AcpiExec: Added support to load multiple AML files simultaneously (such
7380as
7381a
7382DSDT and multiple SSDTs). Also added support for wildcards within the AML
7383pathname. These features allow all machine tables to be easily loaded and
7384debugged together. ACPICA BZ 804.
7385
7386Disassembler: Added missing support for disassembly of HEST table Error
7387Bank
7388subtables.
7389
7390----------------------------------------
739130 July 2009. Summary of changes for version 20090730:
7392
7393The ACPI 4.0 implementation for ACPICA is complete with this release.
7394
73951) ACPI CA Core Subsystem:
7396
7397ACPI 4.0: Added header file support for all new and changed ACPI tables.
7398Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
7399new
7400for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
7401BERT,
7402EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
7403There
7404have been some ACPI 4.0 changes to other existing tables. Split the large
7405actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
7406
7407ACPI 4.0: Implemented predefined name validation for all new names. There
7408are
740931 new names in ACPI 4.0. The predefined validation module was split into
7410two
7411files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
7412
7413Implemented support for so-called "module-level executable code". This is
7414executable AML code that exists outside of any control method and is
7415intended
7416to be executed at table load time. Although illegal since ACPI 2.0, this
7417type
7418of code still exists and is apparently still being created. Blocks of
7419this
7420code are now detected and executed as intended. Currently, the code
7421blocks
7422must exist under either an If, Else, or While construct; these are the
7423typical cases seen in the field. ACPICA BZ 762. Lin Ming.
7424
7425Implemented an automatic dynamic repair for predefined names that return
7426nested Package objects. This applies to predefined names that are defined
7427to
7428return a variable-length Package of sub-packages. If the number of sub-
7429packages is one, BIOS code is occasionally seen that creates a simple
7430single
7431package with no sub-packages. This code attempts to fix the problem by
7432wrapping a new package object around the existing package. These methods
7433can
7434be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
7435BZ
7436790.
7437
7438Fixed a regression introduced in 20090625 for the AcpiGetDevices
7439interface.
7440The _HID/_CID matching was broken and no longer matched IDs correctly.
7441ACPICA
7442BZ 793.
7443
7444Fixed a problem with AcpiReset where the reset would silently fail if the
7445register was one of the protected I/O ports. AcpiReset now bypasses the
7446port
7447validation mechanism. This may eventually be driven into the
7448AcpiRead/Write
7449interfaces.
7450
7451Fixed a regression related to the recent update of the AcpiRead/Write
7452interfaces. A sleep/suspend could fail if the optional PM2 Control
7453register
7454does not exist during an attempt to write the Bus Master Arbitration bit.
7455(However, some hosts already delete the code that writes this bit, and
7456the
7457code may in fact be obsolete at this date.) ACPICA BZ 799.
7458
7459Fixed a problem where AcpiTerminate could fault if inadvertently called
7460twice
7461in succession. ACPICA BZ 795.
7462
7463Example Code and Data Size: These are the sizes for the OS-independent
7464acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7465debug version of the code includes the debug output trace mechanism and
7466has a
7467much larger code and data size.
7468
7469  Previous Release:
7470    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
7471    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
7472  Current Release:
7473    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
7474    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
7475
74762) iASL Compiler/Disassembler and Tools:
7477
7478ACPI 4.0: Implemented disassembler support for all new ACPI tables and
7479changes to existing tables. ACPICA BZ 775.
7480
7481----------------------------------------
748225 June 2009. Summary of changes for version 20090625:
7483
7484The ACPI 4.0 Specification was released on June 16 and is available at
7485www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
7486continue for the next few releases.
7487
74881) ACPI CA Core Subsystem:
7489
7490ACPI 4.0: Implemented interpreter support for the IPMI operation region
7491address space. Includes support for bi-directional data buffers and an
7492IPMI
7493address space handler (to be installed by an IPMI device driver.) ACPICA
7494BZ
7495773. Lin Ming.
7496
7497ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
7498Includes
7499support in both the header files and the disassembler.
7500
7501Completed a major update for the AcpiGetObjectInfo external interface.
7502Changes include:
7503 - Support for variable, unlimited length HID, UID, and CID strings.
7504 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
7505etc.)
7506 - Call the _SxW power methods on behalf of a device object.
7507 - Determine if a device is a PCI root bridge.
7508 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
7509These changes will require an update to all callers of this interface.
7510See
7511the updated ACPICA Programmer Reference for details. One new source file
7512has
7513been added - utilities/utids.c. ACPICA BZ 368, 780.
7514
7515Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
7516transfers. The Value parameter has been extended from 32 bits to 64 bits
7517in
7518order to support new ACPI 4.0 tables. These changes will require an
7519update
7520to
7521all callers of these interfaces. See the ACPICA Programmer Reference for
7522details. ACPICA BZ 768.
7523
7524Fixed several problems with AcpiAttachData. The handler was not invoked
7525when
7526the host node was deleted. The data sub-object was not automatically
7527deleted
7528when the host node was deleted. The interface to the handler had an
7529unused
7530parameter, this was removed. ACPICA BZ 778.
7531
7532Enhanced the function that dumps ACPI table headers. All non-printable
7533characters in the string fields are now replaced with '?' (Signature,
7534OemId,
7535OemTableId, and CompilerId.) ACPI tables with non-printable characters in
7536these fields are occasionally seen in the field. ACPICA BZ 788.
7537
7538Fixed a problem with predefined method repair code where the code that
7539attempts to repair/convert an object of incorrect type is only executed
7540on
7541the first time the predefined method is called. The mechanism that
7542disables
7543warnings on subsequent calls was interfering with the repair mechanism.
7544ACPICA BZ 781.
7545
7546Fixed a possible memory leak in the predefined validation/repair code
7547when
7548a
7549buffer is automatically converted to an expected string object.
7550
7551Removed obsolete 16-bit files from the distribution and from the current
7552git
7553tree head. ACPICA BZ 776.
7554
7555Example Code and Data Size: These are the sizes for the OS-independent
7556acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7557debug version of the code includes the debug output trace mechanism and
7558has a
7559much larger code and data size.
7560
7561  Previous Release:
7562    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
7563    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
7564  Current Release:
7565    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
7566    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
7567
75682) iASL Compiler/Disassembler and Tools:
7569
7570ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
7571operation region keyword. ACPICA BZ 771, 772. Lin Ming.
7572
7573ACPI 4.0: iASL - implemented compile-time validation support for all new
7574predefined names and control methods (31 total). ACPICA BZ 769.
7575
7576----------------------------------------
757721 May 2009. Summary of changes for version 20090521:
7578
75791) ACPI CA Core Subsystem:
7580
7581Disabled the preservation of the SCI enable bit in the PM1 control
7582register.
7583The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
7584to
7585be
7586a "preserved" bit - "OSPM always preserves this bit position", section
75874.7.3.2.1. However, some machines fail if this bit is in fact preserved
7588because the bit needs to be explicitly set by the OS as a workaround. No
7589machines fail if the bit is not preserved. Therefore, ACPICA no longer
7590attempts to preserve this bit.
7591
7592Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
7593incorrectly formed _PRT package could cause a fault. Added validation to
7594ensure that each package element is actually a sub-package.
7595
7596Implemented a new interface to install or override a single control
7597method,
7598AcpiInstallMethod. This interface is useful when debugging in order to
7599repair
7600an existing method or to install a missing method without having to
7601override
7602the entire ACPI table. See the ACPICA Programmer Reference for use and
7603examples. Lin Ming, Bob Moore.
7604
7605Fixed several reference count issues with the DdbHandle object that is
7606created from a Load or LoadTable operator. Prevent premature deletion of
7607the
7608object. Also, mark the object as invalid once the table has been
7609unloaded.
7610This is needed because the handle itself may not be deleted after the
7611table
7612unload, depending on whether it has been stored in a named object by the
7613caller. Lin Ming.
7614
7615Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
7616mutexes of the same sync level are acquired but then not released in
7617strict
7618opposite order, the internally maintained Current Sync Level becomes
7619confused
7620and can cause subsequent execution errors. ACPICA BZ 471.
7621
7622Changed the allowable release order for ASL mutex objects. The ACPI 4.0
7623specification has been changed to make the SyncLevel for mutex objects
7624more
7625useful. When releasing a mutex, the SyncLevel of the mutex must now be
7626the
7627same as the current sync level. This makes more sense than the previous
7628rule
7629(SyncLevel less than or equal). This change updates the code to match the
7630specification.
7631
7632Fixed a problem with the local version of the AcpiOsPurgeCache function.
7633The
7634(local) cache must be locked during all cache object deletions. Andrew
7635Baumann.
7636
7637Updated the Load operator to use operation region interfaces. This
7638replaces
7639direct memory mapping with region access calls. Now, all region accesses
7640go
7641through the installed region handler as they should.
7642
7643Simplified and optimized the NsGetNextNode function. Reduced parameter
7644count
7645and reduced code for this frequently used function.
7646
7647Example Code and Data Size: These are the sizes for the OS-independent
7648acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7649debug version of the code includes the debug output trace mechanism and
7650has a
7651much larger code and data size.
7652
7653  Previous Release:
7654    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
7655    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
7656  Current Release:
7657    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
7658    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
7659
76602) iASL Compiler/Disassembler and Tools:
7661
7662Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
7663problems
7664with sub-table disassembly and handling invalid sub-tables. Attempt
7665recovery
7666after an invalid sub-table ID.
7667
7668----------------------------------------
766922 April 2009. Summary of changes for version 20090422:
7670
76711) ACPI CA Core Subsystem:
7672
7673Fixed a compatibility issue with the recently released I/O port
7674protection
7675mechanism. For windows compatibility, 1) On a port protection violation,
7676simply ignore the request and do not return an exception (allow the
7677control
7678method to continue execution.) 2) If only part of the request overlaps a
7679protected port, read/write the individual ports that are not protected.
7680Linux
7681BZ 13036. Lin Ming
7682
7683Enhanced the execution of the ASL/AML BreakPoint operator so that it
7684actually
7685breaks into the AML debugger if the debugger is present. This matches the
7686ACPI-defined behavior.
7687
7688Fixed several possible warnings related to the use of the configurable
7689ACPI_THREAD_ID. This type can now be configured as either an integer or a
7690pointer with no warnings. Also fixes several warnings in printf-like
7691statements for the 64-bit build when the type is configured as a pointer.
7692ACPICA BZ 766, 767.
7693
7694Fixed a number of possible warnings when compiling with gcc 4+ (depending
7695on
7696warning options.) Examples include printf formats, aliasing, unused
7697globals,
7698missing prototypes, missing switch default statements, use of non-ANSI
7699library functions, use of non-ANSI constructs. See generate/unix/Makefile
7700for
7701a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
7702
7703Example Code and Data Size: These are the sizes for the OS-independent
7704acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7705debug version of the code includes the debug output trace mechanism and
7706has a
7707much larger code and data size.
7708
7709  Previous Release:
7710    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
7711    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
7712  Current Release:
7713    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
7714    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
7715
77162) iASL Compiler/Disassembler and Tools:
7717
7718iASL: Fixed a generation warning from Bison 2.3 and fixed several
7719warnings
7720on
7721the 64-bit build.
7722
7723iASL: Fixed a problem where the Unix/Linux versions of the compiler could
7724not
7725correctly digest Windows/DOS formatted files (with CR/LF).
7726
7727iASL: Added a new option for "quiet mode" (-va) that produces only the
7728compilation summary, not individual errors and warnings. Useful for large
7729batch compilations.
7730
7731AcpiExec: Implemented a new option (-z) to enable a forced
7732semaphore/mutex
7733timeout that can be used to detect hang conditions during execution of
7734AML
7735code (includes both internal semaphores and AML-defined mutexes and
7736events.)
7737
7738Added new makefiles for the generation of acpica in a generic unix-like
7739environment. These makefiles are intended to generate the acpica tools
7740and
7741utilities from the original acpica git source tree structure.
7742
7743Test Suites: Updated and cleaned up the documentation files. Updated the
7744copyrights to 2009, affecting all source files. Use the new version of
7745iASL
7746with quiet mode. Increased the number of available semaphores in the
7747Windows
7748OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
7749added
7750an alternate implementation of the semaphore timeout to allow aslts to
7751execute fully on Cygwin.
7752
7753----------------------------------------
775420 March 2009. Summary of changes for version 20090320:
7755
77561) ACPI CA Core Subsystem:
7757
7758Fixed a possible race condition between AcpiWalkNamespace and dynamic
7759table
7760unloads. Added a reader/writer locking mechanism to allow multiple
7761concurrent
7762namespace walks (readers), but block a dynamic table unload until it can
7763gain
7764exclusive write access to the namespace. This fixes a problem where a
7765table
7766unload could (possibly catastrophically) delete the portion of the
7767namespace
7768that is currently being examined by a walk. Adds a new file, utlock.c,
7769that
7770implements the reader/writer lock mechanism. ACPICA BZ 749.
7771
7772Fixed a regression introduced in version 20090220 where a change to the
7773FADT
7774handling could cause the ACPICA subsystem to access non-existent I/O
7775ports.
7776
7777Modified the handling of FADT register and table (FACS/DSDT) addresses.
7778The
7779FADT can contain both 32-bit and 64-bit versions of these addresses.
7780Previously, the 64-bit versions were favored, meaning that if both 32 and
778164
7782versions were valid, but not equal, the 64-bit version was used. This was
7783found to cause some machines to fail. Now, in this case, the 32-bit
7784version
7785is used instead. This now matches the Windows behavior.
7786
7787Implemented a new mechanism to protect certain I/O ports. Provides
7788Microsoft
7789compatibility and protects the standard PC I/O ports from access via AML
7790code. Adds a new file, hwvalid.c
7791
7792Fixed a possible extraneous warning message from the FADT support. The
7793message warns of a 32/64 length mismatch between the legacy and GAS
7794definitions for a register.
7795
7796Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
7797is
7798made obsolete by the port protection mechanism above. It was previously
7799used
7800to validate the entire address range of an operation region, which could
7801be
7802incorrect if the range included illegal ports, but fields within the
7803operation region did not actually access those ports. Validation is now
7804performed on a per-field basis instead of the entire region.
7805
7806Modified the handling of the PM1 Status Register ignored bit (bit 11.)
7807Ignored bits must be "preserved" according to the ACPI spec. Usually,
7808this
7809means a read/modify/write when writing to the register. However, for
7810status
7811registers, writing a one means clear the event. Writing a zero means
7812preserve
7813the event (do not clear.) This behavior is clarified in the ACPI 4.0
7814spec,
7815and the ACPICA code now simply always writes a zero to the ignored bit.
7816
7817Modified the handling of ignored bits for the PM1 A/B Control Registers.
7818As
7819per the ACPI specification, for the control registers, preserve
7820(read/modify/write) all bits that are defined as either reserved or
7821ignored.
7822
7823Updated the handling of write-only bits in the PM1 A/B Control Registers.
7824When reading the register, zero the write-only bits as per the ACPI spec.
7825ACPICA BZ 443. Lin Ming.
7826
7827Removed "Linux" from the list of supported _OSI strings. Linux no longer
7828wants to reply true to this request. The Windows strings are the only
7829paths
7830through the AML that are tested and known to work properly.
7831
7832  Previous Release:
7833    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
7834    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
7835  Current Release:
7836    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
7837    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
7838
78392) iASL Compiler/Disassembler and Tools:
7840
7841Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
7842and
7843aetables.c
7844
7845----------------------------------------
784620 February 2009. Summary of changes for version 20090220:
7847
78481) ACPI CA Core Subsystem:
7849
7850Optimized the ACPI register locking. Removed locking for reads from the
7851ACPI
7852bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
7853is
7854not required when reading the single-bit registers. The
7855AcpiGetRegisterUnlocked function is no longer needed and has been
7856removed.
7857This will improve performance for reads on these registers. ACPICA BZ
7858760.
7859
7860Fixed the parameter validation for AcpiRead/Write. Now return
7861AE_BAD_PARAMETER if the input register pointer is null, and
7862AE_BAD_ADDRESS
7863if
7864the register has an address of zero. Previously, these cases simply
7865returned
7866AE_OK. For optional registers such as PM1B status/enable/control, the
7867caller
7868should check for a valid register address before calling. ACPICA BZ 748.
7869
7870Renamed the external ACPI bit register access functions. Renamed
7871AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
7872functions. The new names are AcpiReadBitRegister and
7873AcpiWriteBitRegister.
7874Also, restructured the code for these functions by simplifying the code
7875path
7876and condensing duplicate code to reduce code size.
7877
7878Added new functions to transparently handle the possibly split PM1 A/B
7879registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
7880functions
7881now handle the split registers for PM1 Status, Enable, and Control.
7882ACPICA
7883BZ
7884746.
7885
7886Added a function to handle the PM1 control registers,
7887AcpiHwWritePm1Control.
7888This function writes both of the PM1 control registers (A/B). These
7889registers
7890are different than the PM1 A/B status and enable registers in that
7891different
7892values can be written to the A/B registers. Most notably, the SLP_TYP
7893bits
7894can be different, as per the values returned from the _Sx predefined
7895methods.
7896
7897Removed an extra register write within AcpiHwClearAcpiStatus. This
7898function
7899was writing an optional PM1B status register twice. The existing call to
7900the
7901low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
7902A/B
7903register. ACPICA BZ 751.
7904
7905Split out the PM1 Status registers from the FADT. Added new globals for
7906these
7907registers (A/B), similar to the way the PM1 Enable registers are handled.
7908Instead of overloading the FADT Event Register blocks. This makes the
7909code
7910clearer and less prone to error.
7911
7912Fixed the warning message for when the platform contains too many ACPI
7913tables
7914for the default size of the global root table data structure. The
7915calculation
7916for the truncation value was incorrect.
7917
7918Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
7919obsolete macro, since it is now a simple reference to ->common.type.
7920There
7921were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
7922
7923Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
7924TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
7925simply SLEEP_TYPE. ACPICA BZ 754.
7926
7927Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
7928function is only needed on 64-bit host operating systems and is thus not
7929included for 32-bit hosts.
7930
7931Debug output: print the input and result for invocations of the _OSI
7932reserved
7933control method via the ACPI_LV_INFO debug level. Also, reduced some of
7934the
7935verbosity of this debug level. Len Brown.
7936
7937Example Code and Data Size: These are the sizes for the OS-independent
7938acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7939debug version of the code includes the debug output trace mechanism and
7940has a
7941much larger code and data size.
7942
7943  Previous Release:
7944    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
7945    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
7946  Current Release:
7947    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
7948    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
7949
79502) iASL Compiler/Disassembler and Tools:
7951
7952Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
7953various legal performance profiles.
7954
7955----------------------------------------
795623 January 2009. Summary of changes for version 20090123:
7957
79581) ACPI CA Core Subsystem:
7959
7960Added the 2009 copyright to all module headers and signons. This affects
7961virtually every file in the ACPICA core subsystem, the iASL compiler, and
7962the tools/utilities.
7963
7964Implemented a change to allow the host to override any ACPI table,
7965including
7966dynamically loaded tables. Previously, only the DSDT could be replaced by
7967the
7968host. With this change, the AcpiOsTableOverride interface is called for
7969each
7970table found in the RSDT/XSDT during ACPICA initialization, and also
7971whenever
7972a table is dynamically loaded via the AML Load operator.
7973
7974Updated FADT flag definitions, especially the Boot Architecture flags.
7975
7976Debugger: For the Find command, automatically pad the input ACPI name
7977with
7978underscores if the name is shorter than 4 characters. This enables a
7979match
7980with the actual namespace entry which is itself padded with underscores.
7981
7982Example Code and Data Size: These are the sizes for the OS-independent
7983acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7984debug version of the code includes the debug output trace mechanism and
7985has a
7986much larger code and data size.
7987
7988  Previous Release:
7989    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
7990    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
7991  Current Release:
7992    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
7993    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
7994
79952) iASL Compiler/Disassembler and Tools:
7996
7997Fix build error under Bison-2.4.
7998
7999Dissasembler: Enhanced FADT support. Added decoding of the Boot
8000Architecture
8001flags. Now decode all flags, regardless of the FADT version. Flag output
8002includes the FADT version which first defined each flag.
8003
8004The iASL -g option now dumps the RSDT to a file (in addition to the FADT
8005and
8006DSDT). Windows only.
8007
8008----------------------------------------
800904 December 2008. Summary of changes for version 20081204:
8010
80111) ACPI CA Core Subsystem:
8012
8013The ACPICA Programmer Reference has been completely updated and revamped
8014for
8015this release. This includes updates to the external interfaces, OSL
8016interfaces, the overview sections, and the debugger reference.
8017
8018Several new ACPICA interfaces have been implemented and documented in the
8019programmer reference:
8020AcpiReset - Writes the reset value to the FADT-defined reset register.
8021AcpiDisableAllGpes - Disable all available GPEs.
8022AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
8023AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
8024AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
8025AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
8026AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
8027
8028Most of the public ACPI hardware-related interfaces have been moved to a
8029new
8030file, components/hardware/hwxface.c
8031
8032Enhanced the FADT parsing and low-level ACPI register access: The ACPI
8033register lengths within the FADT are now used, and the low level ACPI
8034register access no longer hardcodes the ACPI register lengths. Given that
8035there may be some risk in actually trusting the FADT register lengths, a
8036run-
8037time option was added to fall back to the default hardcoded lengths if
8038the
8039FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
8040option is set to true for now, and a warning is issued if a suspicious
8041FADT
8042register length is overridden with the default value.
8043
8044Fixed a reference count issue in NsRepairObject. This problem was
8045introduced
8046in version 20081031 as part of a fix to repair Buffer objects within
8047Packages. Lin Ming.
8048
8049Added semaphore support to the Linux/Unix application OS-services layer
8050(OSL). ACPICA BZ 448. Lin Ming.
8051
8052Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
8053will
8054be implemented in the OSL, or will binary semaphores be used instead.
8055
8056Example Code and Data Size: These are the sizes for the OS-independent
8057acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8058debug version of the code includes the debug output trace mechanism and
8059has a
8060much larger code and data size.
8061
8062  Previous Release:
8063    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
8064    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
8065  Current Release:
8066    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
8067    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
8068
80692) iASL Compiler/Disassembler and Tools:
8070
8071iASL: Completed the '-e' option to include additional ACPI tables in
8072order
8073to
8074aid with disassembly and External statement generation. ACPICA BZ 742.
8075Lin
8076Ming.
8077
8078iASL: Removed the "named object in while loop" error. The compiler cannot
8079determine how many times a loop will execute. ACPICA BZ 730.
8080
8081Disassembler: Implemented support for FADT revision 2 (MS extension).
8082ACPICA
8083BZ 743.
8084
8085Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
8086MCFG).
8087
8088----------------------------------------
808931 October 2008. Summary of changes for version 20081031:
8090
80911) ACPI CA Core Subsystem:
8092
8093Restructured the ACPICA header files into public/private. acpi.h now
8094includes
8095only the "public" acpica headers. All other acpica headers are "private"
8096and
8097should not be included by acpica users. One new file, accommon.h is used
8098to
8099include the commonly used private headers for acpica code generation.
8100Future
8101plans include moving all private headers to a new subdirectory.
8102
8103Implemented an automatic Buffer->String return value conversion for
8104predefined ACPI methods. For these methods (such as _BIF), added
8105automatic
8106conversion for return objects that are required to be a String, but a
8107Buffer
8108was found instead. This can happen when reading string battery data from
8109an
8110operation region, because it used to be difficult to convert the data
8111from
8112buffer to string from within the ASL. Ensures that the host OS is
8113provided
8114with a valid null-terminated string. Linux BZ 11822.
8115
8116Updated the FACS waking vector interfaces. Split
8117AcpiSetFirmwareWakingVector
8118into two: one for the 32-bit vector, another for the 64-bit vector. This
8119is
8120required because the host OS must setup the wake much differently for
8121each
8122vector (real vs. protected mode, etc.) and the interface itself should
8123not
8124be
8125deciding which vector to use. Also, eliminated the
8126GetFirmwareWakingVector
8127interface, as it served no purpose (only the firmware reads the vector,
8128OS
8129only writes the vector.) ACPICA BZ 731.
8130
8131Implemented a mechanism to escape infinite AML While() loops. Added a
8132loop
8133counter to force exit from AML While loops if the count becomes too
8134large.
8135This can occur in poorly written AML when the hardware does not respond
8136within a while loop and the loop does not implement a timeout. The
8137maximum
8138loop count is configurable. A new exception code is returned when a loop
8139is
8140broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
8141
8142Optimized the execution of AML While loops. Previously, a control state
8143object was allocated and freed for each execution of the loop. The
8144optimization is to simply reuse the control state for each iteration.
8145This
8146speeds up the raw loop execution time by about 5%.
8147
8148Enhanced the implicit return mechanism. For Windows compatibility, return
8149an
8150implicit integer of value zero for methods that contain no executable
8151code.
8152Such methods are seen in the field as stubs (presumably), and can cause
8153drivers to fail if they expect a return value. Lin Ming.
8154
8155Allow multiple backslashes as root prefixes in namepaths. In a fully
8156qualified namepath, allow multiple backslash prefixes. This can happen
8157(and
8158is seen in the field) because of the use of a double-backslash in strings
8159(since backslash is the escape character) causing confusion. ACPICA BZ
8160739
8161Lin Ming.
8162
8163Emit a warning if two different FACS or DSDT tables are discovered in the
8164FADT. Checks if there are two valid but different addresses for the FACS
8165and
8166DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
8167
8168Consolidated the method argument count validation code. Merged the code
8169that
8170validates control method argument counts into the predefined validation
8171module. Eliminates possible multiple warnings for incorrect argument
8172counts.
8173
8174Implemented ACPICA example code. Includes code for ACPICA initialization,
8175handler installation, and calling a control method. Available at
8176source/tools/examples.
8177
8178Added a global pointer for FACS table to simplify internal FACS access.
8179Use
8180the global pointer instead of using AcpiGetTableByIndex for each FACS
8181access.
8182This simplifies the code for the Global Lock and the Firmware Waking
8183Vector(s).
8184
8185Example Code and Data Size: These are the sizes for the OS-independent
8186acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8187debug version of the code includes the debug output trace mechanism and
8188has a
8189much larger code and data size.
8190
8191  Previous Release:
8192    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
8193    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
8194  Current Release:
8195    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
8196    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
8197
81982) iASL Compiler/Disassembler and Tools:
8199
8200iASL: Improved disassembly of external method calls. Added the -e option
8201to
8202allow the inclusion of additional ACPI tables to help with the
8203disassembly
8204of
8205method invocations and the generation of external declarations during the
8206disassembly. Certain external method invocations cannot be disassembled
8207properly without the actual declaration of the method. Use the -e option
8208to
8209include the table where the external method(s) are actually declared.
8210Most
8211useful for disassembling SSDTs that make method calls back to the master
8212DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
8213-d
8214-e dsdt.aml ssdt1.aml
8215
8216iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
8217problem where the use of an alias within a namepath would result in a not
8218found error or cause the compiler to fault. Also now allows forward
8219references from the Alias operator itself. ACPICA BZ 738.
8220
8221----------------------------------------
822226 September 2008. Summary of changes for version 20080926:
8223
82241) ACPI CA Core Subsystem:
8225
8226Designed and implemented a mechanism to validate predefined ACPI methods
8227and
8228objects. This code validates the predefined ACPI objects (objects whose
8229names
8230start with underscore) that appear in the namespace, at the time they are
8231evaluated. The argument count and the type of the returned object are
8232validated against the ACPI specification. The purpose of this validation
8233is
8234to detect problems with the BIOS-implemented predefined ACPI objects
8235before
8236the results are returned to the ACPI-related drivers. Future enhancements
8237may
8238include actual repair of incorrect return objects where possible. Two new
8239files are nspredef.c and acpredef.h.
8240
8241Fixed a fault in the AML parser if a memory allocation fails during the
8242Op
8243completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
8244
8245Fixed an issue with implicit return compatibility. This change improves
8246the
8247implicit return mechanism to be more compatible with the MS interpreter.
8248Lin
8249Ming, ACPICA BZ 349.
8250
8251Implemented support for zero-length buffer-to-string conversions. Allow
8252zero
8253length strings during interpreter buffer-to-string conversions. For
8254example,
8255during the ToDecimalString and ToHexString operators, as well as implicit
8256conversions. Fiodor Suietov, ACPICA BZ 585.
8257
8258Fixed two possible memory leaks in the error exit paths of
8259AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
8260are
8261similar in that they use a stack of state objects in order to eliminate
8262recursion. The stack must be fully unwound and deallocated if an error
8263occurs. Lin Ming. ACPICA BZ 383.
8264
8265Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
8266global
8267ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
8268Moore ACPICA BZ 442.
8269
8270Removed the obsolete version number in module headers. Removed the
8271"$Revision" number that appeared in each module header. This version
8272number
8273was useful under SourceSafe and CVS, but has no meaning under git. It is
8274not
8275only incorrect, it could also be misleading.
8276
8277Example Code and Data Size: These are the sizes for the OS-independent
8278acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8279debug version of the code includes the debug output trace mechanism and
8280has a
8281much larger code and data size.
8282
8283  Previous Release:
8284    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
8285    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
8286  Current Release:
8287    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
8288    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
8289
8290----------------------------------------
829129 August 2008. Summary of changes for version 20080829:
8292
82931) ACPI CA Core Subsystem:
8294
8295Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
8296Reference. Changes include the elimination of cheating on the Object
8297field
8298for the DdbHandle subtype, addition of a reference class field to
8299differentiate the various reference types (instead of an AML opcode), and
8300the
8301cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
8302
8303Reduce an error to a warning for an incorrect method argument count.
8304Previously aborted with an error if too few arguments were passed to a
8305control method via the external ACPICA interface. Now issue a warning
8306instead
8307and continue. Handles the case where the method inadvertently declares
8308too
8309many arguments, but does not actually use the extra ones. Applies mainly
8310to
8311the predefined methods. Lin Ming. Linux BZ 11032.
8312
8313Disallow the evaluation of named object types with no intrinsic value.
8314Return
8315AE_TYPE for objects that have no value and therefore evaluation is
8316undefined:
8317Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
8318of
8319these types were allowed, but an exception would be generated at some
8320point
8321during the evaluation. Now, the error is generated up front.
8322
8323Fixed a possible memory leak in the AcpiNsGetExternalPathname function
8324(nsnames.c). Fixes a leak in the error exit path.
8325
8326Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
8327debug
8328levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
8329ACPI_EXCEPTION
8330interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
8331ACPI_LV_EVENTS.
8332
8333Removed obsolete and/or unused exception codes from the acexcep.h header.
8334There is the possibility that certain device drivers may be affected if
8335they
8336use any of these exceptions.
8337
8338The ACPICA documentation has been added to the public git source tree,
8339under
8340acpica/documents. Included are the ACPICA programmer reference, the iASL
8341compiler reference, and the changes.txt release logfile.
8342
8343Example Code and Data Size: These are the sizes for the OS-independent
8344acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8345debug version of the code includes the debug output trace mechanism and
8346has a
8347much larger code and data size.
8348
8349  Previous Release:
8350    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
8351    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
8352  Current Release:
8353    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
8354    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
8355
83562) iASL Compiler/Disassembler and Tools:
8357
8358Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
8359defines _SCP with 3 arguments. Previous versions defined it with only 1
8360argument. iASL now allows both definitions.
8361
8362iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
8363zero-
8364length subtables when disassembling ACPI tables. Also fixed a couple of
8365errors where a full 16-bit table type field was not extracted from the
8366input
8367properly.
8368
8369acpisrc: Improve comment counting mechanism for generating source code
8370statistics. Count first and last lines of multi-line comments as
8371whitespace,
8372not comment lines. Handle Linux legal header in addition to standard
8373acpica
8374header.
8375
8376----------------------------------------
8377
837829 July 2008. Summary of changes for version 20080729:
8379
83801) ACPI CA Core Subsystem:
8381
8382Fix a possible deadlock in the GPE dispatch. Remove call to
8383AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
8384attempt
8385to acquire the GPE lock but can deadlock since the GPE lock is already
8386held
8387at dispatch time. This code was introduced in version 20060831 as a
8388response
8389to Linux BZ 6881 and has since been removed from Linux.
8390
8391Add a function to dereference returned reference objects. Examines the
8392return
8393object from a call to AcpiEvaluateObject. Any Index or RefOf references
8394are
8395automatically dereferenced in an attempt to return something useful
8396(these
8397reference types cannot be converted into an external ACPI_OBJECT.)
8398Provides
8399MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
8400
8401x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
8402subtables for the MADT and one new subtable for the SRAT. Includes
8403disassembler and AcpiSrc support. Data from the Intel 64 Architecture
8404x2APIC
8405Specification, June 2008.
8406
8407Additional error checking for pathname utilities. Add error check after
8408all
8409calls to AcpiNsGetPathnameLength. Add status return from
8410AcpiNsBuildExternalPath and check after all calls. Add parameter
8411validation
8412to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
8413
8414Return status from the global init function AcpiUtGlobalInitialize. This
8415is
8416used by both the kernel subsystem and the utilities such as iASL
8417compiler.
8418The function could possibly fail when the caches are initialized. Yang
8419Yi.
8420
8421Add a function to decode reference object types to strings. Created for
8422improved error messages.
8423
8424Improve object conversion error messages. Better error messages during
8425object
8426conversion from internal to the external ACPI_OBJECT. Used for external
8427calls
8428to AcpiEvaluateObject.
8429
8430Example Code and Data Size: These are the sizes for the OS-independent
8431acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8432debug version of the code includes the debug output trace mechanism and
8433has a
8434much larger code and data size.
8435
8436  Previous Release:
8437    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
8438    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
8439  Current Release:
8440    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
8441    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
8442
84432) iASL Compiler/Disassembler and Tools:
8444
8445Debugger: fix a possible hang when evaluating non-methods. Fixes a
8446problem
8447introduced in version 20080701. If the object being evaluated (via
8448execute
8449command) is not a method, the debugger can hang while trying to obtain
8450non-
8451existent parameters.
8452
8453iASL: relax error for using reserved "_T_x" identifiers. These names can
8454appear in a disassembled ASL file if they were emitted by the original
8455compiler. Instead of issuing an error or warning and forcing the user to
8456manually change these names, issue a remark instead.
8457
8458iASL: error if named object created in while loop. Emit an error if any
8459named
8460object is created within a While loop. If allowed, this code will
8461generate
8462a
8463run-time error on the second iteration of the loop when an attempt is
8464made
8465to
8466create the same named object twice. ACPICA bugzilla 730.
8467
8468iASL: Support absolute pathnames for include files. Add support for
8469absolute
8470pathnames within the Include operator. previously, only relative
8471pathnames
8472were supported.
8473
8474iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
8475Descriptor.
8476The ACPI spec requires one interrupt minimum. BZ 423
8477
8478iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
8479Handles the case for the Interrupt Resource Descriptor where
8480the ResourceSource argument is omitted but ResourceSourceIndex
8481is present. Now leave room for the Index. BZ 426
8482
8483iASL: Prevent error message if CondRefOf target does not exist. Fixes
8484cases
8485where an error message is emitted if the target does not exist. BZ 516
8486
8487iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
8488(get ACPI tables on Windows). This was apparently broken in version
848920070919.
8490
8491AcpiXtract: Handle EOF while extracting data. Correctly handle the case
8492where
8493the EOF happens immediately after the last table in the input file. Print
8494completion message. Previously, no message was displayed in this case.
8495
8496----------------------------------------
849701 July 2008. Summary of changes for version 20080701:
8498
84990) Git source tree / acpica.org
8500
8501Fixed a problem where a git-clone from http would not transfer the entire
8502source tree.
8503
85041) ACPI CA Core Subsystem:
8505
8506Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
8507enable bit. Now performs a read-change-write of the enable register
8508instead
8509of simply writing out the cached enable mask. This will prevent
8510inadvertent
8511enabling of GPEs if a rogue GPE is received during initialization (before
8512GPE
8513handlers are installed.)
8514
8515Implemented a copy for dynamically loaded tables. Previously, dynamically
8516loaded tables were simply mapped - but on some machines this memory is
8517corrupted after suspend. Now copy the table to a local buffer. For the
8518OpRegion case, added checksum verify. Use the table length from the table
8519header, not the region length. For the Buffer case, use the table length
8520also. Dennis Noordsij, Bob Moore. BZ 10734
8521
8522Fixed a problem where the same ACPI table could not be dynamically loaded
8523and
8524unloaded more than once. Without this change, a table cannot be loaded
8525again
8526once it has been loaded/unloaded one time. The current mechanism does not
8527unregister a table upon an unload. During a load, if the same table is
8528found,
8529this no longer returns an exception. BZ 722
8530
8531Fixed a problem where the wrong descriptor length was calculated for the
8532EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
8533EndTag
8534are calculated as 12 bytes long, but the actual length in the internal
8535descriptor is 16 because of the round-up to 8 on the 64-bit build.
8536Reported
8537by Linn Crosetto. BZ 728
8538
8539Fixed a possible memory leak in the Unload operator. The DdbHandle
8540returned
8541by Load() did not have its reference count decremented during unload,
8542leading
8543to a memory leak. Lin Ming. BZ 727
8544
8545Fixed a possible memory leak when deleting thermal/processor objects. Any
8546associated notify handlers (and objects) were not being deleted. Fiodor
8547Suietov. BZ 506
8548
8549Fixed the ordering of the ASCII names in the global mutex table to match
8550the
8551actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
8552only.
8553Vegard Nossum. BZ 726
8554
8555Enhanced the AcpiGetObjectInfo interface to return the number of required
8556arguments if the object is a control method. Added this call to the
8557debugger
8558so the proper number of default arguments are passed to a method. This
8559prevents a warning when executing methods from AcpiExec.
8560
8561Added a check for an invalid handle in AcpiGetObjectInfo. Return
8562AE_BAD_PARAMETER if input handle is invalid. BZ 474
8563
8564Fixed an extraneous warning from exconfig.c on the 64-bit build.
8565
8566Example Code and Data Size: These are the sizes for the OS-independent
8567acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8568debug version of the code includes the debug output trace mechanism and
8569has a
8570much larger code and data size.
8571
8572  Previous Release:
8573    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
8574    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
8575  Current Release:
8576    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
8577    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
8578
85792) iASL Compiler/Disassembler and Tools:
8580
8581iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
8582resource descriptor names.
8583
8584iASL: Detect invalid ASCII characters in input (windows version). Removed
8585the
8586"-CF" flag from the flex compile, enables correct detection of non-ASCII
8587characters in the input. BZ 441
8588
8589iASL: Eliminate warning when result of LoadTable is not used. Eliminate
8590the
8591"result of operation not used" warning when the DDB handle returned from
8592LoadTable is not used. The warning is not needed. BZ 590
8593
8594AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
8595method
8596to
8597pass address of table to the AML. Added option to disable OpRegion
8598simulation
8599to allow creation of an OpRegion with a real address that was passed to
8600_CFG.
8601All of this allows testing of the Load and Unload operators from
8602AcpiExec.
8603
8604Debugger: update tables command for unloaded tables. Handle unloaded
8605tables
8606and use the standard table header output routine.
8607
8608----------------------------------------
860909 June 2008. Summary of changes for version 20080609:
8610
86111) ACPI CA Core Subsystem:
8612
8613Implemented a workaround for reversed _PRT entries. A significant number
8614of
8615BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
8616change dynamically detects and repairs this problem. Provides
8617compatibility
8618with MS ACPI. BZ 6859
8619
8620Simplified the internal ACPI hardware interfaces to eliminate the locking
8621flag parameter from Register Read/Write. Added a new external interface,
8622AcpiGetRegisterUnlocked.
8623
8624Fixed a problem where the invocation of a GPE control method could hang.
8625This
8626was a regression introduced in 20080514. The new method argument count
8627validation mechanism can enter an infinite loop when a GPE method is
8628dispatched. Problem fixed by removing the obsolete code that passed GPE
8629block
8630information to the notify handler via the control method parameter
8631pointer.
8632
8633Fixed a problem where the _SST execution status was incorrectly returned
8634to
8635the caller of AcpiEnterSleepStatePrep. This was a regression introduced
8636in
863720080514. _SST is optional and a NOT_FOUND exception should never be
8638returned. BZ 716
8639
8640Fixed a problem where a deleted object could be accessed from within the
8641AML
8642parser. This was a regression introduced in version 20080123 as a fix for
8643the
8644Unload operator. Lin Ming. BZ 10669
8645
8646Cleaned up the debug operand dump mechanism. Eliminated unnecessary
8647operands
8648and eliminated the use of a negative index in a loop. Operands are now
8649displayed in the correct order, not backwards. This also fixes a
8650regression
8651introduced in 20080514 on 64-bit systems where the elimination of
8652ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
8653715
8654
8655Fixed a possible memory leak in EvPciConfigRegionSetup where the error
8656exit
8657path did not delete a locally allocated structure.
8658
8659Updated definitions for the DMAR and SRAT tables to synchronize with the
8660current specifications. Includes disassembler support.
8661
8662Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
8663loop termination value was used. Loop terminated on iteration early,
8664missing
8665one mutex. Linn Crosetto
8666
8667Example Code and Data Size: These are the sizes for the OS-independent
8668acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8669debug version of the code includes the debug output trace mechanism and
8670has a
8671much larger code and data size.
8672
8673  Previous Release:
8674    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
8675    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
8676  Current Release:
8677    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
8678    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
8679
86802) iASL Compiler/Disassembler and Tools:
8681
8682Disassembler: Implemented support for EisaId() within _CID objects. Now
8683disassemble integer _CID objects back to EisaId invocations, including
8684multiple integers within _CID packages. Includes single-step support for
8685debugger also.
8686
8687Disassembler: Added support for DMAR and SRAT table definition changes.
8688
8689----------------------------------------
869014 May 2008. Summary of changes for version 20080514:
8691
86921) ACPI CA Core Subsystem:
8693
8694Fixed a problem where GPEs were enabled too early during the ACPICA
8695initialization. This could lead to "handler not installed" errors on some
8696machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
8697This
8698ensures that all operation regions and devices throughout the namespace
8699have
8700been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
8701
8702Implemented a change to the enter sleep code. Moved execution of the _GTS
8703method to just before setting sleep enable bit. The execution was moved
8704from
8705AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
8706immediately before the SLP_EN bit is set, as per the ACPI specification.
8707Luming Yu, BZ 1653.
8708
8709Implemented a fix to disable unknown GPEs (2nd version). Now always
8710disable
8711the GPE, even if ACPICA thinks that that it is already disabled. It is
8712possible that the AML or some other code has enabled the GPE unbeknownst
8713to
8714the ACPICA code.
8715
8716Fixed a problem with the Field operator where zero-length fields would
8717return
8718an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
8719ASL
8720field declarations in Field(), BankField(), and IndexField(). BZ 10606.
8721
8722Implemented a fix for the Load operator, now load the table at the
8723namespace
8724root. This reverts a change introduced in version 20071019. The table is
8725now
8726loaded at the namespace root even though this goes against the ACPI
8727specification. This provides compatibility with other ACPI
8728implementations.
8729The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
8730Ming.
8731
8732Fixed a problem where ACPICA would not Load() tables with unusual
8733signatures.
8734Now ignore ACPI table signature for Load() operator. Only "SSDT" is
8735acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
8736Therefore, signature validation is worthless. Apparently MS ACPI accepts
8737such
8738signatures, ACPICA must be compatible. BZ 10454.
8739
8740Fixed a possible negative array index in AcpiUtValidateException. Added
8741NULL
8742fields to the exception string arrays to eliminate a -1 subtraction on
8743the
8744SubStatus field.
8745
8746Updated the debug tracking macros to reduce overall code and data size.
8747Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
8748instead of pointers to static strings. Jan Beulich and Bob Moore.
8749
8750Implemented argument count checking in control method invocation via
8751AcpiEvaluateObject. Now emit an error if too few arguments, warning if
8752too
8753many. This applies only to extern programmatic control method execution,
8754not
8755method-to-method calls within the AML. Lin Ming.
8756
8757Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
8758no
8759longer needed, especially with the removal of 16-bit support. It was
8760replaced
8761mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
8762bit
8763on
876432/64-bit platforms is required.
8765
8766Added the C const qualifier for appropriate string constants -- mostly
8767MODULE_NAME and printf format strings. Jan Beulich.
8768
8769Example Code and Data Size: These are the sizes for the OS-independent
8770acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8771debug version of the code includes the debug output trace mechanism and
8772has a
8773much larger code and data size.
8774
8775  Previous Release:
8776    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
8777    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
8778  Current Release:
8779    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
8780    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
8781
87822) iASL Compiler/Disassembler and Tools:
8783
8784Implemented ACPI table revision ID validation in the disassembler. Zero
8785is
8786always invalid. For DSDTs, the ID controls the interpreter integer width.
87871
8788means 32-bit and this is unusual. 2 or greater is 64-bit.
8789
8790----------------------------------------
879121 March 2008. Summary of changes for version 20080321:
8792
87931) ACPI CA Core Subsystem:
8794
8795Implemented an additional change to the GPE support in order to suppress
8796spurious or stray GPEs. The AcpiEvDisableGpe function will now
8797permanently
8798disable incoming GPEs that are neither enabled nor disabled -- meaning
8799that
8800the GPE is unknown to the system. This should prevent future interrupt
8801floods
8802from that GPE. BZ 6217 (Zhang Rui)
8803
8804Fixed a problem where NULL package elements were not returned to the
8805AcpiEvaluateObject interface correctly. The element was simply ignored
8806instead of returning a NULL ACPI_OBJECT package element, potentially
8807causing
8808a buffer overflow and/or confusing the caller who expected a fixed number
8809of
8810elements. BZ 10132 (Lin Ming, Bob Moore)
8811
8812Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
8813Dword,
8814Qword), Field, BankField, and IndexField operators when invoked from
8815inside
8816an executing control method. In this case, these operators created
8817namespace
8818nodes that were incorrectly left marked as permanent nodes instead of
8819temporary nodes. This could cause a problem if there is race condition
8820between an exiting control method and a running namespace walk. (Reported
8821by
8822Linn Crosetto)
8823
8824Fixed a problem where the CreateField and CreateXXXField operators would
8825incorrectly allow duplicate names (the name of the field) with no
8826exception
8827generated.
8828
8829Implemented several changes for Notify handling. Added support for new
8830Notify
8831values (ACPI 2.0+) and improved the Notify debug output. Notify on
8832PowerResource objects is no longer allowed, as per the ACPI
8833specification.
8834(Bob Moore, Zhang Rui)
8835
8836All Reference Objects returned via the AcpiEvaluateObject interface are
8837now
8838marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
8839for
8840NULL objects - either NULL package elements or unresolved named
8841references.
8842
8843Fixed a problem where an extraneous debug message was produced for
8844package
8845objects (when debugging enabled). The message "Package List length larger
8846than NumElements count" is now produced in the correct case, and is now
8847an
8848error message rather than a debug message. Added a debug message for the
8849opposite case, where NumElements is larger than the Package List (the
8850package
8851will be padded out with NULL elements as per the ACPI spec.)
8852
8853Implemented several improvements for the output of the ASL "Debug" object
8854to
8855clarify and keep all data for a given object on one output line.
8856
8857Fixed two size calculation issues with the variable-length Start
8858Dependent
8859resource descriptor.
8860
8861Example Code and Data Size: These are the sizes for the OS-independent
8862acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8863debug version of the code includes the debug output trace mechanism and
8864has
8865a much larger code and data size.
8866
8867  Previous Release:
8868    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
8869    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
8870  Current Release:
8871    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
8872    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
8873
88742) iASL Compiler/Disassembler and Tools:
8875
8876Fixed a problem with the use of the Switch operator where execution of
8877the
8878containing method by multiple concurrent threads could cause an
8879AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
8880actual Switch opcode, it must be simulated with local named temporary
8881variables and if/else pairs. The solution chosen was to mark any method
8882that
8883uses Switch as Serialized, thus preventing multiple thread entries. BZ
8884469.
8885
8886----------------------------------------
888713 February 2008. Summary of changes for version 20080213:
8888
88891) ACPI CA Core Subsystem:
8890
8891Implemented another MS compatibility design change for GPE/Notify
8892handling.
8893GPEs are now cleared/enabled asynchronously to allow all pending notifies
8894to
8895complete first. It is expected that the OSL will queue the enable request
8896behind all pending notify requests (may require changes to the local host
8897OSL
8898in AcpiOsExecute). Alexey Starikovskiy.
8899
8900Fixed a problem where buffer and package objects passed as arguments to a
8901control method via the external AcpiEvaluateObject interface could cause
8902an
8903AE_AML_INTERNAL exception depending on the order and type of operators
8904executed by the target control method.
8905
8906Fixed a problem where resource descriptor size optimization could cause a
8907problem when a _CRS resource template is passed to a _SRS method. The
8908_SRS
8909resource template must use the same descriptors (with the same size) as
8910returned from _CRS. This change affects the following resource
8911descriptors:
8912IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
89139487)
8914
8915Fixed a problem where a CopyObject to RegionField, BankField, and
8916IndexField
8917objects did not perform an implicit conversion as it should. These types
8918must
8919retain their initial type permanently as per the ACPI specification.
8920However,
8921a CopyObject to all other object types should not perform an implicit
8922conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
8923
8924Fixed a problem with the AcpiGetDevices interface where the mechanism to
8925match device CIDs did not examine the entire list of available CIDs, but
8926instead aborted on the first non-matching CID. Andrew Patterson.
8927
8928Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
8929was
8930inadvertently changed to return a 16-bit value instead of a 32-bit value,
8931truncating the upper dword of a 64-bit value. This macro is only used to
8932display debug output, so no incorrect calculations were made. Also,
8933reimplemented the macro so that a 64-bit shift is not performed by
8934inefficient compilers.
8935
8936Added missing va_end statements that should correspond with each va_start
8937statement.
8938
8939Example Code and Data Size: These are the sizes for the OS-independent
8940acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8941debug version of the code includes the debug output trace mechanism and
8942has
8943a much larger code and data size.
8944
8945  Previous Release:
8946    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
8947    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
8948  Current Release:
8949    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
8950    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
8951
89522) iASL Compiler/Disassembler and Tools:
8953
8954Implemented full disassembler support for the following new ACPI tables:
8955BERT, EINJ, and ERST. Implemented partial disassembler support for the
8956complicated HEST table. These tables support the Windows Hardware Error
8957Architecture (WHEA).
8958
8959----------------------------------------
896023 January 2008. Summary of changes for version 20080123:
8961
89621) ACPI CA Core Subsystem:
8963
8964Added the 2008 copyright to all module headers and signons. This affects
8965virtually every file in the ACPICA core subsystem, the iASL compiler, and
8966the tools/utilities.
8967
8968Fixed a problem with the SizeOf operator when used with Package and
8969Buffer
8970objects. These objects have deferred execution for some arguments, and
8971the
8972execution is now completed before the SizeOf is executed. This problem
8973caused
8974unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
8975BZ
89769558
8977
8978Implemented an enhancement to the interpreter "slack mode". In the
8979absence
8980of
8981an explicit return or an implicitly returned object from the last
8982executed
8983opcode, a control method will now implicitly return an integer of value 0
8984for
8985Microsoft compatibility. (Lin Ming) BZ 392
8986
8987Fixed a problem with the Load operator where an exception was not
8988returned
8989in
8990the case where the table is already loaded. (Lin Ming) BZ 463
8991
8992Implemented support for the use of DDBHandles as an Indexed Reference, as
8993per
8994the ACPI spec. (Lin Ming) BZ 486
8995
8996Implemented support for UserTerm (Method invocation) for the Unload
8997operator
8998as per the ACPI spec. (Lin Ming) BZ 580
8999
9000Fixed a problem with the LoadTable operator where the OemId and
9001OemTableId
9002input strings could cause unexpected failures if they were shorter than
9003the
9004maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
9005
9006Implemented support for UserTerm (Method invocation) for the Unload
9007operator
9008as per the ACPI spec. (Lin Ming) BZ 580
9009
9010Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
9011HEST,
9012IBFT, UEFI, WDAT. Disassembler support is forthcoming.
9013
9014Example Code and Data Size: These are the sizes for the OS-independent
9015acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9016debug version of the code includes the debug output trace mechanism and
9017has
9018a much larger code and data size.
9019
9020  Previous Release:
9021    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
9022    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
9023  Current Release:
9024    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
9025    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
9026
90272) iASL Compiler/Disassembler and Tools:
9028
9029Implemented support in the disassembler for checksum validation on
9030incoming
9031binary DSDTs and SSDTs. If incorrect, a message is displayed within the
9032table
9033header dump at the start of the disassembly.
9034
9035Implemented additional debugging information in the namespace listing
9036file
9037created during compilation. In addition to the namespace hierarchy, the
9038full
9039pathname to each namespace object is displayed.
9040
9041Fixed a problem with the disassembler where invalid ACPI tables could
9042cause
9043faults or infinite loops.
9044
9045Fixed an unexpected parse error when using the optional "parameter types"
9046list in a control method declaration. (Lin Ming) BZ 397
9047
9048Fixed a problem where two External declarations with the same name did
9049not
9050cause an error (Lin Ming) BZ 509
9051
9052Implemented support for full TermArgs (adding Argx, Localx and method
9053invocation) for the ParameterData parameter to the LoadTable operator.
9054(Lin
9055Ming) BZ 583,587
9056
9057----------------------------------------
905819 December 2007. Summary of changes for version 20071219:
9059
90601) ACPI CA Core Subsystem:
9061
9062Implemented full support for deferred execution for the TermArg string
9063arguments for DataTableRegion. This enables forward references and full
9064operand resolution for the three string arguments. Similar to
9065OperationRegion
9066deferred argument execution.) Lin Ming. BZ 430
9067
9068Implemented full argument resolution support for the BankValue argument
9069to
9070BankField. Previously, only constants were supported, now any TermArg may
9071be
9072used. Lin Ming BZ 387, 393
9073
9074Fixed a problem with AcpiGetDevices where the search of a branch of the
9075device tree could be terminated prematurely. In accordance with the ACPI
9076specification, the search down the current branch is terminated if a
9077device
9078is both not present and not functional (instead of just not present.)
9079Yakui
9080Zhao.
9081
9082Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
9083if
9084the underlying AML code changed the GPE enable registers. Now, any
9085unknown
9086incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
9087disabled
9088instead of simply ignored. Rui Zhang.
9089
9090Fixed a problem with Index Fields where the Index register was
9091incorrectly
9092limited to a maximum of 32 bits. Now any size may be used.
9093
9094Fixed a couple memory leaks associated with "implicit return" objects
9095when
9096the AML Interpreter slack mode is enabled. Lin Ming BZ 349
9097
9098Example Code and Data Size: These are the sizes for the OS-independent
9099acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9100debug version of the code includes the debug output trace mechanism and
9101has
9102a much larger code and data size.
9103
9104  Previous Release:
9105    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
9106    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
9107  Current Release:
9108    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
9109    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
9110
9111----------------------------------------
911214 November 2007. Summary of changes for version 20071114:
9113
91141) ACPI CA Core Subsystem:
9115
9116Implemented event counters for each of the Fixed Events, the ACPI SCI
9117(interrupt) itself, and control methods executed. Named
9118AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
9119These
9120should be useful for debugging and statistics.
9121
9122Implemented a new external interface, AcpiGetStatistics, to retrieve the
9123contents of the various event counters. Returns the current values for
9124AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
9125AcpiMethodCount. The interface can be expanded in the future if new
9126counters
9127are added. Device drivers should use this interface rather than access
9128the
9129counters directly.
9130
9131Fixed a problem with the FromBCD and ToBCD operators. With some
9132compilers,
9133the ShortDivide function worked incorrectly, causing problems with the
9134BCD
9135functions with large input values. A truncation from 64-bit to 32-bit
9136inadvertently occurred. Internal BZ 435. Lin Ming
9137
9138Fixed a problem with Index references passed as method arguments.
9139References
9140passed as arguments to control methods were dereferenced immediately
9141(before
9142control was passed to the called method). The references are now
9143correctly
9144passed directly to the called method. BZ 5389. Lin Ming
9145
9146Fixed a problem with CopyObject used in conjunction with the Index
9147operator.
9148The reference was incorrectly dereferenced before the copy. The reference
9149is
9150now correctly copied. BZ 5391. Lin Ming
9151
9152Fixed a problem with Control Method references within Package objects.
9153These
9154references are now correctly generated. This completes the package
9155construction overhaul that began in version 20071019.
9156
9157Example Code and Data Size: These are the sizes for the OS-independent
9158acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9159debug version of the code includes the debug output trace mechanism and
9160has
9161a much larger code and data size.
9162
9163  Previous Release:
9164    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
9165    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
9166  Current Release:
9167    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
9168    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
9169
9170
91712) iASL Compiler/Disassembler and Tools:
9172
9173The AcpiExec utility now installs handlers for all of the predefined
9174Operation Region types. New types supported are: PCI_Config, CMOS, and
9175PCIBARTarget.
9176
9177Fixed a problem with the 64-bit version of AcpiExec where the extended
9178(64-
9179bit) address fields for the DSDT and FACS within the FADT were not being
9180used, causing truncation of the upper 32-bits of these addresses. Lin
9181Ming
9182and Bob Moore
9183
9184----------------------------------------
918519 October 2007. Summary of changes for version 20071019:
9186
91871) ACPI CA Core Subsystem:
9188
9189Fixed a problem with the Alias operator when the target of the alias is a
9190named ASL operator that opens a new scope -- Scope, Device,
9191PowerResource,
9192Processor, and ThermalZone. In these cases, any children of the original
9193operator could not be accessed via the alias, potentially causing
9194unexpected
9195AE_NOT_FOUND exceptions. (BZ 9067)
9196
9197Fixed a problem with the Package operator where all named references were
9198created as object references and left otherwise unresolved. According to
9199the
9200ACPI specification, a Package can only contain Data Objects or references
9201to
9202control methods. The implication is that named references to Data Objects
9203(Integer, Buffer, String, Package, BufferField, Field) should be resolved
9204immediately upon package creation. This is the approach taken with this
9205change. References to all other named objects (Methods, Devices, Scopes,
9206etc.) are all now properly created as reference objects. (BZ 5328)
9207
9208Reverted a change to Notify handling that was introduced in version
920920070508. This version changed the Notify handling from asynchronous to
9210fully synchronous (Device driver Notify handling with respect to the
9211Notify
9212ASL operator). It was found that this change caused more problems than it
9213solved and was removed by most users.
9214
9215Fixed a problem with the Increment and Decrement operators where the type
9216of
9217the target object could be unexpectedly and incorrectly changed. (BZ 353)
9218Lin Ming.
9219
9220Fixed a problem with the Load and LoadTable operators where the table
9221location within the namespace was ignored. Instead, the table was always
9222loaded into the root or current scope. Lin Ming.
9223
9224Fixed a problem with the Load operator when loading a table from a buffer
9225object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
9226
9227Fixed a problem with the Debug object where a store of a DdbHandle
9228reference
9229object to the Debug object could cause a fault.
9230
9231Added a table checksum verification for the Load operator, in the case
9232where
9233the load is from a buffer. (BZ 578).
9234
9235Implemented additional parameter validation for the LoadTable operator.
9236The
9237length of the input strings SignatureString, OemIdString, and OemTableId
9238are
9239now checked for maximum lengths. (BZ 582) Lin Ming.
9240
9241Example Code and Data Size: These are the sizes for the OS-independent
9242acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9243debug version of the code includes the debug output trace mechanism and
9244has
9245a much larger code and data size.
9246
9247  Previous Release:
9248    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
9249    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
9250  Current Release:
9251    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
9252    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
9253
9254
92552) iASL Compiler/Disassembler:
9256
9257Fixed a problem where if a single file was specified and the file did not
9258exist, no error message was emitted. (Introduced with wildcard support in
9259version 20070917.)
9260
9261----------------------------------------
926219 September 2007. Summary of changes for version 20070919:
9263
92641) ACPI CA Core Subsystem:
9265
9266Designed and implemented new external interfaces to install and remove
9267handlers for ACPI table-related events. Current events that are defined
9268are
9269LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
9270they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
9271AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
9272
9273Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
9274(acpi_serialized option on Linux) could cause some systems to hang during
9275initialization. (Bob Moore) BZ 8171
9276
9277Fixed a problem where objects of certain types (Device, ThermalZone,
9278Processor, PowerResource) can be not found if they are declared and
9279referenced from within the same control method (Lin Ming) BZ 341
9280
9281Example Code and Data Size: These are the sizes for the OS-independent
9282acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9283debug version of the code includes the debug output trace mechanism and
9284has
9285a much larger code and data size.
9286
9287  Previous Release:
9288    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
9289    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
9290  Current Release:
9291    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
9292    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
9293
9294
92952) iASL Compiler/Disassembler:
9296
9297Implemented support to allow multiple files to be compiled/disassembled
9298in
9299a
9300single invocation. This includes command line wildcard support for both
9301the
9302Windows and Unix versions of the compiler. This feature simplifies the
9303disassembly and compilation of multiple ACPI tables in a single
9304directory.
9305
9306----------------------------------------
930708 May 2007. Summary of changes for version 20070508:
9308
93091) ACPI CA Core Subsystem:
9310
9311Implemented a Microsoft compatibility design change for the handling of
9312the
9313Notify AML operator. Previously, notify handlers were dispatched and
9314executed completely asynchronously in a deferred thread. The new design
9315still executes the notify handlers in a different thread, but the
9316original
9317thread that executed the Notify() now waits at a synchronization point
9318for
9319the notify handler to complete. Some machines depend on a synchronous
9320Notify
9321operator in order to operate correctly.
9322
9323Implemented support to allow Package objects to be passed as method
9324arguments to the external AcpiEvaluateObject interface. Previously, this
9325would return the AE_NOT_IMPLEMENTED exception. This feature had not been
9326implemented since there were no reserved control methods that required it
9327until recently.
9328
9329Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
9330that
9331contained invalid non-zero values in reserved fields could cause later
9332failures because these fields have meaning in later revisions of the
9333FADT.
9334For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
9335fields
9336are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
9337
9338Fixed a problem where the Global Lock handle was not properly updated if
9339a
9340thread that acquired the Global Lock via executing AML code then
9341attempted
9342to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
9343Joe
9344Liu.
9345
9346Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
9347could be corrupted if the interrupt being removed was at the head of the
9348list. Reported by Linn Crosetto.
9349
9350Example Code and Data Size: These are the sizes for the OS-independent
9351acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9352debug version of the code includes the debug output trace mechanism and
9353has
9354a much larger code and data size.
9355
9356  Previous Release:
9357    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
9358    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
9359  Current Release:
9360    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
9361    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
9362
9363----------------------------------------
936420 March 2007. Summary of changes for version 20070320:
9365
93661) ACPI CA Core Subsystem:
9367
9368Implemented a change to the order of interpretation and evaluation of AML
9369operand objects within the AML interpreter. The interpreter now evaluates
9370operands in the order that they appear in the AML stream (and the
9371corresponding ASL code), instead of in the reverse order (after the
9372entire
9373operand list has been parsed). The previous behavior caused several
9374subtle
9375incompatibilities with the Microsoft AML interpreter as well as being
9376somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
9377
9378Implemented a change to the ACPI Global Lock support. All interfaces to
9379the
9380global lock now allow the same thread to acquire the lock multiple times.
9381This affects the AcpiAcquireGlobalLock external interface to the global
9382lock
9383as well as the internal use of the global lock to support AML fields -- a
9384control method that is holding the global lock can now simultaneously
9385access
9386AML fields that require global lock protection. Previously, in both
9387cases,
9388this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
9389to
9390AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
9391Controller. There is no change to the behavior of the AML Acquire
9392operator,
9393as this can already be used to acquire a mutex multiple times by the same
9394thread. BZ 8066. With assistance from Alexey Starikovskiy.
9395
9396Fixed a problem where invalid objects could be referenced in the AML
9397Interpreter after error conditions. During operand evaluation, ensure
9398that
9399the internal "Return Object" field is cleared on error and only valid
9400pointers are stored there. Caused occasional access to deleted objects
9401that
9402resulted in "large reference count" warning messages. Valery Podrezov.
9403
9404Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
9405on
9406deeply nested control method invocations. BZ 7873, local BZ 487. Valery
9407Podrezov.
9408
9409Fixed an internal problem with the handling of result objects on the
9410interpreter result stack. BZ 7872. Valery Podrezov.
9411
9412Removed obsolete code that handled the case where AML_NAME_OP is the
9413target
9414of a reference (Reference.Opcode). This code was no longer necessary. BZ
94157874. Valery Podrezov.
9416
9417Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
9418was
9419a
9420remnant from the previously discontinued 16-bit support.
9421
9422Example Code and Data Size: These are the sizes for the OS-independent
9423acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9424debug version of the code includes the debug output trace mechanism and
9425has
9426a much larger code and data size.
9427
9428  Previous Release:
9429    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
9430    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
9431  Current Release:
9432    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
9433    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
9434
9435----------------------------------------
943626 January 2007. Summary of changes for version 20070126:
9437
94381) ACPI CA Core Subsystem:
9439
9440Added the 2007 copyright to all module headers and signons. This affects
9441virtually every file in the ACPICA core subsystem, the iASL compiler, and
9442the utilities.
9443
9444Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
9445during a table load. A bad pointer was passed in the case where the DSDT
9446is
9447overridden, causing a fault in this case.
9448
9449Example Code and Data Size: These are the sizes for the OS-independent
9450acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9451debug version of the code includes the debug output trace mechanism and
9452has
9453a much larger code and data size.
9454
9455  Previous Release:
9456    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
9457    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
9458  Current Release:
9459    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
9460    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
9461
9462----------------------------------------
946315 December 2006. Summary of changes for version 20061215:
9464
94651) ACPI CA Core Subsystem:
9466
9467Support for 16-bit ACPICA has been completely removed since it is no
9468longer
9469necessary and it clutters the code. All 16-bit macros, types, and
9470conditional compiles have been removed, cleaning up and simplifying the
9471code
9472across the entire subsystem. DOS support is no longer needed since the
9473bootable Linux firmware kit is now available.
9474
9475The handler for the Global Lock is now removed during AcpiTerminate to
9476enable a clean subsystem restart, via the implementation of the
9477AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
9478HP)
9479
9480Implemented enhancements to the multithreading support within the
9481debugger
9482to enable improved multithreading debugging and evaluation of the
9483subsystem.
9484(Valery Podrezov)
9485
9486Debugger: Enhanced the Statistics/Memory command to emit the total
9487(maximum)
9488memory used during the execution, as well as the maximum memory consumed
9489by
9490each of the various object types. (Valery Podrezov)
9491
9492Example Code and Data Size: These are the sizes for the OS-independent
9493acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9494debug version of the code includes the debug output trace mechanism and
9495has
9496a much larger code and data size.
9497
9498  Previous Release:
9499    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
9500    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
9501  Current Release:
9502    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
9503    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
9504
9505
95062) iASL Compiler/Disassembler and Tools:
9507
9508AcpiExec: Implemented a new option (-m) to display full memory use
9509statistics upon subsystem/program termination. (Valery Podrezov)
9510
9511----------------------------------------
951209 November 2006. Summary of changes for version 20061109:
9513
95141) ACPI CA Core Subsystem:
9515
9516Optimized the Load ASL operator in the case where the source operand is
9517an
9518operation region. Simply map the operation region memory, instead of
9519performing a bytewise read. (Region must be of type SystemMemory, see
9520below.)
9521
9522Fixed the Load ASL operator for the case where the source operand is a
9523region field. A buffer object is also allowed as the source operand. BZ
9524480
9525
9526Fixed a problem where the Load ASL operator allowed the source operand to
9527be
9528an operation region of any type. It is now restricted to regions of type
9529SystemMemory, as per the ACPI specification. BZ 481
9530
9531Additional cleanup and optimizations for the new Table Manager code.
9532
9533AcpiEnable will now fail if all of the required ACPI tables are not
9534loaded
9535(FADT, FACS, DSDT). BZ 477
9536
9537Added #pragma pack(8/4) to acobject.h to ensure that the structures in
9538this
9539header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
9540manually optimized to be aligned and will not work if it is byte-packed.
9541
9542Example Code and Data Size: These are the sizes for the OS-independent
9543acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9544debug version of the code includes the debug output trace mechanism and
9545has
9546a much larger code and data size.
9547
9548  Previous Release:
9549    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
9550    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
9551  Current Release:
9552    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
9553    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
9554
9555
95562) iASL Compiler/Disassembler and Tools:
9557
9558Fixed a problem where the presence of the _OSI predefined control method
9559within complex expressions could cause an internal compiler error.
9560
9561AcpiExec: Implemented full region support for multiple address spaces.
9562SpaceId is now part of the REGION object. BZ 429
9563
9564----------------------------------------
956511 October 2006. Summary of changes for version 20061011:
9566
95671) ACPI CA Core Subsystem:
9568
9569Completed an AML interpreter performance enhancement for control method
9570execution. Previously a 2-pass parse/execution, control methods are now
9571completely parsed and executed in a single pass. This improves overall
9572interpreter performance by ~25%, reduces code size, and reduces CPU stack
9573use. (Valery Podrezov + interpreter changes in version 20051202 that
9574eliminated namespace loading during the pass one parse.)
9575
9576Implemented _CID support for PCI Root Bridge detection. If the _HID does
9577not
9578match the predefined PCI Root Bridge IDs, the _CID list (if present) is
9579now
9580obtained and also checked for an ID match.
9581
9582Implemented additional support for the PCI _ADR execution: upsearch until
9583a
9584device scope is found before executing _ADR. This allows PCI_Config
9585operation regions to be declared locally within control methods
9586underneath
9587PCI device objects.
9588
9589Fixed a problem with a possible race condition between threads executing
9590AcpiWalkNamespace and the AML interpreter. This condition was removed by
9591modifying AcpiWalkNamespace to (by default) ignore all temporary
9592namespace
9593entries created during any concurrent control method execution. An
9594additional namespace race condition is known to exist between
9595AcpiWalkNamespace and the Load/Unload ASL operators and is still under
9596investigation.
9597
9598Restructured the AML ParseLoop function, breaking it into several
9599subfunctions in order to reduce CPU stack use and improve
9600maintainability.
9601(Mikhail Kouzmich)
9602
9603AcpiGetHandle: Fix for parameter validation to detect invalid
9604combinations
9605of prefix handle and pathname. BZ 478
9606
9607Example Code and Data Size: These are the sizes for the OS-independent
9608acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9609debug version of the code includes the debug output trace mechanism and
9610has
9611a much larger code and data size.
9612
9613  Previous Release:
9614    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
9615    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
9616  Current Release:
9617    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
9618    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
9619
96202) iASL Compiler/Disassembler and Tools:
9621
9622Ported the -g option (get local ACPI tables) to the new ACPICA Table
9623Manager
9624to restore original behavior.
9625
9626----------------------------------------
962727 September 2006. Summary of changes for version 20060927:
9628
96291) ACPI CA Core Subsystem:
9630
9631Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
9632These functions now use a spinlock for mutual exclusion and the interrupt
9633level indication flag is not needed.
9634
9635Fixed a problem with the Global Lock where the lock could appear to be
9636obtained before it is actually obtained. The global lock semaphore was
9637inadvertently created with one unit instead of zero units. (BZ 464)
9638Fiodor
9639Suietov.
9640
9641Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
9642during
9643a read from a buffer or region field. (BZ 458) Fiodor Suietov.
9644
9645Example Code and Data Size: These are the sizes for the OS-independent
9646acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9647debug version of the code includes the debug output trace mechanism and
9648has
9649a much larger code and data size.
9650
9651  Previous Release:
9652    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
9653    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
9654  Current Release:
9655    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
9656    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
9657
9658
96592) iASL Compiler/Disassembler and Tools:
9660
9661Fixed a compilation problem with the pre-defined Resource Descriptor
9662field
9663names where an "object does not exist" error could be incorrectly
9664generated
9665if the parent ResourceTemplate pathname places the template within a
9666different namespace scope than the current scope. (BZ 7212)
9667
9668Fixed a problem where the compiler could hang after syntax errors
9669detected
9670in an ElseIf construct. (BZ 453)
9671
9672Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
9673operator. An incorrect output filename was produced when this parameter
9674was
9675a null string (""). Now, the original input filename is used as the AML
9676output filename, with an ".aml" extension.
9677
9678Implemented a generic batch command mode for the AcpiExec utility
9679(execute
9680any AML debugger command) (Valery Podrezov).
9681
9682----------------------------------------
968312 September 2006. Summary of changes for version 20060912:
9684
96851) ACPI CA Core Subsystem:
9686
9687Enhanced the implementation of the "serialized mode" of the interpreter
9688(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
9689specified, instead of creating a serialization semaphore per control
9690method,
9691the interpreter lock is simply no longer released before a blocking
9692operation during control method execution. This effectively makes the AML
9693Interpreter single-threaded. The overhead of a semaphore per-method is
9694eliminated.
9695
9696Fixed a regression where an error was no longer emitted if a control
9697method
9698attempts to create 2 objects of the same name. This once again returns
9699AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
9700that
9701will dynamically serialize the control method to possible prevent future
9702errors. (BZ 440)
9703
9704Integrated a fix for a problem with PCI Express HID detection in the PCI
9705Config Space setup procedure. (BZ 7145)
9706
9707Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
9708AcpiHwInitialize function - the FADT registers are now validated when the
9709table is loaded.
9710
9711Added two new warnings during FADT verification - 1) if the FADT is
9712larger
9713than the largest known FADT version, and 2) if there is a mismatch
9714between
9715a
971632-bit block address and the 64-bit X counterpart (when both are non-
9717zero.)
9718
9719Example Code and Data Size: These are the sizes for the OS-independent
9720acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9721debug version of the code includes the debug output trace mechanism and
9722has
9723a much larger code and data size.
9724
9725  Previous Release:
9726    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
9727    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
9728  Current Release:
9729    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
9730    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
9731
9732
97332) iASL Compiler/Disassembler and Tools:
9734
9735Fixed a problem with the implementation of the Switch() operator where
9736the
9737temporary variable was declared too close to the actual Switch, instead
9738of
9739at method level. This could cause a problem if the Switch() operator is
9740within a while loop, causing an error on the second iteration. (BZ 460)
9741
9742Disassembler - fix for error emitted for unknown type for target of scope
9743operator. Now, ignore it and continue.
9744
9745Disassembly of an FADT now verifies the input FADT and reports any errors
9746found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
9747
9748Disassembly of raw data buffers with byte initialization data now
9749prefixes
9750each output line with the current buffer offset.
9751
9752Disassembly of ASF! table now includes all variable-length data fields at
9753the end of some of the subtables.
9754
9755The disassembler now emits a comment if a buffer appears to be a
9756ResourceTemplate, but cannot be disassembled as such because the EndTag
9757does
9758not appear at the very end of the buffer.
9759
9760AcpiExec - Added the "-t" command line option to enable the serialized
9761mode
9762of the AML interpreter.
9763
9764----------------------------------------
976531 August 2006. Summary of changes for version 20060831:
9766
97671) ACPI CA Core Subsystem:
9768
9769Miscellaneous fixes for the Table Manager:
9770- Correctly initialize internal common FADT for all 64-bit "X" fields
9771- Fixed a couple table mapping issues during table load
9772- Fixed a couple alignment issues for IA64
9773- Initialize input array to zero in AcpiInitializeTables
9774- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
9775AcpiGetTableByIndex
9776
9777Change for GPE support: when a "wake" GPE is received, all wake GPEs are
9778now
9779immediately disabled to prevent the waking GPE from firing again and to
9780prevent other wake GPEs from interrupting the wake process.
9781
9782Added the AcpiGpeCount global that tracks the number of processed GPEs,
9783to
9784be used for debugging systems with a large number of ACPI interrupts.
9785
9786Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
9787both the ACPICA headers and the disassembler.
9788
9789Example Code and Data Size: These are the sizes for the OS-independent
9790acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9791debug version of the code includes the debug output trace mechanism and
9792has
9793a much larger code and data size.
9794
9795  Previous Release:
9796    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
9797    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
9798  Current Release:
9799    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
9800    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
9801
9802
98032) iASL Compiler/Disassembler and Tools:
9804
9805Disassembler support for the DMAR ACPI table.
9806
9807----------------------------------------
980823 August 2006. Summary of changes for version 20060823:
9809
98101) ACPI CA Core Subsystem:
9811
9812The Table Manager component has been completely redesigned and
9813reimplemented. The new design is much simpler, and reduces the overall
9814code
9815and data size of the kernel-resident ACPICA by approximately 5%. Also, it
9816is
9817now possible to obtain the ACPI tables very early during kernel
9818initialization, even before dynamic memory management is initialized.
9819(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
9820
9821Obsolete ACPICA interfaces:
9822
9823- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
9824init
9825time).
9826- AcpiLoadTable: Not needed.
9827- AcpiUnloadTable: Not needed.
9828
9829New ACPICA interfaces:
9830
9831- AcpiInitializeTables: Must be called before the table manager can be
9832used.
9833- AcpiReallocateRootTable: Used to transfer the root table to dynamically
9834allocated memory after it becomes available.
9835- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
9836tables
9837in the RSDT/XSDT.
9838
9839Other ACPICA changes:
9840
9841- AcpiGetTableHeader returns the actual mapped table header, not a copy.
9842Use
9843AcpiOsUnmapMemory to free this mapping.
9844- AcpiGetTable returns the actual mapped table. The mapping is managed
9845internally and must not be deleted by the caller. Use of this interface
9846causes no additional dynamic memory allocation.
9847- AcpiFindRootPointer: Support for physical addressing has been
9848eliminated,
9849it appeared to be unused.
9850- The interface to AcpiOsMapMemory has changed to be consistent with the
9851other allocation interfaces.
9852- The interface to AcpiOsGetRootPointer has changed to eliminate
9853unnecessary
9854parameters.
9855- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
985664-
9857bit platforms. Was previously 64 bits on all platforms.
9858- The interface to the ACPI Global Lock acquire/release macros have
9859changed
9860slightly since ACPICA no longer keeps a local copy of the FACS with a
9861constructed pointer to the actual global lock.
9862
9863Porting to the new table manager:
9864
9865- AcpiInitializeTables: Must be called once, and can be called anytime
9866during the OS initialization process. It allows the host to specify an
9867area
9868of memory to be used to store the internal version of the RSDT/XSDT (root
9869table). This allows the host to access ACPI tables before memory
9870management
9871is initialized and running.
9872- AcpiReallocateRootTable: Can be called after memory management is
9873running
9874to copy the root table to a dynamically allocated array, freeing up the
9875scratch memory specified in the call to AcpiInitializeTables.
9876- AcpiSubsystemInitialize: This existing interface is independent of the
9877Table Manager, and does not have to be called before the Table Manager
9878can
9879be used, it only must be called before the rest of ACPICA can be used.
9880- ACPI Tables: Some changes have been made to the names and structure of
9881the
9882actbl.h and actbl1.h header files and may require changes to existing
9883code.
9884For example, bitfields have been completely removed because of their lack
9885of
9886portability across C compilers.
9887- Update interfaces to the Global Lock acquire/release macros if local
9888versions are used. (see acwin.h)
9889
9890Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
9891
9892New files: tbfind.c
9893
9894Example Code and Data Size: These are the sizes for the OS-independent
9895acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9896debug version of the code includes the debug output trace mechanism and
9897has
9898a much larger code and data size.
9899
9900  Previous Release:
9901    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
9902    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
9903  Current Release:
9904    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
9905    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
9906
9907
99082) iASL Compiler/Disassembler and Tools:
9909
9910No changes for this release.
9911
9912----------------------------------------
991321 July 2006. Summary of changes for version 20060721:
9914
99151) ACPI CA Core Subsystem:
9916
9917The full source code for the ASL test suite used to validate the iASL
9918compiler and the ACPICA core subsystem is being released with the ACPICA
9919source for the first time. The source is contained in a separate package
9920and
9921consists of over 1100 files that exercise all ASL/AML operators. The
9922package
9923should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
9924Fiodor
9925Suietov)
9926
9927Completed a new design and implementation for support of the ACPI Global
9928Lock. On the OS side, the global lock is now treated as a standard AML
9929mutex. Previously, multiple OS threads could "acquire" the global lock
9930simultaneously. However, this could cause the BIOS to be starved out of
9931the
9932lock - especially in cases such as the Embedded Controller driver where
9933there is a tight coupling between the OS and the BIOS.
9934
9935Implemented an optimization for the ACPI Global Lock interrupt mechanism.
9936The Global Lock interrupt handler no longer queues the execution of a
9937separate thread to signal the global lock semaphore. Instead, the
9938semaphore
9939is signaled directly from the interrupt handler.
9940
9941Implemented support within the AML interpreter for package objects that
9942contain a larger AML length (package list length) than the package
9943element
9944count. In this case, the length of the package is truncated to match the
9945package element count. Some BIOS code apparently modifies the package
9946length
9947on the fly, and this change supports this behavior. Provides
9948compatibility
9949with the MS AML interpreter. (With assistance from Fiodor Suietov)
9950
9951Implemented a temporary fix for the BankValue parameter of a Bank Field
9952to
9953support all constant values, now including the Zero and One opcodes.
9954Evaluation of this parameter must eventually be converted to a full
9955TermArg
9956evaluation. A not-implemented error is now returned (temporarily) for
9957non-
9958constant values for this parameter.
9959
9960Fixed problem reports (Fiodor Suietov) integrated:
9961- Fix for premature object deletion after CopyObject on Operation Region
9962(BZ
9963350)
9964
9965Example Code and Data Size: These are the sizes for the OS-independent
9966acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9967debug version of the code includes the debug output trace mechanism and
9968has
9969a much larger code and data size.
9970
9971  Previous Release:
9972    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
9973    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
9974  Current Release:
9975    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
9976    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
9977
9978
99792) iASL Compiler/Disassembler and Tools:
9980
9981No changes for this release.
9982
9983----------------------------------------
998407 July 2006. Summary of changes for version 20060707:
9985
99861) ACPI CA Core Subsystem:
9987
9988Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
9989that do not allow the initialization of address pointers within packed
9990structures - even though the hardware itself may support misaligned
9991transfers. Some of the debug data structures are packed by default to
9992minimize size.
9993
9994Added an error message for the case where AcpiOsGetThreadId() returns
9995zero.
9996A non-zero value is required by the core ACPICA code to ensure the proper
9997operation of AML mutexes and recursive control methods.
9998
9999The DSDT is now the only ACPI table that determines whether the AML
10000interpreter is in 32-bit or 64-bit mode. Not really a functional change,
10001but
10002the hooks for per-table 32/64 switching have been removed from the code.
10003A
10004clarification to the ACPI specification is forthcoming in ACPI 3.0B.
10005
10006Fixed a possible leak of an OwnerID in the error path of
10007AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
10008deletion to a single place in AcpiTbUninstallTable to correct possible
10009leaks
10010when using the AcpiTbDeleteTablesByType interface (with assistance from
10011Lance Ortiz.)
10012
10013Fixed a problem with Serialized control methods where the semaphore
10014associated with the method could be over-signaled after multiple method
10015invocations.
10016
10017Fixed two issues with the locking of the internal namespace data
10018structure.
10019Both the Unload() operator and AcpiUnloadTable interface now lock the
10020namespace during the namespace deletion associated with the table unload
10021(with assistance from Linn Crosetto.)
10022
10023Fixed problem reports (Valery Podrezov) integrated:
10024- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
10025
10026Fixed problem reports (Fiodor Suietov) integrated:
10027- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
10028- On Address Space handler deletion, needless deactivation call (BZ 374)
10029- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
10030375)
10031- Possible memory leak, Notify sub-objects of Processor, Power,
10032ThermalZone
10033(BZ 376)
10034- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
10035- Minimum Length of RSDT should be validated (BZ 379)
10036- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
10037Handler (BZ (380)
10038- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
10039loaded
10040(BZ 381)
10041
10042Example Code and Data Size: These are the sizes for the OS-independent
10043acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10044debug version of the code includes the debug output trace mechanism and
10045has
10046a much larger code and data size.
10047
10048  Previous Release:
10049    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
10050    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
10051  Current Release:
10052    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
10053    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
10054
10055
100562) iASL Compiler/Disassembler and Tools:
10057
10058Fixed problem reports:
10059Compiler segfault when ASL contains a long (>1024) String declaration (BZ
10060436)
10061
10062----------------------------------------
1006323 June 2006. Summary of changes for version 20060623:
10064
100651) ACPI CA Core Subsystem:
10066
10067Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
10068allows the type to be customized to the host OS for improved efficiency
10069(since a spinlock is usually a very small object.)
10070
10071Implemented support for "ignored" bits in the ACPI registers. According
10072to
10073the ACPI specification, these bits should be preserved when writing the
10074registers via a read/modify/write cycle. There are 3 bits preserved in
10075this
10076manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
10077
10078Implemented the initial deployment of new OSL mutex interfaces. Since
10079some
10080host operating systems have separate mutex and semaphore objects, this
10081feature was requested. The base code now uses mutexes (and the new mutex
10082interfaces) wherever a binary semaphore was used previously. However, for
10083the current release, the mutex interfaces are defined as macros to map
10084them
10085to the existing semaphore interfaces. Therefore, no OSL changes are
10086required
10087at this time. (See acpiosxf.h)
10088
10089Fixed several problems with the support for the control method SyncLevel
10090parameter. The SyncLevel now works according to the ACPI specification
10091and
10092in concert with the Mutex SyncLevel parameter, since the current
10093SyncLevel
10094is a property of the executing thread. Mutual exclusion for control
10095methods
10096is now implemented with a mutex instead of a semaphore.
10097
10098Fixed three instances of the use of the C shift operator in the bitfield
10099support code (exfldio.c) to avoid the use of a shift value larger than
10100the
10101target data width. The behavior of C compilers is undefined in this case
10102and
10103can cause unpredictable results, and therefore the case must be detected
10104and
10105avoided. (Fiodor Suietov)
10106
10107Added an info message whenever an SSDT or OEM table is loaded dynamically
10108via the Load() or LoadTable() ASL operators. This should improve
10109debugging
10110capability since it will show exactly what tables have been loaded
10111(beyond
10112the tables present in the RSDT/XSDT.)
10113
10114Example Code and Data Size: These are the sizes for the OS-independent
10115acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10116debug version of the code includes the debug output trace mechanism and
10117has
10118a much larger code and data size.
10119
10120  Previous Release:
10121    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
10122    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
10123  Current Release:
10124    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
10125    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
10126
10127
101282) iASL Compiler/Disassembler and Tools:
10129
10130No changes for this release.
10131
10132----------------------------------------
1013308 June 2006. Summary of changes for version 20060608:
10134
101351) ACPI CA Core Subsystem:
10136
10137Converted the locking mutex used for the ACPI hardware to a spinlock.
10138This
10139change should eliminate all problems caused by attempting to acquire a
10140semaphore at interrupt level, and it means that all ACPICA external
10141interfaces that directly access the ACPI hardware can be safely called
10142from
10143interrupt level. OSL code that implements the semaphore interfaces should
10144be
10145able to eliminate any workarounds for being called at interrupt level.
10146
10147Fixed a regression introduced in 20060526 where the ACPI device
10148initialization could be prematurely aborted with an AE_NOT_FOUND if a
10149device
10150did not have an optional _INI method.
10151
10152Fixed an IndexField issue where a write to the Data Register should be
10153limited in size to the AccessSize (width) of the IndexField itself. (BZ
10154433,
10155Fiodor Suietov)
10156
10157Fixed problem reports (Valery Podrezov) integrated:
10158- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
10159
10160Fixed problem reports (Fiodor Suietov) integrated:
10161- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
10162
10163Removed four global mutexes that were obsolete and were no longer being
10164used.
10165
10166Example Code and Data Size: These are the sizes for the OS-independent
10167acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10168debug version of the code includes the debug output trace mechanism and
10169has
10170a much larger code and data size.
10171
10172  Previous Release:
10173    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
10174    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
10175  Current Release:
10176    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
10177    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
10178
10179
101802) iASL Compiler/Disassembler and Tools:
10181
10182Fixed a fault when using -g option (get tables from registry) on Windows
10183machines.
10184
10185Fixed problem reports integrated:
10186- Generate error if CreateField NumBits parameter is zero. (BZ 405)
10187- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
10188Suietov)
10189- Global table revision override (-r) is ignored (BZ 413)
10190
10191----------------------------------------
1019226 May 2006. Summary of changes for version 20060526:
10193
101941) ACPI CA Core Subsystem:
10195
10196Restructured, flattened, and simplified the internal interfaces for
10197namespace object evaluation - resulting in smaller code, less CPU stack
10198use,
10199and fewer interfaces. (With assistance from Mikhail Kouzmich)
10200
10201Fixed a problem with the CopyObject operator where the first parameter
10202was
10203not typed correctly for the parser, interpreter, compiler, and
10204disassembler.
10205Caused various errors and unexpected behavior.
10206
10207Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
10208produced incorrect results with some C compilers. Since the behavior of C
10209compilers when the shift value is larger than the datatype width is
10210apparently not well defined, the interpreter now detects this condition
10211and
10212simply returns zero as expected in all such cases. (BZ 395)
10213
10214Fixed problem reports (Valery Podrezov) integrated:
10215- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
10216- Allow interpreter to handle nested method declarations (BZ 5361)
10217
10218Fixed problem reports (Fiodor Suietov) integrated:
10219- AcpiTerminate doesn't free debug memory allocation list objects (BZ
10220355)
10221- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
10222356)
10223- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
10224- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
10225- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
10226- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
10227- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
10228- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
10229- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
10230365)
10231- Status of the Global Initialization Handler call not used (BZ 366)
10232- Incorrect object parameter to Global Initialization Handler (BZ 367)
10233
10234Example Code and Data Size: These are the sizes for the OS-independent
10235acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10236debug version of the code includes the debug output trace mechanism and
10237has
10238a much larger code and data size.
10239
10240  Previous Release:
10241    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
10242    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
10243  Current Release:
10244    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
10245    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
10246
10247
102482) iASL Compiler/Disassembler and Tools:
10249
10250Modified the parser to allow the names IO, DMA, and IRQ to be used as
10251namespace identifiers with no collision with existing resource descriptor
10252macro names. This provides compatibility with other ASL compilers and is
10253most useful for disassembly/recompilation of existing tables without
10254parse
10255errors. (With assistance from Thomas Renninger)
10256
10257Disassembler: fixed an incorrect disassembly problem with the
10258DataTableRegion and CopyObject operators. Fixed a possible fault during
10259disassembly of some Alias operators.
10260
10261----------------------------------------
1026212 May 2006. Summary of changes for version 20060512:
10263
102641) ACPI CA Core Subsystem:
10265
10266Replaced the AcpiOsQueueForExecution interface with a new interface named
10267AcpiOsExecute. The major difference is that the new interface does not
10268have
10269a Priority parameter, this appeared to be useless and has been replaced
10270by
10271a
10272Type parameter. The Type tells the host what type of execution is being
10273requested, such as global lock handler, notify handler, GPE handler, etc.
10274This allows the host to queue and execute the request as appropriate for
10275the
10276request type, possibly using different work queues and different
10277priorities
10278for the various request types. This enables fixes for multithreading
10279deadlock problems such as BZ #5534, and will require changes to all
10280existing
10281OS interface layers. (Alexey Starikovskiy and Bob Moore)
10282
10283Fixed a possible memory leak associated with the support for the so-
10284called
10285"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
10286Suietov)
10287
10288Fixed a problem with the Load() operator where a table load from an
10289operation region could overwrite an internal table buffer by up to 7
10290bytes
10291and cause alignment faults on IPF systems. (With assistance from Luming
10292Yu)
10293
10294Example Code and Data Size: These are the sizes for the OS-independent
10295acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10296debug version of the code includes the debug output trace mechanism and
10297has
10298a much larger code and data size.
10299
10300  Previous Release:
10301    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
10302    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
10303  Current Release:
10304    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
10305    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
10306
10307
10308
103092) iASL Compiler/Disassembler and Tools:
10310
10311Disassembler: Implemented support to cross reference the internal
10312namespace
10313and automatically generate ASL External() statements for symbols not
10314defined
10315within the current table being disassembled. This will simplify the
10316disassembly and recompilation of interdependent tables such as SSDTs
10317since
10318these statements will no longer have to be added manually.
10319
10320Disassembler: Implemented experimental support to automatically detect
10321invocations of external control methods and generate appropriate
10322External()
10323statements. This is problematic because the AML cannot be correctly
10324parsed
10325until the number of arguments for each control method is known.
10326Currently,
10327standalone method invocations and invocations as the source operand of a
10328Store() statement are supported.
10329
10330Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
10331LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
10332LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
10333more readable and likely closer to the original ASL source.
10334
10335----------------------------------------
1033621 April 2006. Summary of changes for version 20060421:
10337
103381) ACPI CA Core Subsystem:
10339
10340Removed a device initialization optimization introduced in 20051216 where
10341the _STA method was not run unless an _INI was also present for the same
10342device. This optimization could cause problems because it could allow
10343_INI
10344methods to be run within a not-present device subtree. (If a not-present
10345device had no _INI, _STA would not be run, the not-present status would
10346not
10347be discovered, and the children of the device would be incorrectly
10348traversed.)
10349
10350Implemented a new _STA optimization where namespace subtrees that do not
10351contain _INI are identified and ignored during device initialization.
10352Selectively running _STA can significantly improve boot time on large
10353machines (with assistance from Len Brown.)
10354
10355Implemented support for the device initialization case where the returned
10356_STA flags indicate a device not-present but functioning. In this case,
10357_INI
10358is not run, but the device children are examined for presence, as per the
10359ACPI specification.
10360
10361Implemented an additional change to the IndexField support in order to
10362conform to MS behavior. The value written to the Index Register is not
10363simply a byte offset, it is a byte offset in units of the access width of
10364the parent Index Field. (Fiodor Suietov)
10365
10366Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
10367interface is called during the creation of all AML operation regions, and
10368allows the host OS to exert control over what addresses it will allow the
10369AML code to access. Operation Regions whose addresses are disallowed will
10370cause a runtime exception when they are actually accessed (will not
10371affect
10372or abort table loading.) See oswinxf or osunixxf for an example
10373implementation.
10374
10375Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
10376interface allows the host OS to match the various "optional"
10377interface/behavior strings for the _OSI predefined control method as
10378appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
10379for an example implementation.
10380
10381Restructured and corrected various problems in the exception handling
10382code
10383paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
10384(with assistance from Takayoshi Kochi.)
10385
10386Modified the Linux source converter to ignore quoted string literals
10387while
10388converting identifiers from mixed to lower case. This will correct
10389problems
10390with the disassembler and other areas where such strings must not be
10391modified.
10392
10393The ACPI_FUNCTION_* macros no longer require quotes around the function
10394name. This allows the Linux source converter to convert the names, now
10395that
10396the converter ignores quoted strings.
10397
10398Example Code and Data Size: These are the sizes for the OS-independent
10399acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10400debug version of the code includes the debug output trace mechanism and
10401has
10402a much larger code and data size.
10403
10404  Previous Release:
10405
10406    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
10407    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
10408  Current Release:
10409    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
10410    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
10411
10412
104132) iASL Compiler/Disassembler and Tools:
10414
10415Implemented 3 new warnings for iASL, and implemented multiple warning
10416levels
10417(w2 flag).
10418
104191) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
10420not
10421WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
10422check for the possible timeout, a warning is issued.
10423
104242) Useless operators: If an ASL operator does not specify an optional
10425target
10426operand and it also does not use the function return value from the
10427operator, a warning is issued since the operator effectively does
10428nothing.
10429
104303) Unreferenced objects: If a namespace object is created, but never
10431referenced, a warning is issued. This is a warning level 2 since there
10432are
10433cases where this is ok, such as when a secondary table is loaded that
10434uses
10435the unreferenced objects. Even so, care is taken to only flag objects
10436that
10437don't look like they will ever be used. For example, the reserved methods
10438(starting with an underscore) are usually not referenced because it is
10439expected that the OS will invoke them.
10440
10441----------------------------------------
1044231 March 2006. Summary of changes for version 20060331:
10443
104441) ACPI CA Core Subsystem:
10445
10446Implemented header file support for the following additional ACPI tables:
10447ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
10448support,
10449all current and known ACPI tables are now defined in the ACPICA headers
10450and
10451are available for use by device drivers and other software.
10452
10453Implemented support to allow tables that contain ACPI names with invalid
10454characters to be loaded. Previously, this would cause the table load to
10455fail, but since there are several known cases of such tables on existing
10456machines, this change was made to enable ACPI support for them. Also,
10457this
10458matches the behavior of the Microsoft ACPI implementation.
10459
10460Fixed a couple regressions introduced during the memory optimization in
10461the
1046220060317 release. The namespace node definition required additional
10463reorganization and an internal datatype that had been changed to 8-bit
10464was
10465restored to 32-bit. (Valery Podrezov)
10466
10467Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
10468could be passed through to AcpiOsReleaseObject which is unexpected. Such
10469null pointers are now trapped and ignored, matching the behavior of the
10470previous implementation before the deployment of AcpiOsReleaseObject.
10471(Valery Podrezov, Fiodor Suietov)
10472
10473Fixed a memory mapping leak during the deletion of a SystemMemory
10474operation
10475region where a cached memory mapping was not deleted. This became a
10476noticeable problem for operation regions that are defined within
10477frequently
10478used control methods. (Dana Meyers)
10479
10480Reorganized the ACPI table header files into two main files: one for the
10481ACPI tables consumed by the ACPICA core, and another for the
10482miscellaneous
10483ACPI tables that are consumed by the drivers and other software. The
10484various
10485FADT definitions were merged into one common section and three different
10486tables (ACPI 1.0, 1.0+, and 2.0)
10487
10488Example Code and Data Size: These are the sizes for the OS-independent
10489acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10490debug version of the code includes the debug output trace mechanism and
10491has
10492a much larger code and data size.
10493
10494  Previous Release:
10495    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
10496    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
10497  Current Release:
10498    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
10499    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
10500
10501
105022) iASL Compiler/Disassembler and Tools:
10503
10504Disassembler: Implemented support to decode and format all non-AML ACPI
10505tables (tables other than DSDTs and SSDTs.) This includes the new tables
10506added to the ACPICA headers, therefore all current and known ACPI tables
10507are
10508supported.
10509
10510Disassembler: The change to allow ACPI names with invalid characters also
10511enables the disassembly of such tables. Invalid characters within names
10512are
10513changed to '*' to make the name printable; the iASL compiler will still
10514generate an error for such names, however, since this is an invalid ACPI
10515character.
10516
10517Implemented an option for AcpiXtract (-a) to extract all tables found in
10518the
10519input file. The default invocation extracts only the DSDTs and SSDTs.
10520
10521Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
10522makefile for the AcpiXtract utility.
10523
10524----------------------------------------
1052517 March 2006. Summary of changes for version 20060317:
10526
105271) ACPI CA Core Subsystem:
10528
10529Implemented the use of a cache object for all internal namespace nodes.
10530Since there are about 1000 static nodes in a typical system, this will
10531decrease memory use for cache implementations that minimize per-
10532allocation
10533overhead (such as a slab allocator.)
10534
10535Removed the reference count mechanism for internal namespace nodes, since
10536it
10537was deemed unnecessary. This reduces the size of each namespace node by
10538about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
10539case,
10540and 32 bytes for the 64-bit case.
10541
10542Optimized several internal data structures to reduce object size on 64-
10543bit
10544platforms by packing data within the 64-bit alignment. This includes the
10545frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
10546instances corresponding to the namespace objects.
10547
10548Added two new strings for the predefined _OSI method: "Windows 2001.1
10549SP1"
10550and "Windows 2006".
10551
10552Split the allocation tracking mechanism out to a separate file, from
10553utalloc.c to uttrack.c. This mechanism appears to be only useful for
10554application-level code. Kernels may wish to not include uttrack.c in
10555distributions.
10556
10557Removed all remnants of the obsolete ACPI_REPORT_* macros and the
10558associated
10559code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
10560macros.)
10561
10562Code and Data Size: These are the sizes for the acpica.lib produced by
10563the
10564Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
10565ACPI
10566driver or OSPM code. The debug version of the code includes the debug
10567output
10568trace mechanism and has a much larger code and data size. Note that these
10569values will vary depending on the efficiency of the compiler and the
10570compiler options used during generation.
10571
10572  Previous Release:
10573    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
10574    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
10575  Current Release:
10576    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
10577    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
10578
10579
105802) iASL Compiler/Disassembler and Tools:
10581
10582Implemented an ANSI C version of the acpixtract utility. This version
10583will
10584automatically extract the DSDT and all SSDTs from the input acpidump text
10585file and dump the binary output to separate files. It can also display a
10586summary of the input file including the headers for each table found and
10587will extract any single ACPI table, with any signature. (See
10588source/tools/acpixtract)
10589
10590----------------------------------------
1059110 March 2006. Summary of changes for version 20060310:
10592
105931) ACPI CA Core Subsystem:
10594
10595Tagged all external interfaces to the subsystem with the new
10596ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
10597assist
10598kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
10599macro. The default definition is NULL.
10600
10601Added the ACPI_THREAD_ID type for the return value from
10602AcpiOsGetThreadId.
10603This allows the host to define this as necessary to simplify kernel
10604integration. The default definition is ACPI_NATIVE_UINT.
10605
10606Fixed two interpreter problems related to error processing, the deletion
10607of
10608objects, and placing invalid pointers onto the internal operator result
10609stack. BZ 6028, 6151 (Valery Podrezov)
10610
10611Increased the reference count threshold where a warning is emitted for
10612large
10613reference counts in order to eliminate unnecessary warnings on systems
10614with
10615large namespaces (especially 64-bit.) Increased the value from 0x400 to
106160x800.
10617
10618Due to universal disagreement as to the meaning of the 'c' in the
10619calloc()
10620function, the ACPI_MEM_CALLOCATE macro has been renamed to
10621ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
10622ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
10623ACPI_FREE.
10624
10625Code and Data Size: These are the sizes for the acpica.lib produced by
10626the
10627Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
10628ACPI
10629driver or OSPM code. The debug version of the code includes the debug
10630output
10631trace mechanism and has a much larger code and data size. Note that these
10632values will vary depending on the efficiency of the compiler and the
10633compiler options used during generation.
10634
10635  Previous Release:
10636    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
10637    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
10638  Current Release:
10639    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
10640    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
10641
10642
106432) iASL Compiler/Disassembler:
10644
10645Disassembler: implemented support for symbolic resource descriptor
10646references. If a CreateXxxxField operator references a fixed offset
10647within
10648a
10649resource descriptor, a name is assigned to the descriptor and the offset
10650is
10651translated to the appropriate resource tag and pathname. The addition of
10652this support brings the disassembled code very close to the original ASL
10653source code and helps eliminate run-time errors when the disassembled
10654code
10655is modified (and recompiled) in such a way as to invalidate the original
10656fixed offsets.
10657
10658Implemented support for a Descriptor Name as the last parameter to the
10659ASL
10660Register() macro. This parameter was inadvertently left out of the ACPI
10661specification, and will be added for ACPI 3.0b.
10662
10663Fixed a problem where the use of the "_OSI" string (versus the full path
10664"\_OSI") caused an internal compiler error. ("No back ptr to op")
10665
10666Fixed a problem with the error message that occurs when an invalid string
10667is
10668used for a _HID object (such as one with an embedded asterisk:
10669"*PNP010A".)
10670The correct message is now displayed.
10671
10672----------------------------------------
1067317 February 2006. Summary of changes for version 20060217:
10674
106751) ACPI CA Core Subsystem:
10676
10677Implemented a change to the IndexField support to match the behavior of
10678the
10679Microsoft AML interpreter. The value written to the Index register is now
10680a
10681byte offset, no longer an index based upon the width of the Data
10682register.
10683This should fix IndexField problems seen on some machines where the Data
10684register is not exactly one byte wide. The ACPI specification will be
10685clarified on this point.
10686
10687Fixed a problem where several resource descriptor types could overrun the
10688internal descriptor buffer due to size miscalculation: VendorShort,
10689VendorLong, and Interrupt. This was noticed on IA64 machines, but could
10690affect all platforms.
10691
10692Fixed a problem where individual resource descriptors were misaligned
10693within
10694the internal buffer, causing alignment faults on IA64 platforms.
10695
10696Code and Data Size: These are the sizes for the acpica.lib produced by
10697the
10698Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
10699ACPI
10700driver or OSPM code. The debug version of the code includes the debug
10701output
10702trace mechanism and has a much larger code and data size. Note that these
10703values will vary depending on the efficiency of the compiler and the
10704compiler options used during generation.
10705
10706  Previous Release:
10707    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
10708    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
10709  Current Release:
10710    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
10711    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
10712
10713
107142) iASL Compiler/Disassembler:
10715
10716Implemented support for new reserved names: _WDG and _WED are Microsoft
10717extensions for Windows Instrumentation Management, _TDL is a new ACPI-
10718defined method (Throttling Depth Limit.)
10719
10720Fixed a problem where a zero-length VendorShort or VendorLong resource
10721descriptor was incorrectly emitted as a descriptor of length one.
10722
10723----------------------------------------
1072410 February 2006. Summary of changes for version 20060210:
10725
107261) ACPI CA Core Subsystem:
10727
10728Removed a couple of extraneous ACPI_ERROR messages that appeared during
10729normal execution. These became apparent after the conversion from
10730ACPI_DEBUG_PRINT.
10731
10732Fixed a problem where the CreateField operator could hang if the BitIndex
10733or
10734NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
10735
10736Fixed a problem where a DeRefOf operation on a buffer object incorrectly
10737failed with an exception. This also fixes a couple of related RefOf and
10738DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
10739
10740Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
10741of
10742AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
10743BZ
107445480)
10745
10746Implemented a memory cleanup at the end of the execution of each
10747iteration
10748of an AML While() loop, preventing the accumulation of outstanding
10749objects.
10750(Valery Podrezov, BZ 5427)
10751
10752Eliminated a chunk of duplicate code in the object resolution code.
10753(Valery
10754Podrezov, BZ 5336)
10755
10756Fixed several warnings during the 64-bit code generation.
10757
10758The AcpiSrc source code conversion tool now inserts one line of
10759whitespace
10760after an if() statement that is followed immediately by a comment,
10761improving
10762readability of the Linux code.
10763
10764Code and Data Size: The current and previous library sizes for the core
10765subsystem are shown below. These are the code and data sizes for the
10766acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10767These
10768values do not include any ACPI driver or OSPM code. The debug version of
10769the
10770code includes the debug output trace mechanism and has a much larger code
10771and data size. Note that these values will vary depending on the
10772efficiency
10773of the compiler and the compiler options used during generation.
10774
10775  Previous Release:
10776    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
10777    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
10778  Current Release:
10779    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
10780    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
10781
10782
107832) iASL Compiler/Disassembler:
10784
10785Fixed a problem with the disassembly of a BankField operator with a
10786complex
10787expression for the BankValue parameter.
10788
10789----------------------------------------
1079027 January 2006. Summary of changes for version 20060127:
10791
107921) ACPI CA Core Subsystem:
10793
10794Implemented support in the Resource Manager to allow unresolved
10795namestring
10796references within resource package objects for the _PRT method. This
10797support
10798is in addition to the previously implemented unresolved reference support
10799within the AML parser. If the interpreter slack mode is enabled, these
10800unresolved references will be passed through to the caller as a NULL
10801package
10802entry.
10803
10804Implemented and deployed new macros and functions for error and warning
10805messages across the subsystem. These macros are simpler and generate less
10806code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
10807ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
10808macros remain defined to allow ACPI drivers time to migrate to the new
10809macros.
10810
10811Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
10812the
10813Acquire/Release Lock OSL interfaces.
10814
10815Fixed a problem where Alias ASL operators are sometimes not correctly
10816resolved, in both the interpreter and the iASL compiler.
10817
10818Fixed several problems with the implementation of the
10819ConcatenateResTemplate
10820ASL operator. As per the ACPI specification, zero length buffers are now
10821treated as a single EndTag. One-length buffers always cause a fatal
10822exception. Non-zero length buffers that do not end with a full 2-byte
10823EndTag
10824cause a fatal exception.
10825
10826Fixed a possible structure overwrite in the AcpiGetObjectInfo external
10827interface. (With assistance from Thomas Renninger)
10828
10829Code and Data Size: The current and previous library sizes for the core
10830subsystem are shown below. These are the code and data sizes for the
10831acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10832These
10833values do not include any ACPI driver or OSPM code. The debug version of
10834the
10835code includes the debug output trace mechanism and has a much larger code
10836and data size. Note that these values will vary depending on the
10837efficiency
10838of the compiler and the compiler options used during generation.
10839
10840  Previous Release:
10841    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
10842    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
10843  Current Release:
10844    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
10845    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
10846
10847
108482) iASL Compiler/Disassembler:
10849
10850Fixed an internal error that was generated for any forward references to
10851ASL
10852Alias objects.
10853
10854----------------------------------------
1085513 January 2006. Summary of changes for version 20060113:
10856
108571) ACPI CA Core Subsystem:
10858
10859Added 2006 copyright to all module headers and signons. This affects
10860virtually every file in the ACPICA core subsystem, iASL compiler, and the
10861utilities.
10862
10863Enhanced the ACPICA error reporting in order to simplify user migration
10864to
10865the non-debug version of ACPICA. Replaced all instances of the
10866ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
10867debug
10868levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
10869respectively. This preserves all error and warning messages in the non-
10870debug
10871version of the ACPICA code (this has been referred to as the "debug lite"
10872option.) Over 200 cases were converted to create a total of over 380
10873error/warning messages across the ACPICA code. This increases the code
10874and
10875data size of the default non-debug version of the code somewhat (about
1087613K),
10877but all error/warning reporting may be disabled if desired (and code
10878eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
10879configuration option. The size of the debug version of ACPICA remains
10880about
10881the same.
10882
10883Fixed a memory leak within the AML Debugger "Set" command. One object was
10884not properly deleted for every successful invocation of the command.
10885
10886Code and Data Size: The current and previous library sizes for the core
10887subsystem are shown below. These are the code and data sizes for the
10888acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10889These
10890values do not include any ACPI driver or OSPM code. The debug version of
10891the
10892code includes the debug output trace mechanism and has a much larger code
10893and data size. Note that these values will vary depending on the
10894efficiency
10895of the compiler and the compiler options used during generation.
10896
10897  Previous Release:
10898    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
10899    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
10900  Current Release:
10901    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
10902    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
10903
10904
109052) iASL Compiler/Disassembler:
10906
10907The compiler now officially supports the ACPI 3.0a specification that was
10908released on December 30, 2005. (Specification is available at
10909www.acpi.info)
10910
10911----------------------------------------
1091216 December 2005. Summary of changes for version 20051216:
10913
109141) ACPI CA Core Subsystem:
10915
10916Implemented optional support to allow unresolved names within ASL Package
10917objects. A null object is inserted in the package when a named reference
10918cannot be located in the current namespace. Enabled via the interpreter
10919slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
10920machines
10921that contain such code.
10922
10923Implemented an optimization to the initialization sequence that can
10924improve
10925boot time. During ACPI device initialization, the _STA method is now run
10926if
10927and only if the _INI method exists. The _STA method is used to determine
10928if
10929the device is present; An _INI can only be run if _STA returns present,
10930but
10931it is a waste of time to run the _STA method if the _INI does not exist.
10932(Prototype and assistance from Dong Wei)
10933
10934Implemented use of the C99 uintptr_t for the pointer casting macros if it
10935is
10936available in the current compiler. Otherwise, the default (void *) cast
10937is
10938used as before.
10939
10940Fixed some possible memory leaks found within the execution path of the
10941Break, Continue, If, and CreateField operators. (Valery Podrezov)
10942
10943Fixed a problem introduced in the 20051202 release where an exception is
10944generated during method execution if a control method attempts to declare
10945another method.
10946
10947Moved resource descriptor string constants that are used by both the AML
10948disassembler and AML debugger to the common utilities directory so that
10949these components are independent.
10950
10951Implemented support in the AcpiExec utility (-e switch) to globally
10952ignore
10953exceptions during control method execution (method is not aborted.)
10954
10955Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
10956generation.
10957
10958Code and Data Size: The current and previous library sizes for the core
10959subsystem are shown below. These are the code and data sizes for the
10960acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10961These
10962values do not include any ACPI driver or OSPM code. The debug version of
10963the
10964code includes the debug output trace mechanism and has a much larger code
10965and data size. Note that these values will vary depending on the
10966efficiency
10967of the compiler and the compiler options used during generation.
10968
10969  Previous Release:
10970    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
10971    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
10972  Current Release:
10973    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
10974    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
10975
10976
109772) iASL Compiler/Disassembler:
10978
10979Fixed a problem where a CPU stack overflow fault could occur if a
10980recursive
10981method call was made from within a Return statement.
10982
10983----------------------------------------
1098402 December 2005. Summary of changes for version 20051202:
10985
109861) ACPI CA Core Subsystem:
10987
10988Modified the parsing of control methods to no longer create namespace
10989objects during the first pass of the parse. Objects are now created only
10990during the execute phase, at the moment the namespace creation operator
10991is
10992encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
10993This
10994should eliminate ALREADY_EXISTS exceptions seen on some machines where
10995reentrant control methods are protected by an AML mutex. The mutex will
10996now
10997correctly block multiple threads from attempting to create the same
10998object
10999more than once.
11000
11001Increased the number of available Owner Ids for namespace object tracking
11002from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
11003on
11004some machines with a large number of ACPI tables (either static or
11005dynamic).
11006
11007Fixed a problem with the AcpiExec utility where a fault could occur when
11008the
11009-b switch (batch mode) is used.
11010
11011Enhanced the namespace dump routine to output the owner ID for each
11012namespace object.
11013
11014Code and Data Size: The current and previous library sizes for the core
11015subsystem are shown below. These are the code and data sizes for the
11016acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11017These
11018values do not include any ACPI driver or OSPM code. The debug version of
11019the
11020code includes the debug output trace mechanism and has a much larger code
11021and data size. Note that these values will vary depending on the
11022efficiency
11023of the compiler and the compiler options used during generation.
11024
11025  Previous Release:
11026    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
11027    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
11028  Current Release:
11029    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
11030    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
11031
11032
110332) iASL Compiler/Disassembler:
11034
11035Fixed a parse error during compilation of certain Switch/Case constructs.
11036To
11037simplify the parse, the grammar now allows for multiple Default
11038statements
11039and this error is now detected and flagged during the analysis phase.
11040
11041Disassembler: The disassembly now includes the contents of the original
11042table header within a comment at the start of the file. This includes the
11043name and version of the original ASL compiler.
11044
11045----------------------------------------
1104617 November 2005. Summary of changes for version 20051117:
11047
110481) ACPI CA Core Subsystem:
11049
11050Fixed a problem in the AML parser where the method thread count could be
11051decremented below zero if any errors occurred during the method parse
11052phase.
11053This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
11054machines.
11055This also fixed a related regression with the mechanism that detects and
11056corrects methods that cannot properly handle reentrancy (related to the
11057deployment of the new OwnerId mechanism.)
11058
11059Eliminated the pre-parsing of control methods (to detect errors) during
11060table load. Related to the problem above, this was causing unwind issues
11061if
11062any errors occurred during the parse, and it seemed to be overkill. A
11063table
11064load should not be aborted if there are problems with any single control
11065method, thus rendering this feature rather pointless.
11066
11067Fixed a problem with the new table-driven resource manager where an
11068internal
11069buffer overflow could occur for small resource templates.
11070
11071Implemented a new external interface, AcpiGetVendorResource. This
11072interface
11073will find and return a vendor-defined resource descriptor within a _CRS
11074or
11075_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
11076Helgaas.
11077
11078Removed the length limit (200) on string objects as per the upcoming ACPI
110793.0A specification. This affects the following areas of the interpreter:
110801)
11081any implicit conversion of a Buffer to a String, 2) a String object
11082result
11083of the ASL Concatentate operator, 3) the String object result of the ASL
11084ToString operator.
11085
11086Fixed a problem in the Windows OS interface layer (OSL) where a
11087WAIT_FOREVER
11088on a semaphore object would incorrectly timeout. This allows the
11089multithreading features of the AcpiExec utility to work properly under
11090Windows.
11091
11092Updated the Linux makefiles for the iASL compiler and AcpiExec to include
11093the recently added file named "utresrc.c".
11094
11095Code and Data Size: The current and previous library sizes for the core
11096subsystem are shown below. These are the code and data sizes for the
11097acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11098These
11099values do not include any ACPI driver or OSPM code. The debug version of
11100the
11101code includes the debug output trace mechanism and has a much larger code
11102and data size. Note that these values will vary depending on the
11103efficiency
11104of the compiler and the compiler options used during generation.
11105
11106  Previous Release:
11107    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
11108    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
11109  Current Release:
11110    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
11111    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
11112
11113
111142) iASL Compiler/Disassembler:
11115
11116Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
11117specification. For the iASL compiler, this means that string literals
11118within
11119the source ASL can be of any length.
11120
11121Enhanced the listing output to dump the AML code for resource descriptors
11122immediately after the ASL code for each descriptor, instead of in a block
11123at
11124the end of the entire resource template.
11125
11126Enhanced the compiler debug output to dump the entire original parse tree
11127constructed during the parse phase, before any transforms are applied to
11128the
11129tree. The transformed tree is dumped also.
11130
11131----------------------------------------
1113202 November 2005. Summary of changes for version 20051102:
11133
111341) ACPI CA Core Subsystem:
11135
11136Modified the subsystem initialization sequence to improve GPE support.
11137The
11138GPE initialization has been split into two parts in order to defer
11139execution
11140of the _PRW methods (Power Resources for Wake) until after the hardware
11141is
11142fully initialized and the SCI handler is installed. This allows the _PRW
11143methods to access fields protected by the Global Lock. This will fix
11144systems
11145where a NO_GLOBAL_LOCK exception has been seen during initialization.
11146
11147Converted the ACPI internal object disassemble and display code within
11148the
11149AML debugger to fully table-driven operation, reducing code size and
11150increasing maintainability.
11151
11152Fixed a regression with the ConcatenateResTemplate() ASL operator
11153introduced
11154in the 20051021 release.
11155
11156Implemented support for "local" internal ACPI object types within the
11157debugger "Object" command and the AcpiWalkNamespace external interfaces.
11158These local types include RegionFields, BankFields, IndexFields, Alias,
11159and
11160reference objects.
11161
11162Moved common AML resource handling code into a new file, "utresrc.c".
11163This
11164code is shared by both the Resource Manager and the AML Debugger.
11165
11166Code and Data Size: The current and previous library sizes for the core
11167subsystem are shown below. These are the code and data sizes for the
11168acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11169These
11170values do not include any ACPI driver or OSPM code. The debug version of
11171the
11172code includes the debug output trace mechanism and has a much larger code
11173and data size. Note that these values will vary depending on the
11174efficiency
11175of the compiler and the compiler options used during generation.
11176
11177  Previous Release:
11178    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
11179    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
11180  Current Release:
11181    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
11182    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
11183
11184
111852) iASL Compiler/Disassembler:
11186
11187Fixed a problem with very large initializer lists (more than 4000
11188elements)
11189for both Buffer and Package objects where the parse stack could overflow.
11190
11191Enhanced the pre-compile source code scan for non-ASCII characters to
11192ignore
11193characters within comment fields. The scan is now always performed and is
11194no
11195longer optional, detecting invalid characters within a source file
11196immediately rather than during the parse phase or later.
11197
11198Enhanced the ASL grammar definition to force early reductions on all
11199list-
11200style grammar elements so that the overall parse stack usage is greatly
11201reduced. This should improve performance and reduce the possibility of
11202parse
11203stack overflow.
11204
11205Eliminated all reduce/reduce conflicts in the iASL parser generation.
11206Also,
11207with the addition of a %expected statement, the compiler generates from
11208source with no warnings.
11209
11210Fixed a possible segment fault in the disassembler if the input filename
11211does not contain a "dot" extension (Thomas Renninger).
11212
11213----------------------------------------
1121421 October 2005. Summary of changes for version 20051021:
11215
112161) ACPI CA Core Subsystem:
11217
11218Implemented support for the EM64T and other x86-64 processors. This
11219essentially entails recognizing that these processors support non-aligned
11220memory transfers. Previously, all 64-bit processors were assumed to lack
11221hardware support for non-aligned transfers.
11222
11223Completed conversion of the Resource Manager to nearly full table-driven
11224operation. Specifically, the resource conversion code (convert AML to
11225internal format and the reverse) and the debug code to dump internal
11226resource descriptors are fully table-driven, reducing code and data size
11227and
11228improving maintainability.
11229
11230The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
11231word
11232on 64-bit processors instead of a fixed 32-bit word. (With assistance
11233from
11234Alexey Starikovskiy)
11235
11236Implemented support within the resource conversion code for the Type-
11237Specific byte within the various ACPI 3.0 *WordSpace macros.
11238
11239Fixed some issues within the resource conversion code for the type-
11240specific
11241flags for both Memory and I/O address resource descriptors. For Memory,
11242implemented support for the MTP and TTP flags. For I/O, split the TRS and
11243TTP flags into two separate fields.
11244
11245Code and Data Size: The current and previous library sizes for the core
11246subsystem are shown below. These are the code and data sizes for the
11247acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11248These
11249values do not include any ACPI driver or OSPM code. The debug version of
11250the
11251code includes the debug output trace mechanism and has a much larger code
11252and data size. Note that these values will vary depending on the
11253efficiency
11254of the compiler and the compiler options used during generation.
11255
11256  Previous Release:
11257    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
11258    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
11259  Current Release:
11260    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
11261    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
11262
11263
11264
112652) iASL Compiler/Disassembler:
11266
11267Relaxed a compiler restriction that disallowed a ResourceIndex byte if
11268the
11269corresponding ResourceSource string was not also present in a resource
11270descriptor declaration. This restriction caused problems with existing
11271AML/ASL code that includes the Index byte without the string. When such
11272AML
11273was disassembled, it could not be compiled without modification. Further,
11274the modified code created a resource template with a different size than
11275the
11276original, breaking code that used fixed offsets into the resource
11277template
11278buffer.
11279
11280Removed a recent feature of the disassembler to ignore a lone
11281ResourceIndex
11282byte. This byte is now emitted if present so that the exact AML can be
11283reproduced when the disassembled code is recompiled.
11284
11285Improved comments and text alignment for the resource descriptor code
11286emitted by the disassembler.
11287
11288Implemented disassembler support for the ACPI 3.0 AccessSize field within
11289a
11290Register() resource descriptor.
11291
11292----------------------------------------
1129330 September 2005. Summary of changes for version 20050930:
11294
112951) ACPI CA Core Subsystem:
11296
11297Completed a major overhaul of the Resource Manager code - specifically,
11298optimizations in the area of the AML/internal resource conversion code.
11299The
11300code has been optimized to simplify and eliminate duplicated code, CPU
11301stack
11302use has been decreased by optimizing function parameters and local
11303variables, and naming conventions across the manager have been
11304standardized
11305for clarity and ease of maintenance (this includes function, parameter,
11306variable, and struct/typedef names.) The update may force changes in some
11307driver code, depending on how resources are handled by the host OS.
11308
11309All Resource Manager dispatch and information tables have been moved to a
11310single location for clarity and ease of maintenance. One new file was
11311created, named "rsinfo.c".
11312
11313The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
11314guarantee that the argument is not evaluated twice, making them less
11315prone
11316to macro side-effects. However, since there exists the possibility of
11317additional stack use if a particular compiler cannot optimize them (such
11318as
11319in the debug generation case), the original macros are optionally
11320available.
11321Note that some invocations of the return_VALUE macro may now cause size
11322mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
11323to
11324eliminate these. (From Randy Dunlap)
11325
11326Implemented a new mechanism to enable debug tracing for individual
11327control
11328methods. A new external interface, AcpiDebugTrace, is provided to enable
11329this mechanism. The intent is to allow the host OS to easily enable and
11330disable tracing for problematic control methods. This interface can be
11331easily exposed to a user or debugger interface if desired. See the file
11332psxface.c for details.
11333
11334AcpiUtCallocate will now return a valid pointer if a length of zero is
11335specified - a length of one is used and a warning is issued. This matches
11336the behavior of AcpiUtAllocate.
11337
11338Code and Data Size: The current and previous library sizes for the core
11339subsystem are shown below. These are the code and data sizes for the
11340acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11341These
11342values do not include any ACPI driver or OSPM code. The debug version of
11343the
11344code includes the debug output trace mechanism and has a much larger code
11345and data size. Note that these values will vary depending on the
11346efficiency
11347of the compiler and the compiler options used during generation.
11348
11349  Previous Release:
11350    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
11351    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
11352  Current Release:
11353    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
11354    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
11355
11356
113572) iASL Compiler/Disassembler:
11358
11359A remark is issued if the effective compile-time length of a package or
11360buffer is zero. Previously, this was a warning.
11361
11362----------------------------------------
1136316 September 2005. Summary of changes for version 20050916:
11364
113651) ACPI CA Core Subsystem:
11366
11367Fixed a problem within the Resource Manager where support for the Generic
11368Register descriptor was not fully implemented. This descriptor is now
11369fully
11370recognized, parsed, disassembled, and displayed.
11371
11372Completely restructured the Resource Manager code to utilize table-driven
11373dispatch and lookup, eliminating many of the large switch() statements.
11374This
11375reduces overall subsystem code size and code complexity. Affects the
11376resource parsing and construction, disassembly, and debug dump output.
11377
11378Cleaned up and restructured the debug dump output for all resource
11379descriptors. Improved readability of the output and reduced code size.
11380
11381Fixed a problem where changes to internal data structures caused the
11382optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
11383
11384Code and Data Size: The current and previous library sizes for the core
11385subsystem are shown below. These are the code and data sizes for the
11386acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11387These
11388values do not include any ACPI driver or OSPM code. The debug version of
11389the
11390code includes the debug output trace mechanism and has a much larger code
11391and data size. Note that these values will vary depending on the
11392efficiency
11393of the compiler and the compiler options used during generation.
11394
11395  Previous Release:
11396    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
11397    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
11398  Current Release:
11399    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
11400    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
11401
11402
114032) iASL Compiler/Disassembler:
11404
11405Updated the disassembler to automatically insert an EndDependentFn()
11406macro
11407into the ASL stream if this macro is missing in the original AML code,
11408simplifying compilation of the resulting ASL module.
11409
11410Fixed a problem in the disassembler where a disassembled ResourceSource
11411string (within a large resource descriptor) was not surrounded by quotes
11412and
11413not followed by a comma, causing errors when the resulting ASL module was
11414compiled. Also, escape sequences within a ResourceSource string are now
11415handled correctly (especially "\\")
11416
11417----------------------------------------
1141802 September 2005. Summary of changes for version 20050902:
11419
114201) ACPI CA Core Subsystem:
11421
11422Fixed a problem with the internal Owner ID allocation and deallocation
11423mechanisms for control method execution and recursive method invocation.
11424This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
11425messages seen on some systems. Recursive method invocation depth is
11426currently limited to 255. (Alexey Starikovskiy)
11427
11428Completely eliminated all vestiges of support for the "module-level
11429executable code" until this support is fully implemented and debugged.
11430This
11431should eliminate the NO_RETURN_VALUE exceptions seen during table load on
11432some systems that invoke this support.
11433
11434Fixed a problem within the resource manager code where the transaction
11435flags
11436for a 64-bit address descriptor were handled incorrectly in the type-
11437specific flag byte.
11438
11439Consolidated duplicate code within the address descriptor resource
11440manager
11441code, reducing overall subsystem code size.
11442
11443Fixed a fault when using the AML debugger "disassemble" command to
11444disassemble individual control methods.
11445
11446Removed references to the "release_current" directory within the Unix
11447release package.
11448
11449Code and Data Size: The current and previous core subsystem library sizes
11450are shown below. These are the code and data sizes for the acpica.lib
11451produced by the Microsoft Visual C++ 6.0 compiler. These values do not
11452include any ACPI driver or OSPM code. The debug version of the code
11453includes
11454the debug output trace mechanism and has a much larger code and data
11455size.
11456Note that these values will vary depending on the efficiency of the
11457compiler
11458and the compiler options used during generation.
11459
11460  Previous Release:
11461    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
11462    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
11463  Current Release:
11464    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
11465    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
11466
11467
114682) iASL Compiler/Disassembler:
11469
11470Implemented an error check for illegal duplicate values in the interrupt
11471and
11472dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
11473Interrupt().
11474
11475Implemented error checking for the Irq() and IrqNoFlags() macros to
11476detect
11477too many values in the interrupt list (16 max) and invalid values in the
11478list (range 0 - 15)
11479
11480The maximum length string literal within an ASL file is now restricted to
11481200 characters as per the ACPI specification.
11482
11483Fixed a fault when using the -ln option (generate namespace listing).
11484
11485Implemented an error check to determine if a DescriptorName within a
11486resource descriptor has already been used within the current scope.
11487
11488----------------------------------------
1148915 August 2005.  Summary of changes for version 20050815:
11490
114911) ACPI CA Core Subsystem:
11492
11493Implemented a full bytewise compare to determine if a table load request
11494is
11495attempting to load a duplicate table. The compare is performed if the
11496table
11497signatures and table lengths match. This will allow different tables with
11498the same OEM Table ID and revision to be loaded - probably against the
11499ACPI
11500specification, but discovered in the field nonetheless.
11501
11502Added the changes.txt logfile to each of the zipped release packages.
11503
11504Code and Data Size: Current and previous core subsystem library sizes are
11505shown below. These are the code and data sizes for the acpica.lib
11506produced
11507by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11508any ACPI driver or OSPM code. The debug version of the code includes the
11509debug output trace mechanism and has a much larger code and data size.
11510Note
11511that these values will vary depending on the efficiency of the compiler
11512and
11513the compiler options used during generation.
11514
11515  Previous Release:
11516    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
11517    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
11518  Current Release:
11519    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
11520    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
11521
11522
115232) iASL Compiler/Disassembler:
11524
11525Fixed a problem where incorrect AML code could be generated for Package
11526objects if optimization is disabled (via the -oa switch).
11527
11528Fixed a problem with where incorrect AML code is generated for variable-
11529length packages when the package length is not specified and the number
11530of
11531initializer values is greater than 255.
11532
11533
11534----------------------------------------
1153529 July 2005.  Summary of changes for version 20050729:
11536
115371) ACPI CA Core Subsystem:
11538
11539Implemented support to ignore an attempt to install/load a particular
11540ACPI
11541table more than once. Apparently there exists BIOS code that repeatedly
11542attempts to load the same SSDT upon certain events. With assistance from
11543Venkatesh Pallipadi.
11544
11545Restructured the main interface to the AML parser in order to correctly
11546handle all exceptional conditions. This will prevent leakage of the
11547OwnerId
11548resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
11549some
11550machines. With assistance from Alexey Starikovskiy.
11551
11552Support for "module level code" has been disabled in this version due to
11553a
11554number of issues that have appeared on various machines. The support can
11555be
11556enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
11557compilation. When the issues are fully resolved, the code will be enabled
11558by
11559default again.
11560
11561Modified the internal functions for debug print support to define the
11562FunctionName parameter as a (const char *) for compatibility with
11563compiler
11564built-in macros such as __FUNCTION__, etc.
11565
11566Linted the entire ACPICA source tree for both 32-bit and 64-bit.
11567
11568Implemented support to display an object count summary for the AML
11569Debugger
11570commands Object and Methods.
11571
11572Code and Data Size: Current and previous core subsystem library sizes are
11573shown below. These are the code and data sizes for the acpica.lib
11574produced
11575by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11576any ACPI driver or OSPM code. The debug version of the code includes the
11577debug output trace mechanism and has a much larger code and data size.
11578Note
11579that these values will vary depending on the efficiency of the compiler
11580and
11581the compiler options used during generation.
11582
11583  Previous Release:
11584    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
11585    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
11586  Current Release:
11587    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
11588    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
11589
11590
115912) iASL Compiler/Disassembler:
11592
11593Fixed a regression that appeared in the 20050708 version of the compiler
11594where an error message was inadvertently emitted for invocations of the
11595_OSI
11596reserved control method.
11597
11598----------------------------------------
1159908 July 2005.  Summary of changes for version 20050708:
11600
116011) ACPI CA Core Subsystem:
11602
11603The use of the CPU stack in the debug version of the subsystem has been
11604considerably reduced. Previously, a debug structure was declared in every
11605function that used the debug macros. This structure has been removed in
11606favor of declaring the individual elements as parameters to the debug
11607functions. This reduces the cumulative stack use during nested execution
11608of
11609ACPI function calls at the cost of a small increase in the code size of
11610the
11611debug version of the subsystem. With assistance from Alexey Starikovskiy
11612and
11613Len Brown.
11614
11615Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
11616headers to define a macro that will return the current function name at
11617runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
11618by
11619the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
11620compiler-dependent header, the function name is saved on the CPU stack
11621(one
11622pointer per function.) This mechanism is used because apparently there
11623exists no standard ANSI-C defined macro that that returns the function
11624name.
11625
11626Redesigned and reimplemented the "Owner ID" mechanism used to track
11627namespace objects created/deleted by ACPI tables and control method
11628execution. A bitmap is now used to allocate and free the IDs, thus
11629solving
11630the wraparound problem present in the previous implementation. The size
11631of
11632the namespace node descriptor was reduced by 2 bytes as a result (Alexey
11633Starikovskiy).
11634
11635Removed the UINT32_BIT and UINT16_BIT types that were used for the
11636bitfield
11637flag definitions within the headers for the predefined ACPI tables. These
11638have been replaced by UINT8_BIT in order to increase the code portability
11639of
11640the subsystem. If the use of UINT8 remains a problem, we may be forced to
11641eliminate bitfields entirely because of a lack of portability.
11642
11643Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
11644This
11645is a frequently used function and this improvement increases the
11646performance
11647of the entire subsystem (Alexey Starikovskiy).
11648
11649Fixed several possible memory leaks and the inverse - premature object
11650deletion (Alexey Starikovskiy).
11651
11652Code and Data Size: Current and previous core subsystem library sizes are
11653shown below. These are the code and data sizes for the acpica.lib
11654produced
11655by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11656any ACPI driver or OSPM code. The debug version of the code includes the
11657debug output trace mechanism and has a much larger code and data size.
11658Note
11659that these values will vary depending on the efficiency of the compiler
11660and
11661the compiler options used during generation.
11662
11663  Previous Release:
11664    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
11665    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
11666  Current Release:
11667    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
11668    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
11669
11670----------------------------------------
1167124 June 2005.  Summary of changes for version 20050624:
11672
116731) ACPI CA Core Subsystem:
11674
11675Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
11676the host-defined cache object. This allows the OSL implementation to
11677define
11678and type this object in any manner desired, simplifying the OSL
11679implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
11680Linux, and should be defined in the OS-specific header file for other
11681operating systems as required.
11682
11683Changed the interface to AcpiOsAcquireObject to directly return the
11684requested object as the function return (instead of ACPI_STATUS.) This
11685change was made for performance reasons, since this is the purpose of the
11686interface in the first place. AcpiOsAcquireObject is now similar to the
11687AcpiOsAllocate interface.
11688
11689Implemented a new AML debugger command named Businfo. This command
11690displays
11691information about all devices that have an associate _PRT object. The
11692_ADR,
11693_HID, _UID, and _CID are displayed for these devices.
11694
11695Modified the initialization sequence in AcpiInitializeSubsystem to call
11696the
11697OSL interface AcpiOslInitialize first, before any local initialization.
11698This
11699change was required because the global initialization now calls OSL
11700interfaces.
11701
11702Enhanced the Dump command to display the entire contents of Package
11703objects
11704(including all sub-objects and their values.)
11705
11706Restructured the code base to split some files because of size and/or
11707because the code logically belonged in a separate file. New files are
11708listed
11709below. All makefiles and project files included in the ACPI CA release
11710have
11711been updated.
11712    utilities/utcache.c           /* Local cache interfaces */
11713    utilities/utmutex.c           /* Local mutex support */
11714    utilities/utstate.c           /* State object support */
11715    interpreter/parser/psloop.c   /* Main AML parse loop */
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.3K Code, 11.6K Data,  89.9K Total
11730    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
11731  Current Release:
11732    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
11733    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
11734
11735
117362) iASL Compiler/Disassembler:
11737
11738Fixed a regression introduced in version 20050513 where the use of a
11739Package
11740object within a Case() statement caused a compile time exception. The
11741original behavior has been restored (a Match() operator is emitted.)
11742
11743----------------------------------------
1174417 June 2005.  Summary of changes for version 20050617:
11745
117461) ACPI CA Core Subsystem:
11747
11748Moved the object cache operations into the OS interface layer (OSL) to
11749allow
11750the host OS to handle these operations if desired (for example, the Linux
11751OSL will invoke the slab allocator). This support is optional; the
11752compile
11753time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
11754cache
11755code in the ACPI CA core. The new OSL interfaces are shown below. See
11756utalloc.c for an example implementation, and acpiosxf.h for the exact
11757interface definitions. With assistance from Alexey Starikovskiy.
11758    AcpiOsCreateCache
11759    AcpiOsDeleteCache
11760    AcpiOsPurgeCache
11761    AcpiOsAcquireObject
11762    AcpiOsReleaseObject
11763
11764Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
11765return
11766and restore a flags parameter. This fits better with many OS lock models.
11767Note: the current execution state (interrupt handler or not) is no longer
11768passed to these interfaces. If necessary, the OSL must determine this
11769state
11770by itself, a simple and fast operation. With assistance from Alexey
11771Starikovskiy.
11772
11773Fixed a problem in the ACPI table handling where a valid XSDT was assumed
11774present if the revision of the RSDP was 2 or greater. According to the
11775ACPI
11776specification, the XSDT is optional in all cases, and the table manager
11777therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
11778Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
11779contain
11780only the RSDT.
11781
11782Fixed an interpreter problem with the Mid() operator in the case of an
11783input
11784string where the resulting output string is of zero length. It now
11785correctly
11786returns a valid, null terminated string object instead of a string object
11787with a null pointer.
11788
11789Fixed a problem with the control method argument handling to allow a
11790store
11791to an Arg object that already contains an object of type Device. The
11792Device
11793object is now correctly overwritten. Previously, an error was returned.
11794
11795
11796Enhanced the debugger Find command to emit object values in addition to
11797the
11798found object pathnames. The output format is the same as the dump
11799namespace
11800command.
11801
11802Enhanced the debugger Set command. It now has the ability to set the
11803value
11804of any Named integer object in the namespace (Previously, only method
11805locals
11806and args could be set.)
11807
11808Code and Data Size: Current and previous core subsystem library sizes are
11809shown below. These are the code and data sizes for the acpica.lib
11810produced
11811by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11812any ACPI driver or OSPM code. The debug version of the code includes the
11813debug output trace mechanism and has a much larger code and data size.
11814Note
11815that these values will vary depending on the efficiency of the compiler
11816and
11817the compiler options used during generation.
11818
11819  Previous Release:
11820    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
11821    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
11822  Current Release:
11823    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
11824    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
11825
11826
118272) iASL Compiler/Disassembler:
11828
11829Fixed a regression in the disassembler where if/else/while constructs
11830were
11831output incorrectly. This problem was introduced in the previous release
11832(20050526). This problem also affected the single-step disassembly in the
11833debugger.
11834
11835Fixed a problem where compiling the reserved _OSI method would randomly
11836(but
11837rarely) produce compile errors.
11838
11839Enhanced the disassembler to emit compilable code in the face of
11840incorrect
11841AML resource descriptors. If the optional ResourceSourceIndex is present,
11842but the ResourceSource is not, do not emit the ResourceSourceIndex in the
11843disassembly. Otherwise, the resulting code cannot be compiled without
11844errors.
11845
11846----------------------------------------
1184726 May 2005.  Summary of changes for version 20050526:
11848
118491) ACPI CA Core Subsystem:
11850
11851Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
11852the module level (not within a control method.) These opcodes are
11853executed
11854exactly once at the time the table is loaded. This type of code was legal
11855up
11856until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
11857in
11858order to provide backwards compatibility with earlier BIOS
11859implementations.
11860This eliminates the "Encountered executable code at module level" warning
11861that was previously generated upon detection of such code.
11862
11863Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
11864inadvertently be generated during the lookup of namespace objects in the
11865second pass parse of ACPI tables and control methods. It appears that
11866this
11867problem could occur during the resolution of forward references to
11868namespace
11869objects.
11870
11871Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
11872corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
11873allows the deadlock detection debug code to be compiled out in the normal
11874case, improving mutex performance (and overall subsystem performance)
11875considerably.
11876
11877Implemented a handful of miscellaneous fixes for possible memory leaks on
11878error conditions and error handling control paths. These fixes were
11879suggested by FreeBSD and the Coverity Prevent source code analysis tool.
11880
11881Added a check for a null RSDT pointer in AcpiGetFirmwareTable
11882(tbxfroot.c)
11883to prevent a fault in this error case.
11884
11885Code and Data Size: Current and previous core subsystem library sizes are
11886shown below. These are the code and data sizes for the acpica.lib
11887produced
11888by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11889any ACPI driver or OSPM code. The debug version of the code includes the
11890debug output trace mechanism and has a much larger code and data size.
11891Note
11892that these values will vary depending on the efficiency of the compiler
11893and
11894the compiler options used during generation.
11895
11896  Previous Release:
11897    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
11898    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
11899  Current Release:
11900    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
11901    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
11902
11903
119042) iASL Compiler/Disassembler:
11905
11906Implemented support to allow Type 1 and Type 2 ASL operators to appear at
11907the module level (not within a control method.) These operators will be
11908executed once at the time the table is loaded. This type of code was
11909legal
11910up until the release of ACPI 2.0B (2002) and is now supported by the iASL
11911compiler in order to provide backwards compatibility with earlier BIOS
11912ASL
11913code.
11914
11915The ACPI integer width (specified via the table revision ID or the -r
11916override, 32 or 64 bits) is now used internally during compile-time
11917constant
11918folding to ensure that constants are truncated to 32 bits if necessary.
11919Previously, the revision ID value was only emitted in the AML table
11920header.
11921
11922An error message is now generated for the Mutex and Method operators if
11923the
11924SyncLevel parameter is outside the legal range of 0 through 15.
11925
11926Fixed a problem with the Method operator ParameterTypes list handling
11927(ACPI
119283.0). Previously, more than 2 types or 2 arguments generated a syntax
11929error.
11930The actual underlying implementation of method argument typechecking is
11931still under development, however.
11932
11933----------------------------------------
1193413 May 2005.  Summary of changes for version 20050513:
11935
119361) ACPI CA Core Subsystem:
11937
11938Implemented support for PCI Express root bridges -- added support for
11939device
11940PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
11941
11942The interpreter now automatically truncates incoming 64-bit constants to
1194332
11944bits if currently executing out of a 32-bit ACPI table (Revision < 2).
11945This
11946also affects the iASL compiler constant folding. (Note: as per below, the
11947iASL compiler no longer allows 64-bit constants within 32-bit tables.)
11948
11949Fixed a problem where string and buffer objects with "static" pointers
11950(pointers to initialization data within an ACPI table) were not handled
11951consistently. The internal object copy operation now always copies the
11952data
11953to a newly allocated buffer, regardless of whether the source object is
11954static or not.
11955
11956Fixed a problem with the FromBCD operator where an implicit result
11957conversion was improperly performed while storing the result to the
11958target
11959operand. Since this is an "explicit conversion" operator, the implicit
11960conversion should never be performed on the output.
11961
11962Fixed a problem with the CopyObject operator where a copy to an existing
11963named object did not always completely overwrite the existing object
11964stored
11965at name. Specifically, a buffer-to-buffer copy did not delete the
11966existing
11967buffer.
11968
11969Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
11970and
11971structs for consistency.
11972
11973Code and Data Size: Current and previous core subsystem library sizes are
11974shown below. These are the code and data sizes for the acpica.lib
11975produced
11976by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11977any ACPI driver or OSPM code. The debug version of the code includes the
11978debug output trace mechanism and has a much larger code and data size.
11979Note
11980that these values will vary depending on the efficiency of the compiler
11981and
11982the compiler options used during generation.
11983
11984  Previous Release:
11985    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
11986    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
11987  Current Release: (Same sizes)
11988    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
11989    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
11990
11991
119922) iASL Compiler/Disassembler:
11993
11994The compiler now emits a warning if an attempt is made to generate a 64-
11995bit
11996integer constant from within a 32-bit ACPI table (Revision < 2). The
11997integer
11998is truncated to 32 bits.
11999
12000Fixed a problem with large package objects: if the static length of the
12001package is greater than 255, the "variable length package" opcode is
12002emitted. Previously, this caused an error. This requires an update to the
12003ACPI spec, since it currently (incorrectly) states that packages larger
12004than
12005255 elements are not allowed.
12006
12007The disassembler now correctly handles variable length packages and
12008packages
12009larger than 255 elements.
12010
12011----------------------------------------
1201208 April 2005.  Summary of changes for version 20050408:
12013
120141) ACPI CA Core Subsystem:
12015
12016Fixed three cases in the interpreter where an "index" argument to an ASL
12017function was still (internally) 32 bits instead of the required 64 bits.
12018This was the Index argument to the Index, Mid, and Match operators.
12019
12020The "strupr" function is now permanently local (AcpiUtStrupr), since this
12021is
12022not a POSIX-defined function and not present in most kernel-level C
12023libraries. All references to the C library strupr function have been
12024removed
12025from the headers.
12026
12027Completed the deployment of static functions/prototypes. All prototypes
12028with
12029the static attribute have been moved from the headers to the owning C
12030file.
12031
12032Implemented an extract option (-e) for the AcpiBin utility (AML binary
12033utility). This option allows the utility to extract individual ACPI
12034tables
12035from the output of AcpiDmp. It provides the same functionality of the
12036acpixtract.pl perl script without the worry of setting the correct perl
12037options. AcpiBin runs on Windows and has not yet been generated/validated
12038in
12039the Linux/Unix environment (but should be soon).
12040
12041Updated and fixed the table dump option for AcpiBin (-d). This option
12042converts a single ACPI table to a hex/ascii file, similar to the output
12043of
12044AcpiDmp.
12045
12046Code and Data Size: Current and previous core subsystem library sizes are
12047shown below. These are the code and data sizes for the acpica.lib
12048produced
12049by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12050any ACPI driver or OSPM code. The debug version of the code includes the
12051debug output trace mechanism and has a much larger code and data size.
12052Note
12053that these values will vary depending on the efficiency of the compiler
12054and
12055the compiler options used during generation.
12056
12057  Previous Release:
12058    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
12059    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
12060  Current Release:
12061    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
12062    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
12063
12064
120652) iASL Compiler/Disassembler:
12066
12067Disassembler fix: Added a check to ensure that the table length found in
12068the
12069ACPI table header within the input file is not longer than the actual
12070input
12071file size. This indicates some kind of file or table corruption.
12072
12073----------------------------------------
1207429 March 2005.  Summary of changes for version 20050329:
12075
120761) ACPI CA Core Subsystem:
12077
12078An error is now generated if an attempt is made to create a Buffer Field
12079of
12080length zero (A CreateField with a length operand of zero.)
12081
12082The interpreter now issues a warning whenever executable code at the
12083module
12084level is detected during ACPI table load. This will give some idea of the
12085prevalence of this type of code.
12086
12087Implemented support for references to named objects (other than control
12088methods) within package objects.
12089
12090Enhanced package object output for the debug object. Package objects are
12091now
12092completely dumped, showing all elements.
12093
12094Enhanced miscellaneous object output for the debug object. Any object can
12095now be written to the debug object (for example, a device object can be
12096written, and the type of the object will be displayed.)
12097
12098The "static" qualifier has been added to all local functions across both
12099the
12100core subsystem and the iASL compiler.
12101
12102The number of "long" lines (> 80 chars) within the source has been
12103significantly reduced, by about 1/3.
12104
12105Cleaned up all header files to ensure that all CA/iASL functions are
12106prototyped (even static functions) and the formatting is consistent.
12107
12108Two new header files have been added, acopcode.h and acnames.h.
12109
12110Removed several obsolete functions that were no longer used.
12111
12112Code and Data Size: Current and previous core subsystem library sizes are
12113shown below. These are the code and data sizes for the acpica.lib
12114produced
12115by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12116any ACPI driver or OSPM code. The debug version of the code includes the
12117debug output trace mechanism and has a much larger code and data size.
12118Note
12119that these values will vary depending on the efficiency of the compiler
12120and
12121the compiler options used during generation.
12122
12123  Previous Release:
12124    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
12125    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
12126  Current Release:
12127    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
12128    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
12129
12130
12131
121322) iASL Compiler/Disassembler:
12133
12134Fixed a problem with the resource descriptor generation/support. For the
12135ResourceSourceIndex and the ResourceSource fields, both must be present,
12136or
12137both must be not present - can't have one without the other.
12138
12139The compiler now returns non-zero from the main procedure if any errors
12140have
12141occurred during the compilation.
12142
12143
12144----------------------------------------
1214509 March 2005.  Summary of changes for version 20050309:
12146
121471) ACPI CA Core Subsystem:
12148
12149The string-to-buffer implicit conversion code has been modified again
12150after
12151a change to the ACPI specification.  In order to match the behavior of
12152the
12153other major ACPI implementation, the target buffer is no longer truncated
12154if
12155the source string is smaller than an existing target buffer. This change
12156requires an update to the ACPI spec, and should eliminate the recent
12157AE_AML_BUFFER_LIMIT issues.
12158
12159The "implicit return" support was rewritten to a new algorithm that
12160solves
12161the general case. Rather than attempt to determine when a method is about
12162to
12163exit, the result of every ASL operator is saved momentarily until the
12164very
12165next ASL operator is executed. Therefore, no matter how the method exits,
12166there will always be a saved implicit return value. This feature is only
12167enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
12168eliminate
12169AE_AML_NO_RETURN_VALUE errors when enabled.
12170
12171Implemented implicit conversion support for the predicate (operand) of
12172the
12173If, Else, and While operators. String and Buffer arguments are
12174automatically
12175converted to Integers.
12176
12177Changed the string-to-integer conversion behavior to match the new ACPI
12178errata: "If no integer object exists, a new integer is created. The ASCII
12179string is interpreted as a hexadecimal constant. Each string character is
12180interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
12181with the first character as the most significant digit, and ending with
12182the
12183first non-hexadecimal character or end-of-string." This means that the
12184first
12185non-hex character terminates the conversion and this is the code that was
12186changed.
12187
12188Fixed a problem where the ObjectType operator would fail (fault) when
12189used
12190on an Index of a Package which pointed to a null package element. The
12191operator now properly returns zero (Uninitialized) in this case.
12192
12193Fixed a problem where the While operator used excessive memory by not
12194properly popping the result stack during execution. There was no memory
12195leak
12196after execution, however. (Code provided by Valery Podrezov.)
12197
12198Fixed a problem where references to control methods within Package
12199objects
12200caused the method to be invoked, instead of producing a reference object
12201pointing to the method.
12202
12203Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
12204to
12205improve performance and reduce code size. (Code provided by Alexey
12206Starikovskiy.)
12207
12208Code and Data Size: Current and previous core subsystem library sizes are
12209shown below. These are the code and data sizes for the acpica.lib
12210produced
12211by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12212any ACPI driver or OSPM code. The debug version of the code includes the
12213debug output trace mechanism and has a much larger code and data size.
12214Note
12215that these values will vary depending on the efficiency of the compiler
12216and
12217the compiler options used during generation.
12218
12219  Previous Release:
12220    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
12221    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
12222  Current Release:
12223    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
12224    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
12225
12226
122272) iASL Compiler/Disassembler:
12228
12229Fixed a problem with the Return operator with no arguments. Since the AML
12230grammar for the byte encoding requires an operand for the Return opcode,
12231the
12232compiler now emits a Return(Zero) for this case.  An ACPI specification
12233update has been written for this case.
12234
12235For tables other than the DSDT, namepath optimization is automatically
12236disabled. This is because SSDTs can be loaded anywhere in the namespace,
12237the
12238compiler has no knowledge of where, and thus cannot optimize namepaths.
12239
12240Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
12241inadvertently omitted from the ACPI specification, and will require an
12242update to the spec.
12243
12244The source file scan for ASCII characters is now optional (-a). This
12245change
12246was made because some vendors place non-ascii characters within comments.
12247However, the scan is simply a brute-force byte compare to ensure all
12248characters in the file are in the range 0x00 to 0x7F.
12249
12250Fixed a problem with the CondRefOf operator where the compiler was
12251inappropriately checking for the existence of the target. Since the point
12252of
12253the operator is to check for the existence of the target at run-time, the
12254compiler no longer checks for the target existence.
12255
12256Fixed a problem where errors generated from the internal AML interpreter
12257during constant folding were not handled properly, causing a fault.
12258
12259Fixed a problem with overly aggressive range checking for the Stall
12260operator. The valid range (max 255) is now only checked if the operand is
12261of
12262type Integer. All other operand types cannot be statically checked.
12263
12264Fixed a problem where control method references within the RefOf,
12265DeRefOf,
12266and ObjectType operators were not treated properly. They are now treated
12267as
12268actual references, not method invocations.
12269
12270Fixed and enhanced the "list namespace" option (-ln). This option was
12271broken
12272a number of releases ago.
12273
12274Improved error handling for the Field, IndexField, and BankField
12275operators.
12276The compiler now cleanly reports and recovers from errors in the field
12277component (FieldUnit) list.
12278
12279Fixed a disassembler problem where the optional ResourceDescriptor fields
12280TRS and TTP were not always handled correctly.
12281
12282Disassembler - Comments in output now use "//" instead of "/*"
12283
12284----------------------------------------
1228528 February 2005.  Summary of changes for version 20050228:
12286
122871) ACPI CA Core Subsystem:
12288
12289Fixed a problem where the result of an Index() operator (an object
12290reference) must increment the reference count on the target object for
12291the
12292life of the object reference.
12293
12294Implemented AML Interpreter and Debugger support for the new ACPI 3.0
12295Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
12296WordSpace
12297resource descriptors.
12298
12299Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
12300Space Descriptor" string, indicating interpreter support for the
12301descriptors
12302above.
12303
12304Implemented header support for the new ACPI 3.0 FADT flag bits.
12305
12306Implemented header support for the new ACPI 3.0 PCI Express bits for the
12307PM1
12308status/enable registers.
12309
12310Updated header support for the MADT processor local Apic struct and MADT
12311platform interrupt source struct for new ACPI 3.0 fields.
12312
12313Implemented header support for the SRAT and SLIT ACPI tables.
12314
12315Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
12316flag
12317at runtime.
12318
12319Code and Data Size: Current and previous core subsystem library sizes are
12320shown below. These are the code and data sizes for the acpica.lib
12321produced
12322by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12323any ACPI driver or OSPM code. The debug version of the code includes the
12324debug output trace mechanism and has a much larger code and data size.
12325Note
12326that these values will vary depending on the efficiency of the compiler
12327and
12328the compiler options used during generation.
12329
12330  Previous Release:
12331    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
12332    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
12333  Current Release:
12334    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
12335    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
12336
12337
123382) iASL Compiler/Disassembler:
12339
12340Fixed a problem with the internal 64-bit String-to-integer conversion
12341with
12342strings less than two characters long.
12343
12344Fixed a problem with constant folding where the result of the Index()
12345operator can not be considered a constant. This means that Index() cannot
12346be
12347a type3 opcode and this will require an update to the ACPI specification.
12348
12349Disassembler: Implemented support for the TTP, MTP, and TRS resource
12350descriptor fields. These fields were inadvertently ignored and not output
12351in
12352the disassembly of the resource descriptor.
12353
12354
12355 ----------------------------------------
1235611 February 2005.  Summary of changes for version 20050211:
12357
123581) ACPI CA Core Subsystem:
12359
12360Implemented ACPI 3.0 support for implicit conversion within the Match()
12361operator. MatchObjects can now be of type integer, buffer, or string
12362instead
12363of just type integer.  Package elements are implicitly converted to the
12364type
12365of the MatchObject. This change aligns the behavior of Match() with the
12366behavior of the other logical operators (LLess(), etc.) It also requires
12367an
12368errata change to the ACPI specification as this support was intended for
12369ACPI 3.0, but was inadvertently omitted.
12370
12371Fixed a problem with the internal implicit "to buffer" conversion.
12372Strings
12373that are converted to buffers will cause buffer truncation if the string
12374is
12375smaller than the target buffer. Integers that are converted to buffers
12376will
12377not cause buffer truncation, only zero extension (both as per the ACPI
12378spec.) The problem was introduced when code was added to truncate the
12379buffer, but this should not be performed in all cases, only the string
12380case.
12381
12382Fixed a problem with the Buffer and Package operators where the
12383interpreter
12384would get confused if two such operators were used as operands to an ASL
12385operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
12386stack was not being popped after the execution of these operators,
12387resulting
12388in an AE_NO_RETURN_VALUE exception.
12389
12390Fixed a problem with constructs of the form Store(Index(...),...). The
12391reference object returned from Index was inadvertently resolved to an
12392actual
12393value. This problem was introduced in version 20050114 when the behavior
12394of
12395Store() was modified to restrict the object types that can be used as the
12396source operand (to match the ACPI specification.)
12397
12398Reduced excessive stack use within the AcpiGetObjectInfo procedure.
12399
12400Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
12401
12402Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
12403
12404Code and Data Size: Current and previous core subsystem library sizes are
12405shown below. These are the code and data sizes for the acpica.lib
12406produced
12407by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12408any ACPI driver or OSPM code. The debug version of the code includes the
12409debug output trace mechanism and has a much larger code and data size.
12410Note
12411that these values will vary depending on the efficiency of the compiler
12412and
12413the compiler options used during generation.
12414
12415  Previous Release:
12416    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
12417    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
12418  Current Release:
12419    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
12420    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
12421
12422
124232) iASL Compiler/Disassembler:
12424
12425Fixed a code generation problem in the constant folding optimization code
12426where incorrect code was generated if a constant was reduced to a buffer
12427object (i.e., a reduced type 5 opcode.)
12428
12429Fixed a typechecking problem for the ToBuffer operator. Caused by an
12430incorrect return type in the internal opcode information table.
12431
12432----------------------------------------
1243325 January 2005.  Summary of changes for version 20050125:
12434
124351) ACPI CA Core Subsystem:
12436
12437Fixed a recently introduced problem with the Global Lock where the
12438underlying semaphore was not created.  This problem was introduced in
12439version 20050114, and caused an AE_AML_NO_OPERAND exception during an
12440Acquire() operation on _GL.
12441
12442The local object cache is now optional, and is disabled by default. Both
12443AcpiExec and the iASL compiler enable the cache because they run in user
12444mode and this enhances their performance. #define
12445ACPI_ENABLE_OBJECT_CACHE
12446to enable the local cache.
12447
12448Fixed an issue in the internal function AcpiUtEvaluateObject concerning
12449the
12450optional "implicit return" support where an error was returned if no
12451return
12452object was expected, but one was implicitly returned. AE_OK is now
12453returned
12454in this case and the implicitly returned object is deleted.
12455AcpiUtEvaluateObject is only occasionally used, and only to execute
12456reserved
12457methods such as _STA and _INI where the return type is known up front.
12458
12459Fixed a few issues with the internal convert-to-integer code. It now
12460returns
12461an error if an attempt is made to convert a null string, a string of only
12462blanks/tabs, or a zero-length buffer. This affects both implicit
12463conversion
12464and explicit conversion via the ToInteger() operator.
12465
12466The internal debug code in AcpiUtAcquireMutex has been commented out. It
12467is
12468not needed for normal operation and should increase the performance of
12469the
12470entire subsystem. The code remains in case it is needed for debug
12471purposes
12472again.
12473
12474The AcpiExec source and makefile are included in the Unix/Linux package
12475for
12476the first time.
12477
12478Code and Data Size: Current and previous core subsystem library sizes are
12479shown below. These are the code and data sizes for the acpica.lib
12480produced
12481by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12482any ACPI driver or OSPM code. The debug version of the code includes the
12483debug output trace mechanism and has a much larger code and data size.
12484Note
12485that these values will vary depending on the efficiency of the compiler
12486and
12487the compiler options used during generation.
12488
12489  Previous Release:
12490    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
12491    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
12492  Current Release:
12493    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
12494    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
12495
124962) iASL Compiler/Disassembler:
12497
12498Switch/Case support: A warning is now issued if the type of the Switch
12499value
12500cannot be determined at compile time. For example, Switch(Arg0) will
12501generate the warning, and the type is assumed to be an integer. As per
12502the
12503ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
12504the
12505warning.
12506
12507Switch/Case support: Implemented support for buffer and string objects as
12508the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
12509buffers and strings.
12510
12511Switch/Case support: The emitted code for the LEqual() comparisons now
12512uses
12513the switch value as the first operand, not the second. The case value is
12514now
12515the second operand, and this allows the case value to be implicitly
12516converted to the type of the switch value, not the other way around.
12517
12518Switch/Case support: Temporary variables are now emitted immediately
12519within
12520the control method, not at the global level. This means that there are
12521now
1252236 temps available per-method, not 36 temps per-module as was the case
12523with
12524the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
12525
12526----------------------------------------
1252714 January 2005.  Summary of changes for version 20050114:
12528
12529Added 2005 copyright to all module headers.  This affects every module in
12530the core subsystem, iASL compiler, and the utilities.
12531
125321) ACPI CA Core Subsystem:
12533
12534Fixed an issue with the String-to-Buffer conversion code where the string
12535null terminator was not included in the buffer after conversion, but
12536there
12537is existing ASL that assumes the string null terminator is included. This
12538is
12539the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
12540introduced in the previous version when the code was updated to correctly
12541set the converted buffer size as per the ACPI specification. The ACPI
12542spec
12543is ambiguous and will be updated to specify that the null terminator must
12544be
12545included in the converted buffer. This also affects the ToBuffer() ASL
12546operator.
12547
12548Fixed a problem with the Mid() ASL/AML operator where it did not work
12549correctly on Buffer objects. Newly created sub-buffers were not being
12550marked
12551as initialized.
12552
12553
12554Fixed a problem in AcpiTbFindTable where incorrect string compares were
12555performed on the OemId and OemTableId table header fields.  These fields
12556are
12557not null terminated, so strncmp is now used instead of strcmp.
12558
12559Implemented a restriction on the Store() ASL/AML operator to align the
12560behavior with the ACPI specification.  Previously, any object could be
12561used
12562as the source operand.  Now, the only objects that may be used are
12563Integers,
12564Buffers, Strings, Packages, Object References, and DDB Handles.  If
12565necessary, the original behavior can be restored by enabling the
12566EnableInterpreterSlack flag.
12567
12568Enhanced the optional "implicit return" support to allow an implicit
12569return
12570value from methods that are invoked externally via the AcpiEvaluateObject
12571interface.  This enables implicit returns from the _STA and _INI methods,
12572for example.
12573
12574Changed the Revision() ASL/AML operator to return the current version of
12575the
12576AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
12577returned
12578the supported ACPI version (This is the function of the _REV method).
12579
12580Updated the _REV predefined method to return the currently supported
12581version
12582of ACPI, now 3.
12583
12584Implemented batch mode option for the AcpiExec utility (-b).
12585
12586Code and Data Size: Current and previous core subsystem library sizes are
12587shown below. These are the code and data sizes for the acpica.lib
12588produced
12589by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12590any ACPI driver or OSPM code. The debug version of the code includes the
12591debug output trace mechanism and has a much larger code and data size.
12592Note
12593that these values will vary depending on the efficiency of the compiler
12594and
12595the compiler options used during generation.
12596
12597  Previous Release:
12598    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
12599    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
12600  Current Release:
12601    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
12602    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
12603
12604----------------------------------------
1260510 December 2004.  Summary of changes for version 20041210:
12606
12607ACPI 3.0 support is nearing completion in both the iASL compiler and the
12608ACPI CA core subsystem.
12609
126101) ACPI CA Core Subsystem:
12611
12612Fixed a problem in the ToDecimalString operator where the resulting
12613string
12614length was incorrectly calculated. The length is now calculated exactly,
12615eliminating incorrect AE_STRING_LIMIT exceptions.
12616
12617Fixed a problem in the ToHexString operator to allow a maximum 200
12618character
12619string to be produced.
12620
12621Fixed a problem in the internal string-to-buffer and buffer-to-buffer
12622copy
12623routine where the length of the resulting buffer was not truncated to the
12624new size (if the target buffer already existed).
12625
12626Code and Data Size: Current and previous core subsystem library sizes are
12627shown below. These are the code and data sizes for the acpica.lib
12628produced
12629by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12630any ACPI driver or OSPM code. The debug version of the code includes the
12631debug output trace mechanism and has a much larger code and data size.
12632Note
12633that these values will vary depending on the efficiency of the compiler
12634and
12635the compiler options used during generation.
12636
12637  Previous Release:
12638    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
12639    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
12640  Current Release:
12641    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
12642    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
12643
12644
126452) iASL Compiler/Disassembler:
12646
12647Implemented the new ACPI 3.0 resource template macros - DWordSpace,
12648ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
12649Includes support in the disassembler.
12650
12651Implemented support for the new (ACPI 3.0) parameter to the Register
12652macro,
12653AccessSize.
12654
12655Fixed a problem where the _HE resource name for the Interrupt macro was
12656referencing bit 0 instead of bit 1.
12657
12658Implemented check for maximum 255 interrupts in the Interrupt macro.
12659
12660Fixed a problem with the predefined resource descriptor names where
12661incorrect AML code was generated if the offset within the resource buffer
12662was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
12663but did not update the surrounding package lengths.
12664
12665Changes to the Dma macro:  All channels within the channel list must be
12666in
12667the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
12668optional (default is BusMaster).
12669
12670Implemented check for maximum 7 data bytes for the VendorShort macro.
12671
12672The ReadWrite parameter is now optional for the Memory32 and similar
12673macros.
12674
12675----------------------------------------
1267603 December 2004.  Summary of changes for version 20041203:
12677
126781) ACPI CA Core Subsystem:
12679
12680The low-level field insertion/extraction code (exfldio) has been
12681completely
12682rewritten to eliminate unnecessary complexity, bugs, and boundary
12683conditions.
12684
12685Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
12686ToDecimalString
12687operators where the input operand could be inadvertently deleted if no
12688conversion was necessary (e.g., if the input to ToInteger was an Integer
12689object.)
12690
12691Fixed a problem with the ToDecimalString and ToHexString where an
12692incorrect
12693exception code was returned if the resulting string would be > 200 chars.
12694AE_STRING_LIMIT is now returned.
12695
12696Fixed a problem with the Concatenate operator where AE_OK was always
12697returned, even if the operation failed.
12698
12699Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
12700semaphores to be allocated.
12701
12702Code and Data Size: Current and previous core subsystem library sizes are
12703shown below. These are the code and data sizes for the acpica.lib
12704produced
12705by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12706any ACPI driver or OSPM code. The debug version of the code includes the
12707debug output trace mechanism and has a much larger code and data size.
12708Note
12709that these values will vary depending on the efficiency of the compiler
12710and
12711the compiler options used during generation.
12712
12713  Previous Release:
12714    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
12715    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
12716  Current Release:
12717    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
12718    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
12719
12720
127212) iASL Compiler/Disassembler:
12722
12723Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
12724recently introduced in 20041119.
12725
12726Fixed a problem with the ToUUID macro where the upper nybble of each
12727buffer
12728byte was inadvertently set to zero.
12729
12730----------------------------------------
1273119 November 2004.  Summary of changes for version 20041119:
12732
127331) ACPI CA Core Subsystem:
12734
12735Fixed a problem in the internal ConvertToInteger routine where new
12736integers
12737were not truncated to 32 bits for 32-bit ACPI tables. This routine
12738converts
12739buffers and strings to integers.
12740
12741Implemented support to store a value to an Index() on a String object.
12742This
12743is an ACPI 2.0 feature that had not yet been implemented.
12744
12745Implemented new behavior for storing objects to individual package
12746elements
12747(via the Index() operator). The previous behavior was to invoke the
12748implicit
12749conversion rules if an object was already present at the index.  The new
12750behavior is to simply delete any existing object and directly store the
12751new
12752object. Although the ACPI specification seems unclear on this subject,
12753other
12754ACPI implementations behave in this manner.  (This is the root of the
12755AE_BAD_HEX_CONSTANT issue.)
12756
12757Modified the RSDP memory scan mechanism to support the extended checksum
12758for
12759ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
12760RSDP signature is found with a valid checksum.
12761
12762Code and Data Size: Current and previous core subsystem library sizes are
12763shown below. These are the code and data sizes for the acpica.lib
12764produced
12765by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12766any ACPI driver or OSPM code. The debug version of the code includes the
12767debug output trace mechanism and has a much larger code and data size.
12768Note
12769that these values will vary depending on the efficiency of the compiler
12770and
12771the compiler options used during generation.
12772
12773  Previous Release:
12774    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
12775    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
12776  Current Release:
12777    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
12778    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
12779
12780
127812) iASL Compiler/Disassembler:
12782
12783Fixed a missing semicolon in the aslcompiler.y file.
12784
12785----------------------------------------
1278605 November 2004.  Summary of changes for version 20041105:
12787
127881) ACPI CA Core Subsystem:
12789
12790Implemented support for FADT revision 2.  This was an interim table
12791(between
12792ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
12793
12794Implemented optional support to allow uninitialized LocalX and ArgX
12795variables in a control method.  The variables are initialized to an
12796Integer
12797object with a value of zero.  This support is enabled by setting the
12798AcpiGbl_EnableInterpreterSlack flag to TRUE.
12799
12800Implemented support for Integer objects for the SizeOf operator.  Either
128014
12802or 8 is returned, depending on the current integer size (32-bit or 64-
12803bit,
12804depending on the parent table revision).
12805
12806Fixed a problem in the implementation of the SizeOf and ObjectType
12807operators
12808where the operand was resolved to a value too early, causing incorrect
12809return values for some objects.
12810
12811Fixed some possible memory leaks during exceptional conditions.
12812
12813Code and Data Size: Current and previous core subsystem library sizes are
12814shown below. These are the code and data sizes for the acpica.lib
12815produced
12816by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12817any ACPI driver or OSPM code. The debug version of the code includes the
12818debug output trace mechanism and has a much larger code and data size.
12819Note
12820that these values will vary depending on the efficiency of the compiler
12821and
12822the compiler options used during generation.
12823
12824  Previous Release:
12825    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
12826    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
12827  Current Release:
12828    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
12829    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
12830
12831
128322) iASL Compiler/Disassembler:
12833
12834Implemented support for all ACPI 3.0 reserved names and methods.
12835
12836Implemented all ACPI 3.0 grammar elements in the front-end, including
12837support for semicolons.
12838
12839Implemented the ACPI 3.0 Function() and ToUUID() macros
12840
12841Fixed a problem in the disassembler where a Scope() operator would not be
12842emitted properly if the target of the scope was in another table.
12843
12844----------------------------------------
1284515 October 2004.  Summary of changes for version 20041015:
12846
12847Note:  ACPI CA is currently undergoing an in-depth and complete formal
12848evaluation to test/verify the following areas. Other suggestions are
12849welcome. This will result in an increase in the frequency of releases and
12850the number of bug fixes in the next few months.
12851  - Functional tests for all ASL/AML operators
12852  - All implicit/explicit type conversions
12853  - Bit fields and operation regions
12854  - 64-bit math support and 32-bit-only "truncated" math support
12855  - Exceptional conditions, both compiler and interpreter
12856  - Dynamic object deletion and memory leaks
12857  - ACPI 3.0 support when implemented
12858  - External interfaces to the ACPI subsystem
12859
12860
128611) ACPI CA Core Subsystem:
12862
12863Fixed two alignment issues on 64-bit platforms - within debug statements
12864in
12865AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
12866Address
12867field within the non-aligned ACPI generic address structure.
12868
12869Fixed a problem in the Increment and Decrement operators where incorrect
12870operand resolution could result in the inadvertent modification of the
12871original integer when the integer is passed into another method as an
12872argument and the arg is then incremented/decremented.
12873
12874Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
12875bit
12876BCD number were truncated during conversion.
12877
12878Fixed a problem in the ToDecimal operator where the length of the
12879resulting
12880string could be set incorrectly too long if the input operand was a
12881Buffer
12882object.
12883
12884Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
12885(0)
12886within a buffer would prematurely terminate a compare between buffer
12887objects.
12888
12889Added a check for string overflow (>200 characters as per the ACPI
12890specification) during the Concatenate operator with two string operands.
12891
12892Code and Data Size: Current and previous core subsystem library sizes are
12893shown below. These are the code and data sizes for the acpica.lib
12894produced
12895by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12896any ACPI driver or OSPM code. The debug version of the code includes the
12897debug output trace mechanism and has a much larger code and data size.
12898Note
12899that these values will vary depending on the efficiency of the compiler
12900and
12901the compiler options used during generation.
12902
12903  Previous Release:
12904    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
12905    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
12906  Current Release:
12907    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
12908    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
12909
12910
12911
129122) iASL Compiler/Disassembler:
12913
12914Allow the use of the ObjectType operator on uninitialized Locals and Args
12915(returns 0 as per the ACPI specification).
12916
12917Fixed a problem where the compiler would fault if there was a syntax
12918error
12919in the FieldName of all of the various CreateXXXField operators.
12920
12921Disallow the use of lower case letters within the EISAID macro, as per
12922the
12923ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
12924Where
12925U is an uppercase letter and N is a hex digit.
12926
12927
12928----------------------------------------
1292906 October 2004.  Summary of changes for version 20041006:
12930
129311) ACPI CA Core Subsystem:
12932
12933Implemented support for the ACPI 3.0 Timer operator. This ASL function
12934implements a 64-bit timer with 100 nanosecond granularity.
12935
12936Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
12937implement the ACPI 3.0 Timer operator.  This allows the host OS to
12938implement
12939the timer with the best clock available. Also, it keeps the core
12940subsystem
12941out of the clock handling business, since the host OS (usually) performs
12942this function.
12943
12944Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
12945functions use a 64-bit address which is part of the packed ACPI Generic
12946Address Structure. Since the structure is non-aligned, the alignment
12947macros
12948are now used to extract the address to a local variable before use.
12949
12950Fixed a problem where the ToInteger operator assumed all input strings
12951were
12952hexadecimal. The operator now handles both decimal strings and hex
12953strings
12954(prefixed with "0x").
12955
12956Fixed a problem where the string length in the string object created as a
12957result of the internal ConvertToString procedure could be incorrect. This
12958potentially affected all implicit conversions and also the
12959ToDecimalString
12960and ToHexString operators.
12961
12962Fixed two problems in the ToString operator. If the length parameter was
12963zero, an incorrect string object was created and the value of the input
12964length parameter was inadvertently changed from zero to Ones.
12965
12966Fixed a problem where the optional ResourceSource string in the
12967ExtendedIRQ
12968resource macro was ignored.
12969
12970Simplified the interfaces to the internal division functions, reducing
12971code
12972size and complexity.
12973
12974Code and Data Size: Current and previous core subsystem library sizes are
12975shown below. These are the code and data sizes for the acpica.lib
12976produced
12977by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12978any ACPI driver or OSPM code. The debug version of the code includes the
12979debug output trace mechanism and has a much larger code and data size.
12980Note
12981that these values will vary depending on the efficiency of the compiler
12982and
12983the compiler options used during generation.
12984
12985  Previous Release:
12986    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
12987    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
12988  Current Release:
12989    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
12990    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
12991
12992
129932) iASL Compiler/Disassembler:
12994
12995Implemented support for the ACPI 3.0 Timer operator.
12996
12997Fixed a problem where the Default() operator was inadvertently ignored in
12998a
12999Switch/Case block.  This was a problem in the translation of the Switch
13000statement to If...Else pairs.
13001
13002Added support to allow a standalone Return operator, with no parentheses
13003(or
13004operands).
13005
13006Fixed a problem with code generation for the ElseIf operator where the
13007translated Else...If parse tree was improperly constructed leading to the
13008loss of some code.
13009
13010----------------------------------------
1301122 September 2004.  Summary of changes for version 20040922:
13012
130131) ACPI CA Core Subsystem:
13014
13015Fixed a problem with the implementation of the LNot() operator where
13016"Ones"
13017was not returned for the TRUE case. Changed the code to return Ones
13018instead
13019of (!Arg) which was usually 1. This change affects iASL constant folding
13020for
13021this operator also.
13022
13023Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
13024not
13025initialized properly -- Now zero the entire buffer in this case where the
13026buffer already exists.
13027
13028Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
13029Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
13030related code considerably. This will require changes/updates to all OS
13031interface layers (OSLs.)
13032
13033Implemented a new external interface, AcpiInstallExceptionHandler, to
13034allow
13035a system exception handler to be installed. This handler is invoked upon
13036any
13037run-time exception that occurs during control method execution.
13038
13039Added support for the DSDT in AcpiTbFindTable. This allows the
13040DataTableRegion() operator to access the local copy of the DSDT.
13041
13042Code and Data Size: Current and previous core subsystem library sizes are
13043shown below. These are the code and data sizes for the acpica.lib
13044produced
13045by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13046any ACPI driver or OSPM code. The debug version of the code includes the
13047debug output trace mechanism and has a much larger code and data size.
13048Note
13049that these values will vary depending on the efficiency of the compiler
13050and
13051the compiler options used during generation.
13052
13053  Previous Release:
13054    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
13055    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
13056  Current Release:
13057    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
13058    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
13059
13060
130612) iASL Compiler/Disassembler:
13062
13063Fixed a problem with constant folding and the LNot operator. LNot was
13064returning 1 in the TRUE case, not Ones as per the ACPI specification.
13065This
13066could result in the generation of an incorrect folded/reduced constant.
13067
13068End-Of-File is now allowed within a "//"-style comment.  A parse error no
13069longer occurs if such a comment is at the very end of the input ASL
13070source
13071file.
13072
13073Implemented the "-r" option to override the Revision in the table header.
13074The initial use of this option will be to simplify the evaluation of the
13075AML
13076interpreter by allowing a single ASL source module to be compiled for
13077either
1307832-bit or 64-bit integers.
13079
13080
13081----------------------------------------
1308227 August 2004.  Summary of changes for version 20040827:
13083
130841) ACPI CA Core Subsystem:
13085
13086- Implemented support for implicit object conversion in the non-numeric
13087logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
13088and
13089LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
13090the second operand is implicitly converted on the fly to match the type
13091of
13092the first operand.  For example:
13093
13094    LEqual (Source1, Source2)
13095
13096Source1 and Source2 must each evaluate to an integer, a string, or a
13097buffer.
13098The data type of Source1 dictates the required type of Source2. Source2
13099is
13100implicitly converted if necessary to match the type of Source1.
13101
13102- Updated and corrected the behavior of the string conversion support.
13103The
13104rules concerning conversion of buffers to strings (according to the ACPI
13105specification) are as follows:
13106
13107ToDecimalString - explicit byte-wise conversion of buffer to string of
13108decimal values (0-255) separated by commas. ToHexString - explicit byte-
13109wise
13110conversion of buffer to string of hex values (0-FF) separated by commas.
13111ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
13112byte
13113copy with no transform except NULL terminated. Any other implicit buffer-
13114to-
13115string conversion - byte-wise conversion of buffer to string of hex
13116values
13117(0-FF) separated by spaces.
13118
13119- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
13120
13121- Fixed a problem in AcpiNsGetPathnameLength where the returned length
13122was
13123one byte too short in the case of a node in the root scope.  This could
13124cause a fault during debug output.
13125
13126- Code and Data Size: Current and previous core subsystem library sizes
13127are
13128shown below.  These are the code and data sizes for the acpica.lib
13129produced
13130by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13131any ACPI driver or OSPM code.  The debug version of the code includes the
13132debug output trace mechanism and has a much larger code and data size.
13133Note
13134that these values will vary depending on the efficiency of the compiler
13135and
13136the compiler options used during generation.
13137
13138  Previous Release:
13139    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
13140    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
13141  Current Release:
13142    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
13143    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
13144
13145
131462) iASL Compiler/Disassembler:
13147
13148- Fixed a Linux generation error.
13149
13150
13151----------------------------------------
1315216 August 2004.  Summary of changes for version 20040816:
13153
131541) ACPI CA Core Subsystem:
13155
13156Designed and implemented support within the AML interpreter for the so-
13157called "implicit return".  This support returns the result of the last
13158ASL
13159operation within a control method, in the absence of an explicit Return()
13160operator.  A few machines depend on this behavior, even though it is not
13161explicitly supported by the ASL language.  It is optional support that
13162can
13163be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
13164
13165Removed support for the PCI_Config address space from the internal low
13166level
13167hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
13168support was not used internally, and would not work correctly anyway
13169because
13170the PCI bus number and segment number were not supported.  There are
13171separate interfaces for PCI configuration space access because of the
13172unique
13173interface.
13174
13175Code and Data Size: Current and previous core subsystem library sizes are
13176shown below.  These are the code and data sizes for the acpica.lib
13177produced
13178by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13179any ACPI driver or OSPM code.  The debug version of the code includes the
13180debug output trace mechanism and has a much larger code and data size.
13181Note
13182that these values will vary depending on the efficiency of the compiler
13183and
13184the compiler options used during generation.
13185
13186  Previous Release:
13187    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
13188    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
13189  Current Release:
13190    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
13191    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
13192
13193
131942) iASL Compiler/Disassembler:
13195
13196Fixed a problem where constants in ASL expressions at the root level (not
13197within a control method) could be inadvertently truncated during code
13198generation.  This problem was introduced in the 20040715 release.
13199
13200
13201----------------------------------------
1320215 July 2004.  Summary of changes for version 20040715:
13203
132041) ACPI CA Core Subsystem:
13205
13206Restructured the internal HW GPE interfaces to pass/track the current
13207state
13208of interrupts (enabled/disabled) in order to avoid possible deadlock and
13209increase flexibility of the interfaces.
13210
13211Implemented a "lexicographical compare" for String and Buffer objects
13212within
13213the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
13214-
13215as per further clarification to the ACPI specification.  Behavior is
13216similar
13217to C library "strcmp".
13218
13219Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
13220external function.  In the 32-bit non-debug case, the stack use has been
13221reduced from 168 bytes to 32 bytes.
13222
13223Deployed a new run-time configuration flag,
13224AcpiGbl_EnableInterpreterSlack,
13225whose purpose is to allow the AML interpreter to forgive certain bad AML
13226constructs.  Default setting is FALSE.
13227
13228Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
13229IO
13230support code.  If enabled, it allows field access to go beyond the end of
13231a
13232region definition if the field is within the region length rounded up to
13233the
13234next access width boundary (a common coding error.)
13235
13236Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
13237ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
13238these
13239symbols are lowercased by the latest version of the AcpiSrc tool.
13240
13241The prototypes for the PCI interfaces in acpiosxf.h have been updated to
13242rename "Register" to simply "Reg" to prevent certain compilers from
13243complaining.
13244
13245Code and Data Size: Current and previous core subsystem library sizes are
13246shown below.  These are the code and data sizes for the acpica.lib
13247produced
13248by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13249any ACPI driver or OSPM code.  The debug version of the code includes the
13250debug output trace mechanism and has a much larger code and data size.
13251Note
13252that these values will vary depending on the efficiency of the compiler
13253and
13254the compiler options used during generation.
13255
13256  Previous Release:
13257    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
13258    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
13259  Current Release:
13260    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
13261    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
13262
13263
132642) iASL Compiler/Disassembler:
13265
13266Implemented full support for Package objects within the Case() operator.
13267Note: The Break() operator is currently not supported within Case blocks
13268(TermLists) as there is some question about backward compatibility with
13269ACPI
132701.0 interpreters.
13271
13272
13273Fixed a problem where complex terms were not supported properly within
13274the
13275Switch() operator.
13276
13277Eliminated extraneous warning for compiler-emitted reserved names of the
13278form "_T_x".  (Used in Switch/Case operators.)
13279
13280Eliminated optimization messages for "_T_x" objects and small constants
13281within the DefinitionBlock operator.
13282
13283
13284----------------------------------------
1328515 June 2004.  Summary of changes for version 20040615:
13286
132871) ACPI CA Core Subsystem:
13288
13289Implemented support for Buffer and String objects (as per ACPI 2.0) for
13290the
13291following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
13292LLessEqual.
13293
13294All directory names in the entire source package are lower case, as they
13295were in earlier releases.
13296
13297Implemented "Disassemble" command in the AML debugger that will
13298disassemble
13299a single control method.
13300
13301Code and Data Size: Current and previous core subsystem library sizes are
13302shown below.  These are the code and data sizes for the acpica.lib
13303produced
13304by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13305any ACPI driver or OSPM code.  The debug version of the code includes the
13306debug output trace mechanism and has a much larger code and data size.
13307Note
13308that these values will vary depending on the efficiency of the compiler
13309and
13310the compiler options used during generation.
13311
13312  Previous Release:
13313    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
13314    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
13315
13316  Current Release:
13317    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
13318    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
13319
13320
133212) iASL Compiler/Disassembler:
13322
13323Implemented support for Buffer and String objects (as per ACPI 2.0) for
13324the
13325following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
13326LLessEqual.
13327
13328All directory names in the entire source package are lower case, as they
13329were in earlier releases.
13330
13331Fixed a fault when using the -g or -d<nofilename> options if the FADT was
13332not found.
13333
13334Fixed an issue with the Windows version of the compiler where later
13335versions
13336of Windows place the FADT in the registry under the name "FADT" and not
13337"FACP" as earlier versions did.  This applies when using the -g or -
13338d<nofilename> options.  The compiler now looks for both strings as
13339necessary.
13340
13341Fixed a problem with compiler namepath optimization where a namepath
13342within
13343the Scope() operator could not be optimized if the namepath was a subpath
13344of
13345the current scope path.
13346
13347----------------------------------------
1334827 May 2004.  Summary of changes for version 20040527:
13349
133501) ACPI CA Core Subsystem:
13351
13352Completed a new design and implementation for EBDA (Extended BIOS Data
13353Area)
13354support in the RSDP scan code.  The original code improperly scanned for
13355the
13356EBDA by simply scanning from memory location 0 to 0x400.  The correct
13357method
13358is to first obtain the EBDA pointer from within the BIOS data area, then
13359scan 1K of memory starting at the EBDA pointer.  There appear to be few
13360if
13361any machines that place the RSDP in the EBDA, however.
13362
13363Integrated a fix for a possible fault during evaluation of BufferField
13364arguments.  Obsolete code that was causing the problem was removed.
13365
13366Found and fixed a problem in the Field Support Code where data could be
13367corrupted on a bit field read that starts on an aligned boundary but does
13368not end on an aligned boundary.  Merged the read/write "datum length"
13369calculation code into a common procedure.
13370
13371Rolled in a couple of changes to the FreeBSD-specific header.
13372
13373
13374Code and Data Size: Current and previous core subsystem library sizes are
13375shown below.  These are the code and data sizes for the acpica.lib
13376produced
13377by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13378any ACPI driver or OSPM code.  The debug version of the code includes the
13379debug output trace mechanism and has a much larger code and data size.
13380Note
13381that these values will vary depending on the efficiency of the compiler
13382and
13383the compiler options used during generation.
13384
13385  Previous Release:
13386    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
13387    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
13388  Current Release:
13389    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
13390    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
13391
13392
133932) iASL Compiler/Disassembler:
13394
13395Fixed a generation warning produced by some overly-verbose compilers for
13396a
1339764-bit constant.
13398
13399----------------------------------------
1340014 May 2004.  Summary of changes for version 20040514:
13401
134021) ACPI CA Core Subsystem:
13403
13404Fixed a problem where hardware GPE enable bits sometimes not set properly
13405during and after GPE method execution.  Result of 04/27 changes.
13406
13407Removed extra "clear all GPEs" when sleeping/waking.
13408
13409Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
13410AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
13411to
13412the new AcpiEv* calls as appropriate.
13413
13414ACPI_OS_NAME was removed from the OS-specific headers.  The default name
13415is
13416now "Microsoft Windows NT" for maximum compatibility.  However this can
13417be
13418changed by modifying the acconfig.h file.
13419
13420Allow a single invocation of AcpiInstallNotifyHandler for a handler that
13421traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
13422
13423Run _INI methods on ThermalZone objects.  This is against the ACPI
13424specification, but there is apparently ASL code in the field that has
13425these
13426_INI methods, and apparently "other" AML interpreters execute them.
13427
13428Performed a full 16/32/64 bit lint that resulted in some small changes.
13429
13430Added a sleep simulation command to the AML debugger to test sleep code.
13431
13432Code and Data Size: Current and previous core subsystem library sizes are
13433shown below.  These are the code and data sizes for the acpica.lib
13434produced
13435by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13436any ACPI driver or OSPM code.  The debug version of the code includes the
13437debug output trace mechanism and has a much larger code and data size.
13438Note
13439that these values will vary depending on the efficiency of the compiler
13440and
13441the compiler options used during generation.
13442
13443  Previous Release:
13444    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
13445    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
13446  Current Release:
13447    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
13448    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
13449
13450----------------------------------------
1345127 April 2004.  Summary of changes for version 20040427:
13452
134531) ACPI CA Core Subsystem:
13454
13455Completed a major overhaul of the GPE handling within ACPI CA.  There are
13456now three types of GPEs:  wake-only, runtime-only, and combination
13457wake/run.
13458The only GPEs allowed to be combination wake/run are for button-style
13459devices such as a control-method power button, control-method sleep
13460button,
13461or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
13462not
13463referenced by any _PRW methods are marked for "runtime" and hardware
13464enabled.  Any GPE that is referenced by a _PRW method is marked for
13465"wake"
13466(and disabled at runtime).  However, at sleep time, only those GPEs that
13467have been specifically enabled for wake via the AcpiEnableGpe interface
13468will
13469actually be hardware enabled.
13470
13471A new external interface has been added, AcpiSetGpeType(), that is meant
13472to
13473be used by device drivers to force a GPE to a particular type.  It will
13474be
13475especially useful for the drivers for the button devices mentioned above.
13476
13477Completed restructuring of the ACPI CA initialization sequence so that
13478default operation region handlers are installed before GPEs are
13479initialized
13480and the _PRW methods are executed.  This will prevent errors when the
13481_PRW
13482methods attempt to access system memory or I/O space.
13483
13484GPE enable/disable no longer reads the GPE enable register.  We now keep
13485the
13486enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
13487thus no longer depend on the hardware to maintain these bits.
13488
13489Always clear the wake status and fixed/GPE status bits before sleep, even
13490for state S5.
13491
13492Improved the AML debugger output for displaying the GPE blocks and their
13493current status.
13494
13495Added new strings for the _OSI method, of the form "Windows 2001 SPx"
13496where
13497x = 0,1,2,3,4.
13498
13499Fixed a problem where the physical address was incorrectly calculated
13500when
13501the Load() operator was used to directly load from an Operation Region
13502(vs.
13503loading from a Field object.)  Also added check for minimum table length
13504for
13505this case.
13506
13507Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
13508mutex release.
13509
13510Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
13511consistency with the other fields returned.
13512
13513Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
13514structure for each GPE in the system, so the size of this structure is
13515important.
13516
13517CPU stack requirement reduction:  Cleaned up the method execution and
13518object
13519evaluation paths so that now a parameter structure is passed, instead of
13520copying the various method parameters over and over again.
13521
13522In evregion.c:  Correctly exit and reenter the interpreter region if and
13523only if dispatching an operation region request to a user-installed
13524handler.
13525Do not exit/reenter when dispatching to a default handler (e.g., default
13526system memory or I/O handlers)
13527
13528
13529Notes for updating drivers for the new GPE support.  The following
13530changes
13531must be made to ACPI-related device drivers that are attached to one or
13532more
13533GPEs: (This information will be added to the ACPI CA Programmer
13534Reference.)
13535
135361) AcpiInstallGpeHandler no longer automatically enables the GPE, you
13537must
13538explicitly call AcpiEnableGpe.
135392) There is a new interface called AcpiSetGpeType. This should be called
13540before enabling the GPE.  Also, this interface will automatically disable
13541the GPE if it is currently enabled.
135423) AcpiEnableGpe no longer supports a GPE type flag.
13543
13544Specific drivers that must be changed:
135451) EC driver:
13546    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
13547AeGpeHandler, NULL);
13548    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
13549    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
13550
135512) Button Drivers (Power, Lid, Sleep):
13552Run _PRW method under parent device
13553If _PRW exists: /* This is a control-method button */
13554    Extract GPE number and possibly GpeDevice
13555    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
13556    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
13557
13558For all other devices that have _PRWs, we automatically set the GPE type
13559to
13560ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
13561This
13562must be done on a selective basis, usually requiring some kind of user
13563app
13564to allow the user to pick the wake devices.
13565
13566
13567Code and Data Size: Current and previous core subsystem library sizes are
13568shown below.  These are the code and data sizes for the acpica.lib
13569produced
13570by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13571any ACPI driver or OSPM code.  The debug version of the code includes the
13572debug output trace mechanism and has a much larger code and data size.
13573Note
13574that these values will vary depending on the efficiency of the compiler
13575and
13576the compiler options used during generation.
13577
13578  Previous Release:
13579    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
13580    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
13581  Current Release:
13582
13583    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
13584    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
13585
13586
13587
13588----------------------------------------
1358902 April 2004.  Summary of changes for version 20040402:
13590
135911) ACPI CA Core Subsystem:
13592
13593Fixed an interpreter problem where an indirect store through an ArgX
13594parameter was incorrectly applying the "implicit conversion rules" during
13595the store.  From the ACPI specification: "If the target is a method local
13596or
13597argument (LocalX or ArgX), no conversion is performed and the result is
13598stored directly to the target".  The new behavior is to disable implicit
13599conversion during ALL stores to an ArgX.
13600
13601Changed the behavior of the _PRW method scan to ignore any and all errors
13602returned by a given _PRW.  This prevents the scan from aborting from the
13603failure of any single _PRW.
13604
13605Moved the runtime configuration parameters from the global init procedure
13606to
13607static variables in acglobal.h.  This will allow the host to override the
13608default values easily.
13609
13610Code and Data Size: Current and previous core subsystem library sizes are
13611shown below.  These are the code and data sizes for the acpica.lib
13612produced
13613by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13614any ACPI driver or OSPM code.  The debug version of the code includes the
13615debug output trace mechanism and has a much larger code and data size.
13616Note
13617that these values will vary depending on the efficiency of the compiler
13618and
13619the compiler options used during generation.
13620
13621  Previous Release:
13622    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
13623    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
13624  Current Release:
13625    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
13626    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
13627
13628
136292) iASL Compiler/Disassembler:
13630
13631iASL now fully disassembles SSDTs.  However, External() statements are
13632not
13633generated automatically for unresolved symbols at this time.  This is a
13634planned feature for future implementation.
13635
13636Fixed a scoping problem in the disassembler that occurs when the type of
13637the
13638target of a Scope() operator is overridden.  This problem caused an
13639incorrectly nested internal namespace to be constructed.
13640
13641Any warnings or errors that are emitted during disassembly are now
13642commented
13643out automatically so that the resulting file can be recompiled without
13644any
13645hand editing.
13646
13647----------------------------------------
1364826 March 2004.  Summary of changes for version 20040326:
13649
136501) ACPI CA Core Subsystem:
13651
13652Implemented support for "wake" GPEs via interaction between GPEs and the
13653_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
13654identified as a WAKE GPE and by default will no longer be enabled at
13655runtime.  Previously, we were blindly enabling all GPEs with a
13656corresponding
13657_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
13658We
13659believe this has been the cause of thousands of "spurious" GPEs on some
13660systems.
13661
13662This new GPE behavior is can be reverted to the original behavior (enable
13663ALL GPEs at runtime) via a runtime flag.
13664
13665Fixed a problem where aliased control methods could not access objects
13666properly.  The proper scope within the namespace was not initialized
13667(transferred to the target of the aliased method) before executing the
13668target method.
13669
13670Fixed a potential race condition on internal object deletion on the
13671return
13672object in AcpiEvaluateObject.
13673
13674Integrated a fix for resource descriptors where both _MEM and _MTP were
13675being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
13676wide, 0x0F instead of 0x03.)
13677
13678Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
13679preventing
13680a
13681fault in some cases.
13682
13683Updated Notify() values for debug statements in evmisc.c
13684
13685Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
13686
13687Code and Data Size: Current and previous core subsystem library sizes are
13688shown below.  These are the code and data sizes for the acpica.lib
13689produced
13690by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13691any ACPI driver or OSPM code.  The debug version of the code includes the
13692debug output trace mechanism and has a much larger code and data size.
13693Note
13694that these values will vary depending on the efficiency of the compiler
13695and
13696the compiler options used during generation.
13697
13698  Previous Release:
13699
13700    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
13701    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
13702  Current Release:
13703    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
13704    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
13705
13706----------------------------------------
1370711 March 2004.  Summary of changes for version 20040311:
13708
137091) ACPI CA Core Subsystem:
13710
13711Fixed a problem where errors occurring during the parse phase of control
13712method execution did not abort cleanly.  For example, objects created and
13713installed in the namespace were not deleted.  This caused all subsequent
13714invocations of the method to return the AE_ALREADY_EXISTS exception.
13715
13716Implemented a mechanism to force a control method to "Serialized"
13717execution
13718if the method attempts to create namespace objects. (The root of the
13719AE_ALREADY_EXISTS problem.)
13720
13721Implemented support for the predefined _OSI "internal" control method.
13722Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
13723and
13724"Windows 2001.1", and can be easily upgraded for new strings as
13725necessary.
13726This feature will allow "other" operating systems to execute the fully
13727tested, "Windows" code path through the ASL code
13728
13729Global Lock Support:  Now allows multiple acquires and releases with any
13730internal thread.  Removed concept of "owning thread" for this special
13731mutex.
13732
13733Fixed two functions that were inappropriately declaring large objects on
13734the
13735CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
13736during
13737method execution considerably.
13738
13739Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
13740S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
13741
13742Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
13743defined on the machine.
13744
13745Implemented two runtime options:  One to force all control method
13746execution
13747to "Serialized" to mimic Windows behavior, another to disable _OSI
13748support
13749if it causes problems on a given machine.
13750
13751Code and Data Size: Current and previous core subsystem library sizes are
13752shown below.  These are the code and data sizes for the acpica.lib
13753produced
13754by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13755any ACPI driver or OSPM code.  The debug version of the code includes the
13756debug output trace mechanism and has a much larger code and data size.
13757Note
13758that these values will vary depending on the efficiency of the compiler
13759and
13760the compiler options used during generation.
13761
13762  Previous Release:
13763    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
13764    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
13765  Current Release:
13766    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
13767    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
13768
137692) iASL Compiler/Disassembler:
13770
13771Fixed an array size problem for FreeBSD that would cause the compiler to
13772fault.
13773
13774----------------------------------------
1377520 February 2004.  Summary of changes for version 20040220:
13776
13777
137781) ACPI CA Core Subsystem:
13779
13780Implemented execution of _SxD methods for Device objects in the
13781GetObjectInfo interface.
13782
13783Fixed calls to _SST method to pass the correct arguments.
13784
13785Added a call to _SST on wake to restore to "working" state.
13786
13787Check for End-Of-Buffer failure case in the WalkResources interface.
13788
13789Integrated fix for 64-bit alignment issue in acglobal.h by moving two
13790structures to the beginning of the file.
13791
13792After wake, clear GPE status register(s) before enabling GPEs.
13793
13794After wake, clear/enable power button.  (Perhaps we should clear/enable
13795all
13796fixed events upon wake.)
13797
13798Fixed a couple of possible memory leaks in the Namespace manager.
13799
13800Integrated latest acnetbsd.h file.
13801
13802----------------------------------------
1380311 February 2004.  Summary of changes for version 20040211:
13804
13805
138061) ACPI CA Core Subsystem:
13807
13808Completed investigation and implementation of the call-by-reference
13809mechanism for control method arguments.
13810
13811Fixed a problem where a store of an object into an indexed package could
13812fail if the store occurs within a different method than the method that
13813created the package.
13814
13815Fixed a problem where the ToDecimal operator could return incorrect
13816results.
13817
13818Fixed a problem where the CopyObject operator could fail on some of the
13819more
13820obscure objects (e.g., Reference objects.)
13821
13822Improved the output of the Debug object to display buffer, package, and
13823index objects.
13824
13825Fixed a problem where constructs of the form "RefOf (ArgX)" did not
13826return
13827the expected result.
13828
13829Added permanent ACPI_REPORT_ERROR macros for all instances of the
13830ACPI_AML_INTERNAL exception.
13831
13832Integrated latest version of acfreebsd.h
13833
13834----------------------------------------
1383516 January 2004.  Summary of changes for version 20040116:
13836
13837The purpose of this release is primarily to update the copyright years in
13838each module, thus causing a huge number of diffs.  There are a few small
13839functional changes, however.
13840
138411) ACPI CA Core Subsystem:
13842
13843Improved error messages when there is a problem finding one or more of
13844the
13845required base ACPI tables
13846
13847Reintroduced the definition of APIC_HEADER in actbl.h
13848
13849Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
13850
13851Removed extraneous reference to NewObj in dsmthdat.c
13852
138532) iASL compiler
13854
13855Fixed a problem introduced in December that disabled the correct
13856disassembly
13857of Resource Templates
13858
13859
13860----------------------------------------
1386103 December 2003.  Summary of changes for version 20031203:
13862
138631) ACPI CA Core Subsystem:
13864
13865Changed the initialization of Operation Regions during subsystem
13866init to perform two entire walks of the ACPI namespace; The first
13867to initialize the regions themselves, the second to execute the
13868_REG methods.  This fixed some interdependencies across _REG
13869methods found on some machines.
13870
13871Fixed a problem where a Store(Local0, Local1) could simply update
13872the object reference count, and not create a new copy of the
13873object if the Local1 is uninitialized.
13874
13875Implemented support for the _SST reserved method during sleep
13876transitions.
13877
13878Implemented support to clear the SLP_TYP and SLP_EN bits when
13879waking up, this is apparently required by some machines.
13880
13881When sleeping, clear the wake status only if SleepState is not S5.
13882
13883Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
13884pointer arithmetic advanced a string pointer too far.
13885
13886Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
13887could be returned if the requested table has not been loaded.
13888
13889Within the support for IRQ resources, restructured the handling of
13890the active and edge/level bits.
13891
13892Fixed a few problems in AcpiPsxExecute() where memory could be
13893leaked under certain error conditions.
13894
13895Improved error messages for the cases where the ACPI mode could
13896not be entered.
13897
13898Code and Data Size: Current and previous core subsystem library
13899sizes are shown below.  These are the code and data sizes for the
13900acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13901these values do not include any ACPI driver or OSPM code.  The
13902debug version of the code includes the debug output trace
13903mechanism and has a much larger code and data size.  Note that
13904these values will vary depending on the efficiency of the compiler
13905and the compiler options used during generation.
13906
13907  Previous Release (20031029):
13908    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
13909    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
13910  Current Release:
13911    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
13912    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
13913
139142) iASL Compiler/Disassembler:
13915
13916Implemented a fix for the iASL disassembler where a bad index was
13917generated.  This was most noticeable on 64-bit platforms
13918
13919
13920----------------------------------------
1392129 October 2003.  Summary of changes for version 20031029:
13922
139231) ACPI CA Core Subsystem:
13924
13925
13926Fixed a problem where a level-triggered GPE with an associated
13927_Lxx control method was incorrectly cleared twice.
13928
13929Fixed a problem with the Field support code where an access can
13930occur beyond the end-of-region if the field is non-aligned but
13931extends to the very end of the parent region (resulted in an
13932AE_AML_REGION_LIMIT exception.)
13933
13934Fixed a problem with ACPI Fixed Events where an RT Clock handler
13935would not get invoked on an RTC event.  The RTC event bitmasks for
13936the PM1 registers were not being initialized properly.
13937
13938Implemented support for executing _STA and _INI methods for
13939Processor objects.  Although this is currently not part of the
13940ACPI specification, there is existing ASL code that depends on the
13941init-time execution of these methods.
13942
13943Implemented and deployed a GetDescriptorName function to decode
13944the various types of internal descriptors.  Guards against null
13945descriptors during debug output also.
13946
13947Implemented and deployed a GetNodeName function to extract the 4-
13948character namespace node name.  This function simplifies the debug
13949and error output, as well as guarding against null pointers during
13950output.
13951
13952Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
13953simplify the debug and error output of 64-bit integers.  This
13954macro replaces the HIDWORD and LODWORD macros for dumping these
13955integers.
13956
13957Updated the implementation of the Stall() operator to only call
13958AcpiOsStall(), and also return an error if the operand is larger
13959than 255.  This preserves the required behavior of not
13960relinquishing the processor, as would happen if AcpiOsSleep() was
13961called for "long stalls".
13962
13963Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
13964initialized are now treated as NOOPs.
13965
13966Cleaned up a handful of warnings during 64-bit generation.
13967
13968Fixed a reported error where and incorrect GPE number was passed
13969to the GPE dispatch handler.  This value is only used for error
13970output, however.  Used this opportunity to clean up and streamline
13971the GPE dispatch code.
13972
13973Code and Data Size: Current and previous core subsystem library
13974sizes are shown below.  These are the code and data sizes for the
13975acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13976these values do not include any ACPI driver or OSPM code.  The
13977
13978debug version of the code includes the debug output trace
13979mechanism and has a much larger code and data size.  Note that
13980these values will vary depending on the efficiency of the compiler
13981and the compiler options used during generation.
13982
13983  Previous Release (20031002):
13984    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
13985    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
13986  Current Release:
13987    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
13988    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
13989
13990
139912) iASL Compiler/Disassembler:
13992
13993Updated the iASL compiler to return an error if the operand to the
13994Stall() operator is larger than 255.
13995
13996
13997----------------------------------------
1399802 October 2003.  Summary of changes for version 20031002:
13999
14000
140011) ACPI CA Core Subsystem:
14002
14003Fixed a problem with Index Fields where the index was not
14004incremented for fields that require multiple writes to the
14005index/data registers (Fields that are wider than the data
14006register.)
14007
14008Fixed a problem with all Field objects where a write could go
14009beyond the end-of-field if the field was larger than the access
14010granularity and therefore required multiple writes to complete the
14011request.  An extra write beyond the end of the field could happen
14012inadvertently.
14013
14014Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
14015would incorrectly be returned if the width of the Data Register
14016was larger than the specified field access width.
14017
14018Completed fixes for LoadTable() and Unload() and verified their
14019operation.  Implemented full support for the "DdbHandle" object
14020throughout the ACPI CA subsystem.
14021
14022Implemented full support for the MADT and ECDT tables in the ACPI
14023CA header files.  Even though these tables are not directly
14024consumed by ACPI CA, the header definitions are useful for ACPI
14025device drivers.
14026
14027Integrated resource descriptor fixes posted to the Linux ACPI
14028list.  This included checks for minimum descriptor length, and
14029support for trailing NULL strings within descriptors that have
14030optional string elements.
14031
14032Code and Data Size: Current and previous core subsystem library
14033sizes are shown below.  These are the code and data sizes for the
14034acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14035these values do not include any ACPI driver or OSPM code.  The
14036debug version of the code includes the debug output trace
14037mechanism and has a much larger code and data size.  Note that
14038these values will vary depending on the efficiency of the compiler
14039and the compiler options used during generation.
14040
14041  Previous Release (20030918):
14042    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
14043    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
14044  Current Release:
14045    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
14046    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
14047
14048
140492) iASL Compiler:
14050
14051Implemented detection of non-ASCII characters within the input
14052source ASL file.  This catches attempts to compile binary (AML)
14053files early in the compile, with an informative error message.
14054
14055Fixed a problem where the disassembler would fault if the output
14056filename could not be generated or if the output file could not be
14057opened.
14058
14059----------------------------------------
1406018 September 2003.  Summary of changes for version 20030918:
14061
14062
140631) ACPI CA Core Subsystem:
14064
14065Found and fixed a longstanding problem with the late execution of
14066the various deferred AML opcodes (such as Operation Regions,
14067Buffer Fields, Buffers, and Packages).  If the name string
14068specified for the name of the new object placed the object in a
14069scope other than the current scope, the initialization/execution
14070of the opcode failed.  The solution to this problem was to
14071implement a mechanism where the late execution of such opcodes
14072does not attempt to lookup/create the name a second time in an
14073incorrect scope.  This fixes the "region size computed
14074incorrectly" problem.
14075
14076Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
14077Global Lock AE_BAD_PARAMETER error.
14078
14079Fixed several 64-bit issues with prototypes, casting and data
14080types.
14081
14082Removed duplicate prototype from acdisasm.h
14083
14084Fixed an issue involving EC Operation Region Detach (Shaohua Li)
14085
14086Code and Data Size: Current and previous core subsystem library
14087sizes are shown below.  These are the code and data sizes for the
14088acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14089these values do not include any ACPI driver or OSPM code.  The
14090debug version of the code includes the debug output trace
14091mechanism and has a much larger code and data size.  Note that
14092these values will vary depending on the efficiency of the compiler
14093and the compiler options used during generation.
14094
14095  Previous Release:
14096
14097    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
14098    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
14099  Current Release:
14100    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
14101    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
14102
14103
141042) Linux:
14105
14106Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
14107correct sleep time in seconds.
14108
14109----------------------------------------
1411014 July 2003.  Summary of changes for version 20030619:
14111
141121) ACPI CA Core Subsystem:
14113
14114Parse SSDTs in order discovered, as opposed to reverse order
14115(Hrvoje Habjanic)
14116
14117Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
14118Klausner,
14119   Nate Lawson)
14120
14121
141222) Linux:
14123
14124Dynamically allocate SDT list (suggested by Andi Kleen)
14125
14126proc function return value cleanups (Andi Kleen)
14127
14128Correctly handle NMI watchdog during long stalls (Andrew Morton)
14129
14130Make it so acpismp=force works (reported by Andrew Morton)
14131
14132
14133----------------------------------------
1413419 June 2003.  Summary of changes for version 20030619:
14135
141361) ACPI CA Core Subsystem:
14137
14138Fix To/FromBCD, eliminating the need for an arch-specific #define.
14139
14140Do not acquire a semaphore in the S5 shutdown path.
14141
14142Fix ex_digits_needed for 0. (Takayoshi Kochi)
14143
14144Fix sleep/stall code reversal. (Andi Kleen)
14145
14146Revert a change having to do with control method calling
14147semantics.
14148
141492) Linux:
14150
14151acpiphp update (Takayoshi Kochi)
14152
14153Export acpi_disabled for sonypi (Stelian Pop)
14154
14155Mention acpismp=force in config help
14156
14157Re-add acpitable.c and acpismp=force. This improves backwards
14158
14159compatibility and also cleans up the code to a significant degree.
14160
14161Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
14162
14163----------------------------------------
1416422 May 2003.  Summary of changes for version 20030522:
14165
141661) ACPI CA Core Subsystem:
14167
14168Found and fixed a reported problem where an AE_NOT_FOUND error
14169occurred occasionally during _BST evaluation.  This turned out to
14170be an Owner ID allocation issue where a called method did not get
14171a new ID assigned to it.  Eventually, (after 64k calls), the Owner
14172ID UINT16 would wraparound so that the ID would be the same as the
14173caller's and the called method would delete the caller's
14174namespace.
14175
14176Implemented extended error reporting for control methods that are
14177aborted due to a run-time exception.  Output includes the exact
14178AML instruction that caused the method abort, a dump of the method
14179locals and arguments at the time of the abort, and a trace of all
14180nested control method calls.
14181
14182Modified the interpreter to allow the creation of buffers of zero
14183length from the AML code. Implemented new code to ensure that no
14184attempt is made to actually allocate a memory buffer (of length
14185zero) - instead, a simple buffer object with a NULL buffer pointer
14186and length zero is created.  A warning is no longer issued when
14187the AML attempts to create a zero-length buffer.
14188
14189Implemented a workaround for the "leading asterisk issue" in
14190_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
14191asterisk is automatically removed if present in any HID, UID, or
14192CID strings.  The iASL compiler will still flag this asterisk as
14193an error, however.
14194
14195Implemented full support for _CID methods that return a package of
14196multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
14197now additionally returns a device _CID list if present.  This
14198required a change to the external interface in order to pass an
14199ACPI_BUFFER object as a parameter since the _CID list is of
14200variable length.
14201
14202Fixed a problem with the new AE_SAME_HANDLER exception where
14203handler initialization code did not know about this exception.
14204
14205Code and Data Size: Current and previous core subsystem library
14206sizes are shown below.  These are the code and data sizes for the
14207acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14208these values do not include any ACPI driver or OSPM code.  The
14209debug version of the code includes the debug output trace
14210mechanism and has a much larger code and data size.  Note that
14211these values will vary depending on the efficiency of the compiler
14212and the compiler options used during generation.
14213
14214  Previous Release (20030509):
14215    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
14216    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
14217  Current Release:
14218    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
14219    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
14220
14221
142222) Linux:
14223
14224Fixed a bug in which we would reinitialize the ACPI interrupt
14225after it was already working, thus disabling all ACPI and the IRQs
14226for any other device sharing the interrupt. (Thanks to Stian
14227Jordet)
14228
14229Toshiba driver update (John Belmonte)
14230
14231Return only 0 or 1 for our interrupt handler status (Andrew
14232Morton)
14233
14234
142353) iASL Compiler:
14236
14237Fixed a reported problem where multiple (nested) ElseIf()
14238statements were not handled correctly by the compiler, resulting
14239in incorrect warnings and incorrect AML code.  This was a problem
14240in both the ASL parser and the code generator.
14241
14242
142434) Documentation:
14244
14245Added changes to existing interfaces, new exception codes, and new
14246text concerning reference count object management versus garbage
14247collection.
14248
14249----------------------------------------
1425009 May 2003.  Summary of changes for version 20030509.
14251
14252
142531) ACPI CA Core Subsystem:
14254
14255Changed the subsystem initialization sequence to hold off
14256installation of address space handlers until the hardware has been
14257initialized and the system has entered ACPI mode.  This is because
14258the installation of space handlers can cause _REG methods to be
14259run.  Previously, the _REG methods could potentially be run before
14260ACPI mode was enabled.
14261
14262Fixed some memory leak issues related to address space handler and
14263notify handler installation.  There were some problems with the
14264reference count mechanism caused by the fact that the handler
14265objects are shared across several namespace objects.
14266
14267Fixed a reported problem where reference counts within the
14268namespace were not properly updated when named objects created by
14269method execution were deleted.
14270
14271Fixed a reported problem where multiple SSDTs caused a deletion
14272issue during subsystem termination.  Restructured the table data
14273structures to simplify the linked lists and the related code.
14274
14275Fixed a problem where the table ID associated with secondary
14276tables (SSDTs) was not being propagated into the namespace objects
14277created by those tables.  This would only present a problem for
14278tables that are unloaded at run-time, however.
14279
14280Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
14281type as the length parameter (instead of UINT32).
14282
14283Solved a long-standing problem where an ALREADY_EXISTS error
14284appears on various systems.  This problem could happen when there
14285are multiple PCI_Config operation regions under a single PCI root
14286bus.  This doesn't happen very frequently, but there are some
14287systems that do this in the ASL.
14288
14289Fixed a reported problem where the internal DeleteNode function
14290was incorrectly handling the case where a namespace node was the
14291first in the parent's child list, and had additional peers (not
14292the only child, but first in the list of children.)
14293
14294Code and Data Size: Current core subsystem library sizes are shown
14295below.  These are the code and data sizes for the acpica.lib
14296produced by the Microsoft Visual C++ 6.0 compiler, and these
14297values do not include any ACPI driver or OSPM code.  The debug
14298version of the code includes the debug output trace mechanism and
14299has a much larger code and data size.  Note that these values will
14300vary depending on the efficiency of the compiler and the compiler
14301options used during generation.
14302
14303  Previous Release
14304    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
14305    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
14306  Current Release:
14307    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
14308    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
14309
14310
143112) Linux:
14312
14313Allow ":" in OS override string (Ducrot Bruno)
14314
14315Kobject fix (Greg KH)
14316
14317
143183 iASL Compiler/Disassembler:
14319
14320Fixed a problem in the generation of the C source code files (AML
14321is emitted in C source statements for BIOS inclusion) where the
14322Ascii dump that appears within a C comment at the end of each line
14323could cause a compile time error if the AML sequence happens to
14324have an open comment or close comment sequence embedded.
14325
14326
14327----------------------------------------
1432824 April 2003.  Summary of changes for version 20030424.
14329
14330
143311) ACPI CA Core Subsystem:
14332
14333Support for big-endian systems has been implemented.  Most of the
14334support has been invisibly added behind big-endian versions of the
14335ACPI_MOVE_* macros.
14336
14337Fixed a problem in AcpiHwDisableGpeBlock() and
14338AcpiHwClearGpeBlock() where an incorrect offset was passed to the
14339low level hardware write routine.  The offset parameter was
14340actually eliminated from the low level read/write routines because
14341they had become obsolete.
14342
14343Fixed a problem where a handler object was deleted twice during
14344the removal of a fixed event handler.
14345
14346
143472) Linux:
14348
14349A fix for SMP systems with link devices was contributed by
14350
14351Compaq's Dan Zink.
14352
14353(2.5) Return whether we handled the interrupt in our IRQ handler.
14354(Linux ISRs no longer return void, so we can propagate the handler
14355return value from the ACPI CA core back to the OS.)
14356
14357
14358
143593) Documentation:
14360
14361The ACPI CA Programmer Reference has been updated to reflect new
14362interfaces and changes to existing interfaces.
14363
14364----------------------------------------
1436528 March 2003.  Summary of changes for version 20030328.
14366
143671) ACPI CA Core Subsystem:
14368
14369The GPE Block Device support has been completed.  New interfaces
14370are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
14371interfaces (enable, disable, clear, getstatus) have been split
14372into separate interfaces for Fixed Events and General Purpose
14373Events (GPEs) in order to support GPE Block Devices properly.
14374
14375Fixed a problem where the error message "Failed to acquire
14376semaphore" would appear during operations on the embedded
14377controller (EC).
14378
14379Code and Data Size: Current core subsystem library sizes are shown
14380below.  These are the code and data sizes for the acpica.lib
14381produced by the Microsoft Visual C++ 6.0 compiler, and these
14382values do not include any ACPI driver or OSPM code.  The debug
14383version of the code includes the debug output trace mechanism and
14384has a much larger code and data size.  Note that these values will
14385vary depending on the efficiency of the compiler and the compiler
14386options used during generation.
14387
14388  Previous Release
14389    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
14390    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
14391  Current Release:
14392    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
14393    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
14394
14395
14396----------------------------------------
1439728 February 2003.  Summary of changes for version 20030228.
14398
14399
144001) ACPI CA Core Subsystem:
14401
14402The GPE handling and dispatch code has been completely overhauled
14403in preparation for support of GPE Block Devices (ID ACPI0006).
14404This affects internal data structures and code only; there should
14405be no differences visible externally.  One new file has been
14406added, evgpeblk.c
14407
14408The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
14409fields that are used to determine the GPE block lengths.  The
14410REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
14411structures are ignored.  This is per the ACPI specification but it
14412isn't very clear.  The full 256 Block 0/1 GPEs are now supported
14413(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
14414
14415In the SCI interrupt handler, removed the read of the PM1_CONTROL
14416register to look at the SCI_EN bit.  On some machines, this read
14417causes an SMI event and greatly slows down SCI events.  (This may
14418in fact be the cause of slow battery status response on some
14419systems.)
14420
14421Fixed a problem where a store of a NULL string to a package object
14422could cause the premature deletion of the object.  This was seen
14423during execution of the battery _BIF method on some systems,
14424resulting in no battery data being returned.
14425
14426Added AcpiWalkResources interface to simplify parsing of resource
14427lists.
14428
14429Code and Data Size: Current core subsystem library sizes are shown
14430below.  These are the code and data sizes for the acpica.lib
14431produced by the Microsoft Visual C++ 6.0 compiler, and these
14432values do not include any ACPI driver or OSPM code.  The debug
14433version of the code includes the debug output trace mechanism and
14434has a much larger code and data size.  Note that these values will
14435vary depending on the efficiency of the compiler and the compiler
14436options used during generation.
14437
14438  Previous Release
14439    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
14440    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
14441  Current Release:
14442    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
14443    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
14444
14445
144462) Linux
14447
14448S3 fixes (Ole Rohne)
14449
14450Update ACPI PHP driver with to use new acpi_walk_resource API
14451(Bjorn Helgaas)
14452
14453Add S4BIOS support (Pavel Machek)
14454
14455Map in entire table before performing checksum (John Stultz)
14456
14457Expand the mem= cmdline to allow the specification of reserved and
14458ACPI DATA blocks (Pavel Machek)
14459
14460Never use ACPI on VISWS
14461
14462Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
14463
14464Revert a change that allowed P_BLK lengths to be 4 or 5. This is
14465causing us to think that some systems support C2 when they really
14466don't.
14467
14468Do not count processor objects for non-present CPUs (Thanks to
14469Dominik Brodowski)
14470
14471
144723) iASL Compiler:
14473
14474Fixed a problem where ASL include files could not be found and
14475opened.
14476
14477Added support for the _PDC reserved name.
14478
14479
14480----------------------------------------
1448122 January 2003.  Summary of changes for version 20030122.
14482
14483
144841) ACPI CA Core Subsystem:
14485
14486Added a check for constructs of the form:  Store (Local0, Local0)
14487where Local0 is not initialized.  Apparently, some BIOS
14488programmers believe that this is a NOOP.  Since this store doesn't
14489do anything anyway, the new prototype behavior will ignore this
14490error.  This is a case where we can relax the strict checking in
14491the interpreter in the name of compatibility.
14492
14493
144942) Linux
14495
14496The AcpiSrc Source Conversion Utility has been released with the
14497Linux package for the first time.  This is the utility that is
14498used to convert the ACPI CA base source code to the Linux version.
14499
14500(Both) Handle P_BLK lengths shorter than 6 more gracefully
14501
14502(Both) Move more headers to include/acpi, and delete an unused
14503header.
14504
14505(Both) Move drivers/acpi/include directory to include/acpi
14506
14507(Both) Boot functions don't use cmdline, so don't pass it around
14508
14509(Both) Remove include of unused header (Adrian Bunk)
14510
14511(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
14512the
14513former now also includes the latter, acpiphp.h only needs the one,
14514now.
14515
14516(2.5) Make it possible to select method of bios restoring after S3
14517resume. [=> no more ugly ifdefs] (Pavel Machek)
14518
14519(2.5) Make proc write interfaces work (Pavel Machek)
14520
14521(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
14522
14523(2.5) Break out ACPI Perf code into its own module, under cpufreq
14524(Dominik Brodowski)
14525
14526(2.4) S4BIOS support (Ducrot Bruno)
14527
14528(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
14529Visinoni)
14530
14531
145323) iASL Compiler:
14533
14534Added support to disassemble SSDT and PSDTs.
14535
14536Implemented support to obtain SSDTs from the Windows registry if
14537available.
14538
14539
14540----------------------------------------
1454109 January 2003.  Summary of changes for version 20030109.
14542
145431) ACPI CA Core Subsystem:
14544
14545Changed the behavior of the internal Buffer-to-String conversion
14546function.  The current ACPI specification states that the contents
14547of the buffer are "converted to a string of two-character
14548hexadecimal numbers, each separated by a space".  Unfortunately,
14549this definition is not backwards compatible with existing ACPI 1.0
14550implementations (although the behavior was not defined in the ACPI
145511.0 specification).  The new behavior simply copies data from the
14552buffer to the string until a null character is found or the end of
14553the buffer is reached.  The new String object is always null
14554terminated.  This problem was seen during the generation of _BIF
14555battery data where incorrect strings were returned for battery
14556type, etc.  This will also require an errata to the ACPI
14557specification.
14558
14559Renamed all instances of NATIVE_UINT and NATIVE_INT to
14560ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
14561
14562Copyright in all module headers (both Linux and non-Linux) has be
14563updated to 2003.
14564
14565Code and Data Size: Current core subsystem library sizes are shown
14566below.  These are the code and data sizes for the acpica.lib
14567produced by the Microsoft Visual C++ 6.0 compiler, and these
14568values do not include any ACPI driver or OSPM code.  The debug
14569version of the code includes the debug output trace mechanism and
14570has a much larger code and data size.  Note that these values will
14571vary depending on the efficiency of the compiler and the compiler
14572options used during generation.
14573
14574  Previous Release
14575    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
14576    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
14577  Current Release:
14578    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
14579    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
14580
14581
145822) Linux
14583
14584Fixed an oops on module insertion/removal (Matthew Tippett)
14585
14586(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
14587
14588(2.5) Replace pr_debug (Randy Dunlap)
14589
14590(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
14591
14592(Both) Eliminate spawning of thread from timer callback, in favor
14593of schedule_work()
14594
14595(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
14596
14597(Both) Added define for Fixed Function HW region (Matthew Wilcox)
14598
14599(Both) Add missing statics to button.c (Pavel Machek)
14600
14601Several changes have been made to the source code translation
14602utility that generates the Linux Code in order to make the code
14603more "Linux-like":
14604
14605All typedefs on structs and unions have been removed in keeping
14606with the Linux coding style.
14607
14608Removed the non-Linux SourceSafe module revision number from each
14609module header.
14610
14611Completed major overhaul of symbols to be lowercased for linux.
14612Doubled the number of symbols that are lowercased.
14613
14614Fixed a problem where identifiers within procedure headers and
14615within quotes were not fully lower cased (they were left with a
14616starting capital.)
14617
14618Some C macros whose only purpose is to allow the generation of 16-
14619bit code are now completely removed in the Linux code, increasing
14620readability and maintainability.
14621
14622----------------------------------------
14623
1462412 December 2002.  Summary of changes for version 20021212.
14625
14626
146271) ACPI CA Core Subsystem:
14628
14629Fixed a problem where the creation of a zero-length AML Buffer
14630would cause a fault.
14631
14632Fixed a problem where a Buffer object that pointed to a static AML
14633buffer (in an ACPI table) could inadvertently be deleted, causing
14634memory corruption.
14635
14636Fixed a problem where a user buffer (passed in to the external
14637ACPI CA interfaces) could be overwritten if the buffer was too
14638small to complete the operation, causing memory corruption.
14639
14640Fixed a problem in the Buffer-to-String conversion code where a
14641string of length one was always returned, regardless of the size
14642of the input Buffer object.
14643
14644Removed the NATIVE_CHAR data type across the entire source due to
14645lack of need and lack of consistent use.
14646
14647Code and Data Size: Current core subsystem library sizes are shown
14648below.  These are the code and data sizes for the acpica.lib
14649produced by the Microsoft Visual C++ 6.0 compiler, and these
14650values do not include any ACPI driver or OSPM code.  The debug
14651version of the code includes the debug output trace mechanism and
14652has a much larger code and data size.  Note that these values will
14653vary depending on the efficiency of the compiler and the compiler
14654options used during generation.
14655
14656  Previous Release
14657    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
14658    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
14659  Current Release:
14660    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
14661    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
14662
14663
14664----------------------------------------
1466505 December 2002.  Summary of changes for version 20021205.
14666
146671) ACPI CA Core Subsystem:
14668
14669Fixed a problem where a store to a String or Buffer object could
14670cause corruption of the DSDT if the object type being stored was
14671the same as the target object type and the length of the object
14672being stored was equal to or smaller than the original (existing)
14673target object.  This was seen to cause corruption of battery _BIF
14674buffers if the _BIF method modified the buffer on the fly.
14675
14676Fixed a problem where an internal error was generated if a control
14677method invocation was used in an OperationRegion, Buffer, or
14678Package declaration.  This was caused by the deferred parsing of
14679the control method and thus the deferred creation of the internal
14680method object.  The solution to this problem was to create the
14681internal method object at the moment the method is encountered in
14682the first pass - so that subsequent references to the method will
14683able to obtain the required parameter count and thus properly
14684parse the method invocation.  This problem presented itself as an
14685AE_AML_INTERNAL during the pass 1 parse phase during table load.
14686
14687Fixed a problem where the internal String object copy routine did
14688not always allocate sufficient memory for the target String object
14689and caused memory corruption.  This problem was seen to cause
14690"Allocation already present in list!" errors as memory allocation
14691became corrupted.
14692
14693Implemented a new function for the evaluation of namespace objects
14694that allows the specification of the allowable return object
14695types.  This simplifies a lot of code that checks for a return
14696object of one or more specific objects returned from the
14697evaluation (such as _STA, etc.)  This may become and external
14698function if it would be useful to ACPI-related drivers.
14699
14700Completed another round of prefixing #defines with "ACPI_" for
14701clarity.
14702
14703Completed additional code restructuring to allow more modular
14704linking for iASL compiler and AcpiExec.  Several files were split
14705creating new files.  New files:  nsparse.c dsinit.c evgpe.c
14706
14707Implemented an abort mechanism to terminate an executing control
14708method via the AML debugger.  This feature is useful for debugging
14709control methods that depend (wait) for specific hardware
14710responses.
14711
14712Code and Data Size: Current core subsystem library sizes are shown
14713below.  These are the code and data sizes for the acpica.lib
14714produced by the Microsoft Visual C++ 6.0 compiler, and these
14715values do not include any ACPI driver or OSPM code.  The debug
14716version of the code includes the debug output trace mechanism and
14717has a much larger code and data size.  Note that these values will
14718vary depending on the efficiency of the compiler and the compiler
14719options used during generation.
14720
14721  Previous Release
14722    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
14723    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
14724  Current Release:
14725    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
14726    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
14727
14728
147292) iASL Compiler/Disassembler
14730
14731Fixed a compiler code generation problem for "Interrupt" Resource
14732Descriptors.  If specified in the ASL, the optional "Resource
14733Source Index" and "Resource Source" fields were not inserted into
14734the correct location within the AML resource descriptor, creating
14735an invalid descriptor.
14736
14737Fixed a disassembler problem for "Interrupt" resource descriptors.
14738The optional "Resource Source Index" and "Resource Source" fields
14739were ignored.
14740
14741
14742----------------------------------------
1474322 November 2002.  Summary of changes for version 20021122.
14744
14745
147461) ACPI CA Core Subsystem:
14747
14748Fixed a reported problem where an object stored to a Method Local
14749or Arg was not copied to a new object during the store - the
14750object pointer was simply copied to the Local/Arg.  This caused
14751all subsequent operations on the Local/Arg to also affect the
14752original source of the store operation.
14753
14754Fixed a problem where a store operation to a Method Local or Arg
14755was not completed properly if the Local/Arg contained a reference
14756(from RefOf) to a named field.  The general-purpose store-to-
14757namespace-node code is now used so that this case is handled
14758automatically.
14759
14760Fixed a problem where the internal object copy routine would cause
14761a protection fault if the object being copied was a Package and
14762contained either 1) a NULL package element or 2) a nested sub-
14763package.
14764
14765Fixed a problem with the GPE initialization that resulted from an
14766ambiguity in the ACPI specification.  One section of the
14767specification states that both the address and length of the GPE
14768block must be zero if the block is not supported.  Another section
14769implies that only the address need be zero if the block is not
14770supported.  The code has been changed so that both the address and
14771the length must be non-zero to indicate a valid GPE block (i.e.,
14772if either the address or the length is zero, the GPE block is
14773invalid.)
14774
14775Code and Data Size: Current core subsystem library sizes are shown
14776below.  These are the code and data sizes for the acpica.lib
14777produced by the Microsoft Visual C++ 6.0 compiler, and these
14778values do not include any ACPI driver or OSPM code.  The debug
14779version of the code includes the debug output trace mechanism and
14780has a much larger code and data size.  Note that these values will
14781vary depending on the efficiency of the compiler and the compiler
14782options used during generation.
14783
14784  Previous Release
14785    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
14786    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
14787  Current Release:
14788    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
14789    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
14790
14791
147922) Linux
14793
14794Cleaned up EC driver. Exported an external EC read/write
14795interface. By going through this, other drivers (most notably
14796sonypi) will be able to serialize access to the EC.
14797
14798
147993) iASL Compiler/Disassembler
14800
14801Implemented support to optionally generate include files for both
14802ASM and C (the -i switch).  This simplifies BIOS development by
14803automatically creating include files that contain external
14804declarations for the symbols that are created within the
14805
14806(optionally generated) ASM and C AML source files.
14807
14808
14809----------------------------------------
1481015 November 2002.  Summary of changes for version 20021115.
14811
148121) ACPI CA Core Subsystem:
14813
14814Fixed a memory leak problem where an error during resolution of
14815
14816method arguments during a method invocation from another method
14817failed to cleanup properly by deleting all successfully resolved
14818argument objects.
14819
14820Fixed a problem where the target of the Index() operator was not
14821correctly constructed if the source object was a package.  This
14822problem has not been detected because the use of a target operand
14823with Index() is very rare.
14824
14825Fixed a problem with the Index() operator where an attempt was
14826made to delete the operand objects twice.
14827
14828Fixed a problem where an attempt was made to delete an operand
14829twice during execution of the CondRefOf() operator if the target
14830did not exist.
14831
14832Implemented the first of perhaps several internal create object
14833functions that create and initialize a specific object type.  This
14834consolidates duplicated code wherever the object is created, thus
14835shrinking the size of the subsystem.
14836
14837Implemented improved debug/error messages for errors that occur
14838during nested method invocations.  All executing method pathnames
14839are displayed (with the error) as the call stack is unwound - thus
14840simplifying debug.
14841
14842Fixed a problem introduced in the 10/02 release that caused
14843premature deletion of a buffer object if a buffer was used as an
14844ASL operand where an integer operand is required (Thus causing an
14845implicit object conversion from Buffer to Integer.)  The change in
14846the 10/02 release was attempting to fix a memory leak (albeit
14847incorrectly.)
14848
14849Code and Data Size: Current core subsystem library sizes are shown
14850below.  These are the code and data sizes for the acpica.lib
14851produced by the Microsoft Visual C++ 6.0 compiler, and these
14852values do not include any ACPI driver or OSPM code.  The debug
14853version of the code includes the debug output trace mechanism and
14854has a much larger code and data size.  Note that these values will
14855vary depending on the efficiency of the compiler and the compiler
14856options used during generation.
14857
14858  Previous Release
14859    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
14860    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
14861  Current Release:
14862    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
14863    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
14864
14865
148662) Linux
14867
14868Changed the implementation of the ACPI semaphores to use down()
14869instead of down_interruptable().  It is important that the
14870execution of ACPI control methods not be interrupted by signals.
14871Methods must run to completion, or the system may be left in an
14872unknown/unstable state.
14873
14874Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
14875(Shawn Starr)
14876
14877
148783) iASL Compiler/Disassembler
14879
14880
14881Changed the default location of output files.  All output files
14882are now placed in the current directory by default instead of in
14883the directory of the source file.  This change may affect some
14884existing makefiles, but it brings the behavior of the compiler in
14885line with other similar tools.  The location of the output files
14886can be overridden with the -p command line switch.
14887
14888
14889----------------------------------------
1489011 November 2002.  Summary of changes for version 20021111.
14891
14892
148930) ACPI Specification 2.0B is released and is now available at:
14894http://www.acpi.info/index.html
14895
14896
148971) ACPI CA Core Subsystem:
14898
14899Implemented support for the ACPI 2.0 SMBus Operation Regions.
14900This includes the early detection and handoff of the request to
14901the SMBus region handler (avoiding all of the complex field
14902support code), and support for the bidirectional return packet
14903from an SMBus write operation.  This paves the way for the
14904development of SMBus drivers in each host operating system.
14905
14906Fixed a problem where the semaphore WAIT_FOREVER constant was
14907defined as 32 bits, but must be 16 bits according to the ACPI
14908specification.  This had the side effect of causing ASL
14909Mutex/Event timeouts even though the ASL code requested a wait
14910forever.  Changed all internal references to the ACPI timeout
14911parameter to 16 bits to prevent future problems.  Changed the name
14912of WAIT_FOREVER to ACPI_WAIT_FOREVER.
14913
14914Code and Data Size: Current core subsystem library sizes are shown
14915below.  These are the code and data sizes for the acpica.lib
14916produced by the Microsoft Visual C++ 6.0 compiler, and these
14917values do not include any ACPI driver or OSPM code.  The debug
14918version of the code includes the debug output trace mechanism and
14919has a much larger code and data size.  Note that these values will
14920vary depending on the efficiency of the compiler and the compiler
14921options used during generation.
14922
14923  Previous Release
14924    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
14925    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
14926  Current Release:
14927    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
14928    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
14929
14930
149312) Linux
14932
14933Module loading/unloading fixes (John Cagle)
14934
14935
149363) iASL Compiler/Disassembler
14937
14938Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
14939
14940Implemented support for the disassembly of all SMBus protocol
14941keywords (SMBQuick, SMBWord, etc.)
14942
14943----------------------------------------
1494401 November 2002.  Summary of changes for version 20021101.
14945
14946
149471) ACPI CA Core Subsystem:
14948
14949Fixed a problem where platforms that have a GPE1 block but no GPE0
14950block were not handled correctly.  This resulted in a "GPE
14951overlap" error message.  GPE0 is no longer required.
14952
14953Removed code added in the previous release that inserted nodes
14954into the namespace in alphabetical order.  This caused some side-
14955effects on various machines.  The root cause of the problem is
14956still under investigation since in theory, the internal ordering
14957of the namespace nodes should not matter.
14958
14959
14960Enhanced error reporting for the case where a named object is not
14961found during control method execution.  The full ACPI namepath
14962(name reference) of the object that was not found is displayed in
14963this case.
14964
14965Note: as a result of the overhaul of the namespace object types in
14966the previous release, the namespace nodes for the predefined
14967scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
14968instead of ACPI_TYPE_ANY.  This simplifies the namespace
14969management code but may affect code that walks the namespace tree
14970looking for specific object types.
14971
14972Code and Data Size: Current core subsystem library sizes are shown
14973below.  These are the code and data sizes for the acpica.lib
14974produced by the Microsoft Visual C++ 6.0 compiler, and these
14975values do not include any ACPI driver or OSPM code.  The debug
14976version of the code includes the debug output trace mechanism and
14977has a much larger code and data size.  Note that these values will
14978vary depending on the efficiency of the compiler and the compiler
14979options used during generation.
14980
14981  Previous Release
14982    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
14983    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
14984  Current Release:
14985    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
14986    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
14987
14988
149892) Linux
14990
14991Fixed a problem introduced in the previous release where the
14992Processor and Thermal objects were not recognized and installed in
14993/proc.  This was related to the scope type change described above.
14994
14995
149963) iASL Compiler/Disassembler
14997
14998Implemented the -g option to get all of the required ACPI tables
14999from the registry and save them to files (Windows version of the
15000compiler only.)  The required tables are the FADT, FACS, and DSDT.
15001
15002Added ACPI table checksum validation during table disassembly in
15003order to catch corrupted tables.
15004
15005
15006----------------------------------------
1500722 October 2002.  Summary of changes for version 20021022.
15008
150091) ACPI CA Core Subsystem:
15010
15011Implemented a restriction on the Scope operator that the target
15012must already exist in the namespace at the time the operator is
15013encountered (during table load or method execution).  In other
15014words, forward references are not allowed and Scope() cannot
15015create a new object. This changes the previous behavior where the
15016interpreter would create the name if not found.  This new behavior
15017correctly enables the search-to-root algorithm during namespace
15018lookup of the target name.  Because of this upsearch, this fixes
15019the known Compaq _SB_.OKEC problem and makes both the AML
15020interpreter and iASL compiler compatible with other ACPI
15021implementations.
15022
15023Completed a major overhaul of the internal ACPI object types for
15024the ACPI Namespace and the associated operand objects.  Many of
15025these types had become obsolete with the introduction of the two-
15026pass namespace load.  This cleanup simplifies the code and makes
15027the entire namespace load mechanism much clearer and easier to
15028understand.
15029
15030Improved debug output for tracking scope opening/closing to help
15031diagnose scoping issues.  The old scope name as well as the new
15032scope name are displayed.  Also improved error messages for
15033problems with ASL Mutex objects and error messages for GPE
15034problems.
15035
15036Cleaned up the namespace dump code, removed obsolete code.
15037
15038All string output (for all namespace/object dumps) now uses the
15039common ACPI string output procedure which handles escapes properly
15040and does not emit non-printable characters.
15041
15042Fixed some issues with constants in the 64-bit version of the
15043local C library (utclib.c)
15044
15045
150462) Linux
15047
15048EC Driver:  No longer attempts to acquire the Global Lock at
15049interrupt level.
15050
15051
150523) iASL Compiler/Disassembler
15053
15054Implemented ACPI 2.0B grammar change that disallows all Type 1 and
150552 opcodes outside of a control method.  This means that the
15056"executable" operators (versus the "namespace" operators) cannot
15057be used at the table level; they can only be used within a control
15058method.
15059
15060Implemented the restriction on the Scope() operator where the
15061target must already exist in the namespace at the time the
15062operator is encountered (during ASL compilation). In other words,
15063forward references are not allowed and Scope() cannot create a new
15064object.  This makes the iASL compiler compatible with other ACPI
15065implementations and makes the Scope() implementation adhere to the
15066ACPI specification.
15067
15068Fixed a problem where namepath optimization for the Alias operator
15069was optimizing the wrong path (of the two namepaths.)  This caused
15070a "Missing alias link" error message.
15071
15072Fixed a problem where an "unknown reserved name" warning could be
15073incorrectly generated for names like "_SB" when the trailing
15074underscore is not used in the original ASL.
15075
15076Fixed a problem where the reserved name check did not handle
15077NamePaths with multiple NameSegs correctly.  The first nameseg of
15078the NamePath was examined instead of the last NameSeg.
15079
15080
15081----------------------------------------
15082
1508302 October 2002.  Summary of changes for this release.
15084
15085
150861) ACPI CA Core Subsystem version 20021002:
15087
15088Fixed a problem where a store/copy of a string to an existing
15089string did not always set the string length properly in the String
15090object.
15091
15092Fixed a reported problem with the ToString operator where the
15093behavior was identical to the ToHexString operator instead of just
15094simply converting a raw buffer to a string data type.
15095
15096Fixed a problem where CopyObject and the other "explicit"
15097conversion operators were not updating the internal namespace node
15098type as part of the store operation.
15099
15100Fixed a memory leak during implicit source operand conversion
15101where the original object was not deleted if it was converted to a
15102new object of a different type.
15103
15104Enhanced error messages for all problems associated with namespace
15105lookups.  Common procedure generates and prints the lookup name as
15106well as the formatted status.
15107
15108Completed implementation of a new design for the Alias support
15109within the namespace.  The existing design did not handle the case
15110where a new object was assigned to one of the two names due to the
15111use of an explicit conversion operator, resulting in the two names
15112pointing to two different objects.  The new design simply points
15113the Alias name to the original name node - not to the object.
15114This results in a level of indirection that must be handled in the
15115name resolution mechanism.
15116
15117Code and Data Size: Current core subsystem library sizes are shown
15118below.  These are the code and data sizes for the acpica.lib
15119produced by the Microsoft Visual C++ 6.0 compiler, and these
15120values do not include any ACPI driver or OSPM code.  The debug
15121version of the code includes the debug output trace mechanism and
15122has a larger code and data size.  Note that these values will vary
15123depending on the efficiency of the compiler and the compiler
15124options used during generation.
15125
15126  Previous Release
15127    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
15128    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
15129  Current Release:
15130    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
15131    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
15132
15133
151342) Linux
15135
15136Initialize thermal driver's timer before it is used. (Knut
15137Neumann)
15138
15139Allow handling negative celsius values. (Kochi Takayoshi)
15140
15141Fix thermal management and make trip points. R/W (Pavel Machek)
15142
15143Fix /proc/acpi/sleep. (P. Christeas)
15144
15145IA64 fixes. (David Mosberger)
15146
15147Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
15148
15149Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
15150Brodowski)
15151
15152
151533) iASL Compiler/Disassembler
15154
15155Clarified some warning/error messages.
15156
15157
15158----------------------------------------
1515918 September 2002.  Summary of changes for this release.
15160
15161
151621) ACPI CA Core Subsystem version 20020918:
15163
15164Fixed a reported problem with reference chaining (via the Index()
15165and RefOf() operators) in the ObjectType() and SizeOf() operators.
15166The definition of these operators includes the dereferencing of
15167all chained references to return information on the base object.
15168
15169Fixed a problem with stores to indexed package elements - the
15170existing code would not complete the store if an "implicit
15171conversion" was not performed.  In other words, if the existing
15172object (package element) was to be replaced completely, the code
15173didn't handle this case.
15174
15175Relaxed typechecking on the ASL "Scope" operator to allow the
15176target name to refer to an object of type Integer, String, or
15177Buffer, in addition to the scoping object types (Device,
15178predefined Scopes, Processor, PowerResource, and ThermalZone.)
15179This allows existing AML code that has workarounds for a bug in
15180Windows to function properly.  A warning is issued, however.  This
15181affects both the AML interpreter and the iASL compiler. Below is
15182an example of this type of ASL code:
15183
15184      Name(DEB,0x00)
15185      Scope(DEB)
15186      {
15187
15188Fixed some reported problems with 64-bit integer support in the
15189local implementation of C library functions (clib.c)
15190
15191
151922) Linux
15193
15194Use ACPI fix map region instead of IOAPIC region, since it is
15195undefined in non-SMP.
15196
15197Ensure that the SCI has the proper polarity and trigger, even on
15198systems that do not have an interrupt override entry in the MADT.
15199
152002.5 big driver reorganization (Pat Mochel)
15201
15202Use early table mapping code from acpitable.c (Andi Kleen)
15203
15204New blacklist entries (Andi Kleen)
15205
15206Blacklist improvements. Split blacklist code out into a separate
15207file. Move checking the blacklist to very early. Previously, we
15208would use ACPI tables, and then halfway through init, check the
15209blacklist -- too late. Now, it's early enough to completely fall-
15210back to non-ACPI.
15211
15212
152133) iASL Compiler/Disassembler version 20020918:
15214
15215Fixed a problem where the typechecking code didn't know that an
15216alias could point to a method.  In other words, aliases were not
15217being dereferenced during typechecking.
15218
15219
15220----------------------------------------
1522129 August 2002.  Summary of changes for this release.
15222
152231) ACPI CA Core Subsystem Version 20020829:
15224
15225If the target of a Scope() operator already exists, it must be an
15226object type that actually opens a scope -- such as a Device,
15227Method, Scope, etc.  This is a fatal runtime error.  Similar error
15228check has been added to the iASL compiler also.
15229
15230Tightened up the namespace load to disallow multiple names in the
15231same scope.  This previously was allowed if both objects were of
15232the same type.  (i.e., a lookup was the same as entering a new
15233name).
15234
15235
152362) Linux
15237
15238Ensure that the ACPI interrupt has the proper trigger and
15239polarity.
15240
15241local_irq_disable is extraneous. (Matthew Wilcox)
15242
15243Make "acpi=off" actually do what it says, and not use the ACPI
15244interpreter *or* the tables.
15245
15246Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
15247Takayoshi)
15248
15249
152503) iASL Compiler/Disassembler  Version 20020829:
15251
15252Implemented namepath optimization for name declarations.  For
15253example, a declaration like "Method (\_SB_.ABCD)" would get
15254optimized to "Method (ABCD)" if the declaration is within the
15255\_SB_ scope.  This optimization is in addition to the named
15256reference path optimization first released in the previous
15257version. This would seem to complete all possible optimizations
15258for namepaths within the ASL/AML.
15259
15260If the target of a Scope() operator already exists, it must be an
15261object type that actually opens a scope -- such as a Device,
15262Method, Scope, etc.
15263
15264Implemented a check and warning for unreachable code in the same
15265block below a Return() statement.
15266
15267Fixed a problem where the listing file was not generated if the
15268compiler aborted if the maximum error count was exceeded (200).
15269
15270Fixed a problem where the typechecking of method return values was
15271broken.  This includes the check for a return value when the
15272method is invoked as a TermArg (a return value is expected.)
15273
15274Fixed a reported problem where EOF conditions during a quoted
15275string or comment caused a fault.
15276
15277
15278----------------------------------------
1527915 August 2002.  Summary of changes for this release.
15280
152811) ACPI CA Core Subsystem Version 20020815:
15282
15283Fixed a reported problem where a Store to a method argument that
15284contains a reference did not perform the indirect store correctly.
15285This problem was created during the conversion to the new
15286reference object model - the indirect store to a method argument
15287code was not updated to reflect the new model.
15288
15289Reworked the ACPI mode change code to better conform to ACPI 2.0,
15290handle corner cases, and improve code legibility (Kochi Takayoshi)
15291
15292Fixed a problem with the pathname parsing for the carat (^)
15293prefix.  The heavy use of the carat operator by the new namepath
15294optimization in the iASL compiler uncovered a problem with the AML
15295interpreter handling of this prefix.  In the case where one or
15296more carats precede a single nameseg, the nameseg was treated as
15297standalone and the search rule (to root) was inadvertently
15298applied.  This could cause both the iASL compiler and the
15299interpreter to find the wrong object or to miss the error that
15300should occur if the object does not exist at that exact pathname.
15301
15302Found and fixed the problem where the HP Pavilion DSDT would not
15303load.  This was a relatively minor tweak to the table loading code
15304(a problem caused by the unexpected encounter with a method
15305invocation not within a control method), but it does not solve the
15306overall issue of the execution of AML code at the table level.
15307This investigation is still ongoing.
15308
15309Code and Data Size: Current core subsystem library sizes are shown
15310below.  These are the code and data sizes for the acpica.lib
15311produced by the Microsoft Visual C++ 6.0 compiler, and these
15312values do not include any ACPI driver or OSPM code.  The debug
15313version of the code includes the debug output trace mechanism and
15314has a larger code and data size.  Note that these values will vary
15315depending on the efficiency of the compiler and the compiler
15316options used during generation.
15317
15318  Previous Release
15319    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
15320    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
15321  Current Release:
15322    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
15323    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
15324
15325
153262) Linux
15327
15328Remove redundant slab.h include (Brad Hards)
15329
15330Fix several bugs in thermal.c (Herbert Nachtnebel)
15331
15332Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
15333
15334Change acpi_system_suspend to use updated irq functions (Pavel
15335Machek)
15336
15337Export acpi_get_firmware_table (Matthew Wilcox)
15338
15339Use proper root proc entry for ACPI (Kochi Takayoshi)
15340
15341Fix early-boot table parsing (Bjorn Helgaas)
15342
15343
153443) iASL Compiler/Disassembler
15345
15346Reworked the compiler options to make them more consistent and to
15347use two-letter options where appropriate.  We were running out of
15348sensible letters.   This may break some makefiles, so check the
15349current options list by invoking the compiler with no parameters.
15350
15351Completed the design and implementation of the ASL namepath
15352optimization option for the compiler.  This option optimizes all
15353references to named objects to the shortest possible path.  The
15354first attempt tries to utilize a single nameseg (4 characters) and
15355the "search-to-root" algorithm used by the interpreter.  If that
15356cannot be used (because either the name is not in the search path
15357or there is a conflict with another object with the same name),
15358the pathname is optimized using the carat prefix (usually a
15359shorter string than specifying the entire path from the root.)
15360
15361Implemented support to obtain the DSDT from the Windows registry
15362(when the disassembly option is specified with no input file).
15363Added this code as the implementation for AcpiOsTableOverride in
15364the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
15365utility) to scan memory for the DSDT to the AcpiOsTableOverride
15366function in the DOS OSL to make the disassembler truly OS
15367independent.
15368
15369Implemented a new option to disassemble and compile in one step.
15370When used without an input filename, this option will grab the
15371DSDT from the local machine, disassemble it, and compile it in one
15372step.
15373
15374Added a warning message for invalid escapes (a backslash followed
15375by any character other than the allowable escapes).  This catches
15376the quoted string error "\_SB_" (which should be "\\_SB_" ).
15377
15378Also, there are numerous instances in the ACPI specification where
15379this error occurs.
15380
15381Added a compiler option to disable all optimizations.  This is
15382basically the "compatibility mode" because by using this option,
15383the AML code will come out exactly the same as other ASL
15384compilers.
15385
15386Added error messages for incorrectly ordered dependent resource
15387functions.  This includes: missing EndDependentFn macro at end of
15388dependent resource list, nested dependent function macros (both
15389start and end), and missing StartDependentFn macro.  These are
15390common errors that should be caught at compile time.
15391
15392Implemented _OSI support for the disassembler and compiler.  _OSI
15393must be included in the namespace for proper disassembly (because
15394the disassembler must know the number of arguments.)
15395
15396Added an "optimization" message type that is optional (off by
15397default).  This message is used for all optimizations - including
15398constant folding, integer optimization, and namepath optimization.
15399
15400----------------------------------------
1540125 July 2002.  Summary of changes for this release.
15402
15403
154041) ACPI CA Core Subsystem Version 20020725:
15405
15406The AML Disassembler has been enhanced to produce compilable ASL
15407code and has been integrated into the iASL compiler (see below) as
15408well as the single-step disassembly for the AML debugger and the
15409disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
15410resource templates and macros are fully supported.  The
15411disassembler has been tested on over 30 different AML files,
15412producing identical AML when the resulting disassembled ASL file
15413is recompiled with the same ASL compiler.
15414
15415Modified the Resource Manager to allow zero interrupts and zero
15416dma channels during the GetCurrentResources call.  This was
15417causing problems on some platforms.
15418
15419Added the AcpiOsRedirectOutput interface to the OSL to simplify
15420output redirection for the AcpiOsPrintf and AcpiOsVprintf
15421interfaces.
15422
15423Code and Data Size: Current core subsystem library sizes are shown
15424below.  These are the code and data sizes for the acpica.lib
15425produced by the Microsoft Visual C++ 6.0 compiler, and these
15426values do not include any ACPI driver or OSPM code.  The debug
15427version of the code includes the debug output trace mechanism and
15428has a larger code and data size.  Note that these values will vary
15429depending on the efficiency of the compiler and the compiler
15430options used during generation.
15431
15432  Previous Release
15433    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
15434    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
15435  Current Release:
15436    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
15437    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
15438
15439
154402) Linux
15441
15442Fixed a panic in the EC driver (Dominik Brodowski)
15443
15444Implemented checksum of the R/XSDT itself during Linux table scan
15445(Richard Schaal)
15446
15447
154483) iASL compiler
15449
15450The AML disassembler is integrated into the compiler.  The "-d"
15451option invokes the disassembler  to completely disassemble an
15452input AML file, producing as output a text ASL file with the
15453extension ".dsl" (to avoid name collisions with existing .asl
15454source files.)  A future enhancement will allow the disassembler
15455to obtain the BIOS DSDT from the registry under Windows.
15456
15457Fixed a problem with the VendorShort and VendorLong resource
15458descriptors where an invalid AML sequence was created.
15459
15460Implemented a fix for BufferData term in the ASL parser.  It was
15461inadvertently defined twice, allowing invalid syntax to pass and
15462causing reduction conflicts.
15463
15464Fixed a problem where the Ones opcode could get converted to a
15465value of zero if "Ones" was used where a byte, word or dword value
15466was expected.  The 64-bit value is now truncated to the correct
15467size with the correct value.
15468
15469
15470
15471----------------------------------------
1547202 July 2002.  Summary of changes for this release.
15473
15474
154751) ACPI CA Core Subsystem Version 20020702:
15476
15477The Table Manager code has been restructured to add several new
15478features.  Tables that are not required by the core subsystem
15479(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
15480validated in any way and are returned from AcpiGetFirmwareTable if
15481requested.  The AcpiOsTableOverride interface is now called for
15482each table that is loaded by the subsystem in order to allow the
15483host to override any table it chooses.  Previously, only the DSDT
15484could be overridden.  Added one new files, tbrsdt.c and
15485tbgetall.c.
15486
15487Fixed a problem with the conversion of internal package objects to
15488external objects (when a package is returned from a control
15489method.)  The return buffer length was set to zero instead of the
15490proper length of the package object.
15491
15492Fixed a reported problem with the use of the RefOf and DeRefOf
15493operators when passing reference arguments to control methods.  A
15494new type of Reference object is used internally for references
15495produced by the RefOf operator.
15496
15497Added additional error messages in the Resource Manager to explain
15498AE_BAD_DATA errors when they occur during resource parsing.
15499
15500Split the AcpiEnableSubsystem into two primitives to enable a
15501finer granularity initialization sequence.  These two calls should
15502be called in this order: AcpiEnableSubsystem (flags),
15503AcpiInitializeObjects (flags).  The flags parameter remains the
15504same.
15505
15506
155072) Linux
15508
15509Updated the ACPI utilities module to understand the new style of
15510fully resolved package objects that are now returned from the core
15511subsystem.  This eliminates errors of the form:
15512
15513    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
15514    acpi_utils-0430 [145] acpi_evaluate_reference:
15515        Invalid element in package (not a device reference)
15516
15517The method evaluation utility uses the new buffer allocation
15518scheme instead of calling AcpiEvaluate Object twice.
15519
15520Added support for ECDT. This allows the use of the Embedded
15521
15522Controller before the namespace has been fully initialized, which
15523is necessary for ACPI 2.0 support, and for some laptops to
15524initialize properly. (Laptops using ECDT are still rare, so only
15525limited testing was performed of the added functionality.)
15526
15527Fixed memory leaks in the EC driver.
15528
15529Eliminated a brittle code structure in acpi_bus_init().
15530
15531Eliminated the acpi_evaluate() helper function in utils.c. It is
15532no longer needed since acpi_evaluate_object can optionally
15533allocate memory for the return object.
15534
15535Implemented fix for keyboard hang when getting battery readings on
15536some systems (Stephen White)
15537
15538PCI IRQ routing update (Dominik Brodowski)
15539
15540Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
15541support
15542
15543----------------------------------------
1554411 June 2002.  Summary of changes for this release.
15545
15546
155471) ACPI CA Core Subsystem Version 20020611:
15548
15549Fixed a reported problem where constants such as Zero and One
15550appearing within _PRT packages were not handled correctly within
15551the resource manager code.  Originally reported against the ASL
15552compiler because the code generator now optimizes integers to
15553their minimal AML representation (i.e. AML constants if possible.)
15554The _PRT code now handles all AML constant opcodes correctly
15555(Zero, One, Ones, Revision).
15556
15557Fixed a problem with the Concatenate operator in the AML
15558interpreter where a buffer result object was incorrectly marked as
15559not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
15560
15561All package sub-objects are now fully resolved before they are
15562returned from the external ACPI interfaces.  This means that name
15563strings are resolved to object handles, and constant operators
15564(Zero, One, Ones, Revision) are resolved to Integers.
15565
15566Implemented immediate resolution of the AML Constant opcodes
15567(Zero, One, Ones, Revision) to Integer objects upon detection
15568within the AML stream. This has simplified and reduced the
15569generated code size of the subsystem by eliminating about 10
15570switch statements for these constants (which previously were
15571contained in Reference objects.)  The complicating issues are that
15572the Zero opcode is used as a "placeholder" for unspecified
15573optional target operands and stores to constants are defined to be
15574no-ops.
15575
15576Code and Data Size: Current core subsystem library sizes are shown
15577below. These are the code and data sizes for the acpica.lib
15578produced by the Microsoft Visual C++ 6.0 compiler, and these
15579values do not include any ACPI driver or OSPM code.  The debug
15580version of the code includes the debug output trace mechanism and
15581has a larger code and data size.  Note that these values will vary
15582depending on the efficiency of the compiler and the compiler
15583options used during generation.
15584
15585  Previous Release
15586    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
15587    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
15588  Current Release:
15589    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
15590    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
15591
15592
155932) Linux
15594
15595
15596Added preliminary support for obtaining _TRA data for PCI root
15597bridges (Bjorn Helgaas).
15598
15599
156003) iASL Compiler Version X2046:
15601
15602Fixed a problem where the "_DDN" reserved name was defined to be a
15603control method with one argument.  There are no arguments, and
15604_DDN does not have to be a control method.
15605
15606Fixed a problem with the Linux version of the compiler where the
15607source lines printed with error messages were the wrong lines.
15608This turned out to be the "LF versus CR/LF" difference between
15609Windows and Unix.  This appears to be the longstanding issue
15610concerning listing output and error messages.
15611
15612Fixed a problem with the Linux version of compiler where opcode
15613names within error messages were wrong.  This was caused by a
15614slight difference in the output of the Flex tool on Linux versus
15615Windows.
15616
15617Fixed a problem with the Linux compiler where the hex output files
15618contained some garbage data caused by an internal buffer overrun.
15619
15620
15621----------------------------------------
1562217 May 2002.  Summary of changes for this release.
15623
15624
156251) ACPI CA Core Subsystem Version 20020517:
15626
15627Implemented a workaround to an BIOS bug discovered on the HP
15628OmniBook where the FADT revision number and the table size are
15629inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
15630behavior is to fallback to using only the ACPI 1.0 fields of the
15631FADT if the table is too small to be a ACPI 2.0 table as claimed
15632by the revision number.  Although this is a BIOS bug, this is a
15633case where the workaround is simple enough and with no side
15634effects, so it seemed prudent to add it.  A warning message is
15635issued, however.
15636
15637Implemented minimum size checks for the fixed-length ACPI tables -
15638- the FADT and FACS, as well as consistency checks between the
15639revision number and the table size.
15640
15641Fixed a reported problem in the table override support where the
15642new table pointer was incorrectly treated as a physical address
15643instead of a logical address.
15644
15645Eliminated the use of the AE_AML_ERROR exception and replaced it
15646with more descriptive codes.
15647
15648Fixed a problem where an exception would occur if an ASL Field was
15649defined with no named Field Units underneath it (used by some
15650index fields).
15651
15652Code and Data Size: Current core subsystem library sizes are shown
15653below.  These are the code and data sizes for the acpica.lib
15654produced by the Microsoft Visual C++ 6.0 compiler, and these
15655values do not include any ACPI driver or OSPM code.  The debug
15656version of the code includes the debug output trace mechanism and
15657has a larger code and data size.  Note that these values will vary
15658depending on the efficiency of the compiler and the compiler
15659options used during generation.
15660
15661  Previous Release
15662    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
15663    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
15664  Current Release:
15665    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
15666    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
15667
15668
15669
156702) Linux
15671
15672Much work done on ACPI init (MADT and PCI IRQ routing support).
15673(Paul D. and Dominik Brodowski)
15674
15675Fix PCI IRQ-related panic on boot (Sam Revitch)
15676
15677Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
15678
15679Fix "MHz" typo (Dominik Brodowski)
15680
15681Fix RTC year 2000 issue (Dominik Brodowski)
15682
15683Preclude multiple button proc entries (Eric Brunet)
15684
15685Moved arch-specific code out of include/platform/aclinux.h
15686
156873) iASL Compiler Version X2044:
15688
15689Implemented error checking for the string used in the EISAID macro
15690(Usually used in the definition of the _HID object.)  The code now
15691strictly enforces the PnP format - exactly 7 characters, 3
15692uppercase letters and 4 hex digits.
15693
15694If a raw string is used in the definition of the _HID object
15695(instead of the EISAID macro), the string must contain all
15696alphanumeric characters (e.g., "*PNP0011" is not allowed because
15697of the asterisk.)
15698
15699Implemented checking for invalid use of ACPI reserved names for
15700most of the name creation operators (Name, Device, Event, Mutex,
15701OperationRegion, PowerResource, Processor, and ThermalZone.)
15702Previously, this check was only performed for control methods.
15703
15704Implemented an additional check on the Name operator to emit an
15705error if a reserved name that must be implemented in ASL as a
15706control method is used.  We know that a reserved name must be a
15707method if it is defined with input arguments.
15708
15709The warning emitted when a namespace object reference is not found
15710during the cross reference phase has been changed into an error.
15711The "External" directive should be used for names defined in other
15712modules.
15713
15714
157154) Tools and Utilities
15716
15717The 16-bit tools (adump16 and aexec16) have been regenerated and
15718tested.
15719
15720Fixed a problem with the output of both acpidump and adump16 where
15721the indentation of closing parentheses and brackets was not
15722
15723aligned properly with the parent block.
15724
15725
15726----------------------------------------
1572703 May 2002.  Summary of changes for this release.
15728
15729
157301) ACPI CA Core Subsystem Version 20020503:
15731
15732Added support a new OSL interface that allows the host operating
15733
15734system software to override the DSDT found in the firmware -
15735AcpiOsTableOverride.  With this interface, the OSL can examine the
15736version of the firmware DSDT and replace it with a different one
15737if desired.
15738
15739Added new external interfaces for accessing ACPI registers from
15740device drivers and other system software - AcpiGetRegister and
15741AcpiSetRegister.  This was simply an externalization of the
15742existing AcpiHwBitRegister interfaces.
15743
15744Fixed a regression introduced in the previous build where the
15745ASL/AML CreateField operator always returned an error,
15746"destination must be a NS Node".
15747
15748Extended the maximum time (before failure) to successfully enable
15749ACPI mode to 3 seconds.
15750
15751Code and Data Size: Current core subsystem library sizes are shown
15752below.  These are the code and data sizes for the acpica.lib
15753produced by the Microsoft Visual C++ 6.0 compiler, and these
15754values do not include any ACPI driver or OSPM code.  The debug
15755version of the code includes the debug output trace mechanism and
15756has a larger code and data size.  Note that these values will vary
15757depending on the efficiency of the compiler and the compiler
15758options used during generation.
15759
15760  Previous Release
15761    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
15762    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
15763  Current Release:
15764    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
15765    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
15766
15767
157682) Linux
15769
15770Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
15771free. While 3 out of 4 of our in-house systems work fine, the last
15772one still hangs when testing the LAPIC timer.
15773
15774Renamed many files in 2.5 kernel release to omit "acpi_" from the
15775name.
15776
15777Added warning on boot for Presario 711FR.
15778
15779Sleep improvements (Pavel Machek)
15780
15781ACPI can now be built without CONFIG_PCI enabled.
15782
15783IA64: Fixed memory map functions (JI Lee)
15784
15785
157863) iASL Compiler Version X2043:
15787
15788Added support to allow the compiler to be integrated into the MS
15789VC++ development environment for one-button compilation of single
15790files or entire projects -- with error-to-source-line mapping.
15791
15792Implemented support for compile-time constant folding for the
15793Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
15794specification.  This allows the ASL writer to use expressions
15795instead of Integer/Buffer/String constants in terms that must
15796evaluate to constants at compile time and will also simplify the
15797emitted AML in any such sub-expressions that can be folded
15798(evaluated at compile-time.)  This increases the size of the
15799compiler significantly because a portion of the ACPI CA AML
15800interpreter is included within the compiler in order to pre-
15801evaluate constant expressions.
15802
15803
15804Fixed a problem with the "Unicode" ASL macro that caused the
15805compiler to fault.  (This macro is used in conjunction with the
15806_STR reserved name.)
15807
15808Implemented an AML opcode optimization to use the Zero, One, and
15809Ones opcodes where possible to further reduce the size of integer
15810constants and thus reduce the overall size of the generated AML
15811code.
15812
15813Implemented error checking for new reserved terms for ACPI version
158142.0A.
15815
15816Implemented the -qr option to display the current list of ACPI
15817reserved names known to the compiler.
15818
15819Implemented the -qc option to display the current list of ASL
15820operators that are allowed within constant expressions and can
15821therefore be folded at compile time if the operands are constants.
15822
15823
158244) Documentation
15825
15826Updated the Programmer's Reference for new interfaces, data types,
15827and memory allocation model options.
15828
15829Updated the iASL Compiler User Reference to apply new format and
15830add information about new features and options.
15831
15832----------------------------------------
1583319 April 2002.  Summary of changes for this release.
15834
158351) ACPI CA Core Subsystem Version 20020419:
15836
15837The source code base for the Core Subsystem has been completely
15838cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
15839versions.  The Lint option files used are included in the
15840/acpi/generate/lint directory.
15841
15842Implemented enhanced status/error checking across the entire
15843Hardware manager subsystem.  Any hardware errors (reported from
15844the OSL) are now bubbled up and will abort a running control
15845method.
15846
15847
15848Fixed a problem where the per-ACPI-table integer width (32 or 64)
15849was stored only with control method nodes, causing a fault when
15850non-control method code was executed during table loading.  The
15851solution implemented uses a global variable to indicate table
15852width across the entire ACPI subsystem.  Therefore, ACPI CA does
15853not support mixed integer widths across different ACPI tables
15854(DSDT, SSDT).
15855
15856Fixed a problem where NULL extended fields (X fields) in an ACPI
158572.0 ACPI FADT caused the table load to fail.  Although the
15858existing ACPI specification is a bit fuzzy on this topic, the new
15859behavior is to fall back on a ACPI 1.0 field if the corresponding
15860ACPI 2.0 X field is zero (even though the table revision indicates
15861a full ACPI 2.0 table.)  The ACPI specification will be updated to
15862clarify this issue.
15863
15864Fixed a problem with the SystemMemory operation region handler
15865where memory was always accessed byte-wise even if the AML-
15866specified access width was larger than a byte.  This caused
15867problems on systems with memory-mapped I/O.  Memory is now
15868accessed with the width specified.  On systems that do not support
15869non-aligned transfers, a check is made to guarantee proper address
15870alignment before proceeding in order to avoid an AML-caused
15871alignment fault within the kernel.
15872
15873
15874Fixed a problem with the ExtendedIrq resource where only one byte
15875of the 4-byte Irq field was extracted.
15876
15877Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
15878function was out of date and required a rewrite.
15879
15880Code and Data Size: Current core subsystem library sizes are shown
15881below.  These are the code and data sizes for the acpica.lib
15882produced by the Microsoft Visual C++ 6.0 compiler, and these
15883values do not include any ACPI driver or OSPM code.  The debug
15884version of the code includes the debug output trace mechanism and
15885has a larger code and data size.  Note that these values will vary
15886depending on the efficiency of the compiler and the compiler
15887options used during generation.
15888
15889  Previous Release
15890    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
15891    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
15892  Current Release:
15893    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
15894    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
15895
15896
158972) Linux
15898
15899PCI IRQ routing fixes (Dominik Brodowski)
15900
15901
159023) iASL Compiler Version X2042:
15903
15904Implemented an additional compile-time error check for a field
15905unit whose size + minimum access width would cause a run-time
15906access beyond the end-of-region.  Previously, only the field size
15907itself was checked.
15908
15909The Core subsystem and iASL compiler now share a common parse
15910object in preparation for compile-time evaluation of the type
159113/4/5 ASL operators.
15912
15913
15914----------------------------------------
15915Summary of changes for this release: 03_29_02
15916
159171) ACPI CA Core Subsystem Version 20020329:
15918
15919Implemented support for late evaluation of TermArg operands to
15920Buffer and Package objects.  This allows complex expressions to be
15921used in the declarations of these object types.
15922
15923Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
159241.0, if the field was larger than 32 bits, it was returned as a
15925buffer - otherwise it was returned as an integer.  In ACPI 2.0,
15926the field is returned as a buffer only if the field is larger than
1592764 bits.  The TableRevision is now considered when making this
15928conversion to avoid incompatibility with existing ASL code.
15929
15930Implemented logical addressing for AcpiOsGetRootPointer.  This
15931allows an RSDP with either a logical or physical address.  With
15932this support, the host OS can now override all ACPI tables with
15933one logical RSDP.  Includes implementation of  "typed" pointer
15934support to allow a common data type for both physical and logical
15935pointers internally.  This required a change to the
15936AcpiOsGetRootPointer interface.
15937
15938Implemented the use of ACPI 2.0 Generic Address Structures for all
15939GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
15940mapped I/O for these ACPI features.
15941
15942Initialization now ignores not only non-required tables (All
15943tables other than the FADT, FACS, DSDT, and SSDTs), but also does
15944not validate the table headers of unrecognized tables.
15945
15946Fixed a problem where a notify handler could only be
15947installed/removed on an object of type Device.  All "notify"
15948
15949objects are now supported -- Devices, Processor, Power, and
15950Thermal.
15951
15952Removed most verbosity from the ACPI_DB_INFO debug level.  Only
15953critical information is returned when this debug level is enabled.
15954
15955Code and Data Size: Current core subsystem library sizes are shown
15956below.  These are the code and data sizes for the acpica.lib
15957produced by the Microsoft Visual C++ 6.0 compiler, and these
15958values do not include any ACPI driver or OSPM code.  The debug
15959version of the code includes the debug output trace mechanism and
15960has a larger code and data size.  Note that these values will vary
15961depending on the efficiency of the compiler and the compiler
15962options used during generation.
15963
15964  Previous Release
15965    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
15966    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
15967  Current Release:
15968    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
15969    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
15970
15971
159722) Linux:
15973
15974The processor driver (acpi_processor.c) now fully supports ACPI
159752.0-based processor performance control (e.g. Intel(R)
15976SpeedStep(TM) technology) Note that older laptops that only have
15977the Intel "applet" interface are not supported through this.  The
15978'limit' and 'performance' interface (/proc) are fully functional.
15979[Note that basic policy for controlling performance state
15980transitions will be included in the next version of ospmd.]  The
15981idle handler was modified to more aggressively use C2, and PIIX4
15982errata handling underwent a complete overhaul (big thanks to
15983Dominik Brodowski).
15984
15985Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
15986based devices in the ACPI namespace are now dynamically bound
15987(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
15988This allows, among other things, ACPI to resolve bus numbers for
15989subordinate PCI bridges.
15990
15991Enhanced PCI IRQ routing to get the proper bus number for _PRT
15992entries defined underneath PCI bridges.
15993
15994Added IBM 600E to bad bios list due to invalid _ADR value for
15995PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
15996
15997In the process of adding full MADT support (e.g. IOAPIC) for IA32
15998(acpi.c, mpparse.c) -- stay tuned.
15999
16000Added back visual differentiation between fixed-feature and
16001control-method buttons in dmesg.  Buttons are also subtyped (e.g.
16002button/power/PWRF) to simplify button identification.
16003
16004We no longer use -Wno-unused when compiling debug. Please ignore
16005any "_THIS_MODULE defined but not used" messages.
16006
16007Can now shut down the system using "magic sysrq" key.
16008
16009
160103) iASL Compiler version 2041:
16011
16012Fixed a problem where conversion errors for hex/octal/decimal
16013constants were not reported.
16014
16015Implemented a fix for the General Register template Address field.
16016This field was 8 bits when it should be 64.
16017
16018Fixed a problem where errors/warnings were no longer being emitted
16019within the listing output file.
16020
16021Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
16022exactly 4 characters, alphanumeric only.
16023
16024
16025
16026
16027----------------------------------------
16028Summary of changes for this release: 03_08_02
16029
16030
160311) ACPI CA Core Subsystem Version 20020308:
16032
16033Fixed a problem with AML Fields where the use of the "AccessAny"
16034keyword could cause an interpreter error due to attempting to read
16035or write beyond the end of the parent Operation Region.
16036
16037Fixed a problem in the SystemMemory Operation Region handler where
16038an attempt was made to map memory beyond the end of the region.
16039This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
16040errors on some Linux systems.
16041
16042Fixed a problem where the interpreter/namespace "search to root"
16043algorithm was not functioning for some object types.  Relaxed the
16044internal restriction on the search to allow upsearches for all
16045external object types as well as most internal types.
16046
16047
160482) Linux:
16049
16050We now use safe_halt() macro versus individual calls to sti | hlt.
16051
16052Writing to the processor limit interface should now work. "echo 1"
16053will increase the limit, 2 will decrease, and 0 will reset to the
16054
16055default.
16056
16057
160583) ASL compiler:
16059
16060Fixed segfault on Linux version.
16061
16062
16063----------------------------------------
16064Summary of changes for this release: 02_25_02
16065
160661) ACPI CA Core Subsystem:
16067
16068
16069Fixed a problem where the GPE bit masks were not initialized
16070properly, causing erratic GPE behavior.
16071
16072Implemented limited support for multiple calling conventions.  The
16073code can be generated with either the VPL (variable parameter
16074list, or "C") convention, or the FPL (fixed parameter list, or
16075"Pascal") convention.  The core subsystem is about 3.4% smaller
16076when generated with FPL.
16077
16078
160792) Linux
16080
16081Re-add some /proc/acpi/event functionality that was lost during
16082the rewrite
16083
16084Resolved issue with /proc events for fixed-feature buttons showing
16085up as the system device.
16086
16087Fixed checks on C2/C3 latencies to be inclusive of maximum values.
16088
16089Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
16090
16091Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
16092
16093Fixed limit interface & usage to fix bugs with passive cooling
16094hysterisis.
16095
16096Restructured PRT support.
16097
16098
16099----------------------------------------
16100Summary of changes for this label: 02_14_02
16101
16102
161031) ACPI CA Core Subsystem:
16104
16105Implemented support in AcpiLoadTable to allow loading of FACS and
16106FADT tables.
16107
16108Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
16109been removed.  All 64-bit platforms should be migrated to the ACPI
161102.0 tables.  The actbl71.h header has been removed from the source
16111tree.
16112
16113All C macros defined within the subsystem have been prefixed with
16114"ACPI_" to avoid collision with other system include files.
16115
16116Removed the return value for the two AcpiOsPrint interfaces, since
16117it is never used and causes lint warnings for ignoring the return
16118value.
16119
16120Added error checking to all internal mutex acquire and release
16121calls.  Although a failure from one of these interfaces is
16122probably a fatal system error, these checks will cause the
16123immediate abort of the currently executing method or interface.
16124
16125Fixed a problem where the AcpiSetCurrentResources interface could
16126fault.  This was a side effect of the deployment of the new memory
16127allocation model.
16128
16129Fixed a couple of problems with the Global Lock support introduced
16130in the last major build.  The "common" (1.0/2.0) internal FACS was
16131being overwritten with the FACS signature and clobbering the
16132Global Lock pointer.  Also, the actual firmware FACS was being
16133unmapped after construction of the "common" FACS, preventing
16134access to the actual Global Lock field within it.  The "common"
16135internal FACS is no longer installed as an actual ACPI table; it
16136is used simply as a global.
16137
16138Code and Data Size: Current core subsystem library sizes are shown
16139below.  These are the code and data sizes for the acpica.lib
16140produced by the Microsoft Visual C++ 6.0 compiler, and these
16141values do not include any ACPI driver or OSPM code.  The debug
16142version of the code includes the debug output trace mechanism and
16143has a larger code and data size.  Note that these values will vary
16144depending on the efficiency of the compiler and the compiler
16145options used during generation.
16146
16147  Previous Release (02_07_01)
16148    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
16149    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
16150  Current Release:
16151    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
16152    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
16153
16154
161552) Linux
16156
16157Updated Linux-specific code for core macro and OSL interface
16158changes described above.
16159
16160Improved /proc/acpi/event. It now can be opened only once and has
16161proper poll functionality.
16162
16163Fixed and restructured power management (acpi_bus).
16164
16165Only create /proc "view by type" when devices of that class exist.
16166
16167Fixed "charging/discharging" bug (and others) in acpi_battery.
16168
16169Improved thermal zone code.
16170
16171
161723) ASL Compiler, version X2039:
16173
16174
16175Implemented the new compiler restriction on ASL String hex/octal
16176escapes to non-null, ASCII values.  An error results if an invalid
16177value is used.  (This will require an ACPI 2.0 specification
16178change.)
16179
16180AML object labels that are output to the optional C and ASM source
16181are now prefixed with both the ACPI table signature and table ID
16182to help guarantee uniqueness within a large BIOS project.
16183
16184
16185----------------------------------------
16186Summary of changes for this label: 02_01_02
16187
161881) ACPI CA Core Subsystem:
16189
16190ACPI 2.0 support is complete in the entire Core Subsystem and the
16191ASL compiler. All new ACPI 2.0 operators are implemented and all
16192other changes for ACPI 2.0 support are complete.  With
16193simultaneous code and data optimizations throughout the subsystem,
16194ACPI 2.0 support has been implemented with almost no additional
16195cost in terms of code and data size.
16196
16197Implemented a new mechanism for allocation of return buffers.  If
16198the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
16199be allocated on behalf of the caller.  Consolidated all return
16200buffer validation and allocation to a common procedure.  Return
16201buffers will be allocated via the primary OSL allocation interface
16202since it appears that a separate pool is not needed by most users.
16203If a separate pool is required for these buffers, the caller can
16204still use the original mechanism and pre-allocate the buffer(s).
16205
16206Implemented support for string operands within the DerefOf
16207operator.
16208
16209Restructured the Hardware and Event managers to be table driven,
16210simplifying the source code and reducing the amount of generated
16211code.
16212
16213Split the common read/write low-level ACPI register bitfield
16214procedure into a separate read and write, simplifying the code
16215considerably.
16216
16217Obsoleted the AcpiOsCallocate OSL interface.  This interface was
16218used only a handful of times and didn't have enough critical mass
16219for a separate interface.  Replaced with a common calloc procedure
16220in the core.
16221
16222Fixed a reported problem with the GPE number mapping mechanism
16223that allows GPE1 numbers to be non-contiguous with GPE0.
16224Reorganized the GPE information and shrunk a large array that was
16225originally large enough to hold info for all possible GPEs (256)
16226to simply large enough to hold all GPEs up to the largest GPE
16227number on the machine.
16228
16229Fixed a reported problem with resource structure alignment on 64-
16230bit platforms.
16231
16232Changed the AcpiEnableEvent and AcpiDisableEvent external
16233interfaces to not require any flags for the common case of
16234enabling/disabling a GPE.
16235
16236Implemented support to allow a "Notify" on a Processor object.
16237
16238Most TBDs in comments within the source code have been resolved
16239and eliminated.
16240
16241
16242Fixed a problem in the interpreter where a standalone parent
16243prefix (^) was not handled correctly in the interpreter and
16244debugger.
16245
16246Removed obsolete and unnecessary GPE save/restore code.
16247
16248Implemented Field support in the ASL Load operator.  This allows a
16249table to be loaded from a named field, in addition to loading a
16250table directly from an Operation Region.
16251
16252Implemented timeout and handle support in the external Global Lock
16253interfaces.
16254
16255Fixed a problem in the AcpiDump utility where pathnames were no
16256longer being generated correctly during the dump of named objects.
16257
16258Modified the AML debugger to give a full display of if/while
16259predicates instead of just one AML opcode at a time.  (The
16260predicate can have several nested ASL statements.)  The old method
16261was confusing during single stepping.
16262
16263Code and Data Size: Current core subsystem library sizes are shown
16264below. These are the code and data sizes for the acpica.lib
16265produced by the Microsoft Visual C++ 6.0 compiler, and these
16266values do not include any ACPI driver or OSPM code.  The debug
16267version of the code includes the debug output trace mechanism and
16268has a larger code and data size.  Note that these values will vary
16269depending on the efficiency of the compiler and the compiler
16270options used during generation.
16271
16272  Previous Release (12_18_01)
16273     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
16274     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
16275   Current Release:
16276     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
16277     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
16278
162792) Linux
16280
16281 Implemented fix for PIIX reverse throttling errata (Processor
16282driver)
16283
16284Added new Limit interface (Processor and Thermal drivers)
16285
16286New thermal policy (Thermal driver)
16287
16288Many updates to /proc
16289
16290Battery "low" event support (Battery driver)
16291
16292Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
16293
16294IA32 - IA64 initialization unification, no longer experimental
16295
16296Menuconfig options redesigned
16297
162983) ASL Compiler, version X2037:
16299
16300Implemented several new output features to simplify integration of
16301AML code into  firmware: 1) Output the AML in C source code with
16302labels for each named ASL object.  The    original ASL source code
16303is interleaved as C comments. 2) Output the AML in ASM source code
16304with labels and interleaved ASL    source. 3) Output the AML in
16305raw hex table form, in either C or ASM.
16306
16307Implemented support for optional string parameters to the
16308LoadTable operator.
16309
16310Completed support for embedded escape sequences within string
16311literals.  The compiler now supports all single character escapes
16312as well as the Octal and Hex escapes.  Note: the insertion of a
16313null byte into a string literal (via the hex/octal escape) causes
16314the string to be immediately terminated.  A warning is issued.
16315
16316Fixed a problem where incorrect AML was generated for the case
16317where an ASL namepath consists of a single parent prefix (
16318
16319) with no trailing name segments.
16320
16321The compiler has been successfully generated with a 64-bit C
16322compiler.
16323
16324
16325
16326
16327----------------------------------------
16328Summary of changes for this label: 12_18_01
16329
163301) Linux
16331
16332Enhanced blacklist with reason and severity fields. Any table's
16333signature may now be used to identify a blacklisted system.
16334
16335Call _PIC control method to inform the firmware which interrupt
16336model the OS is using. Turn on any disabled link devices.
16337
16338Cleaned up busmgr /proc error handling (Andreas Dilger)
16339
16340 2) ACPI CA Core Subsystem:
16341
16342Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
16343while loop)
16344
16345Completed implementation of the ACPI 2.0 "Continue",
16346"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
16347operators.  All new ACPI 2.0 operators are now implemented in both
16348the ASL compiler and the AML interpreter.  The only remaining ACPI
163492.0 task is support for the String data type in the DerefOf
16350operator.  Fixed a problem with AcquireMutex where the status code
16351was lost if the caller had to actually wait for the mutex.
16352
16353Increased the maximum ASL Field size from 64K bits to 4G bits.
16354
16355Completed implementation of the external Global Lock interfaces --
16356AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
16357Handler parameters were added.
16358
16359Completed another pass at removing warnings and issues when
16360compiling with 64-bit compilers.  The code now compiles cleanly
16361with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
16362add and subtract (diff) macros have changed considerably.
16363
16364
16365Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1636664-bit platforms, 32-bits on all others.  This type is used
16367wherever memory allocation and/or the C sizeof() operator is used,
16368and affects the OSL memory allocation interfaces AcpiOsAllocate
16369and AcpiOsCallocate.
16370
16371Implemented sticky user breakpoints in the AML debugger.
16372
16373Code and Data Size: Current core subsystem library sizes are shown
16374below. These are the code and data sizes for the acpica.lib
16375produced by the Microsoft Visual C++ 6.0 compiler, and these
16376values do not include any ACPI driver or OSPM code.  The debug
16377version of the code includes the debug output trace mechanism and
16378has a larger code and data size. Note that these values will vary
16379depending on the efficiency of the compiler and the compiler
16380options used during generation.
16381
16382  Previous Release (12_05_01)
16383     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
16384     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
16385   Current Release:
16386     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
16387     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
16388
16389 3) ASL Compiler, version X2034:
16390
16391Now checks for (and generates an error if detected) the use of a
16392Break or Continue statement without an enclosing While statement.
16393
16394
16395Successfully generated the compiler with the Intel 64-bit C
16396compiler.
16397
16398 ----------------------------------------
16399Summary of changes for this label: 12_05_01
16400
16401 1) ACPI CA Core Subsystem:
16402
16403The ACPI 2.0 CopyObject operator is fully implemented.  This
16404operator creates a new copy of an object (and is also used to
16405bypass the "implicit conversion" mechanism of the Store operator.)
16406
16407The ACPI 2.0 semantics for the SizeOf operator are fully
16408implemented.  The change is that performing a SizeOf on a
16409reference object causes an automatic dereference of the object to
16410tha actual value before the size is evaluated. This behavior was
16411undefined in ACPI 1.0.
16412
16413The ACPI 2.0 semantics for the Extended IRQ resource descriptor
16414have been implemented.  The interrupt polarity and mode are now
16415independently set.
16416
16417Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
16418appearing in Package objects were not properly converted to
16419integers when the internal Package was converted to an external
16420object (via the AcpiEvaluateObject interface.)
16421
16422Fixed a problem with the namespace object deletion mechanism for
16423objects created by control methods.  There were two parts to this
16424problem: 1) Objects created during the initialization phase method
16425parse were not being deleted, and 2) The object owner ID mechanism
16426to track objects was broken.
16427
16428Fixed a problem where the use of the ASL Scope operator within a
16429control method would result in an invalid opcode exception.
16430
16431Fixed a problem introduced in the previous label where the buffer
16432length required for the _PRT structure was not being returned
16433correctly.
16434
16435Code and Data Size: Current core subsystem library sizes are shown
16436below. These are the code and data sizes for the acpica.lib
16437produced by the Microsoft Visual C++ 6.0 compiler, and these
16438values do not include any ACPI driver or OSPM code.  The debug
16439version of the code includes the debug output trace mechanism and
16440has a larger code and data size.  Note that these values will vary
16441depending on the efficiency of the compiler and the compiler
16442options used during generation.
16443
16444  Previous Release (11_20_01)
16445     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
16446     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
16447
16448  Current Release:
16449     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
16450     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
16451
16452 2) Linux:
16453
16454Updated all files to apply cleanly against 2.4.16.
16455
16456Added basic PCI Interrupt Routing Table (PRT) support for IA32
16457(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
16458version supports both static and dyanmic PRT entries, but dynamic
16459entries are treated as if they were static (not yet
16460reconfigurable).  Architecture- specific code to use this data is
16461absent on IA32 but should be available shortly.
16462
16463Changed the initialization sequence to start the ACPI interpreter
16464(acpi_init) prior to initialization of the PCI driver (pci_init)
16465in init/main.c.  This ordering is required to support PRT and
16466facilitate other (future) enhancement.  A side effect is that the
16467ACPI bus driver and certain device drivers can no longer be loaded
16468as modules.
16469
16470Modified the 'make menuconfig' options to allow PCI Interrupt
16471Routing support to be included without the ACPI Bus and other
16472device drivers.
16473
16474 3) ASL Compiler, version X2033:
16475
16476Fixed some issues with the use of the new CopyObject and
16477DataTableRegion operators.  Both are fully functional.
16478
16479 ----------------------------------------
16480Summary of changes for this label: 11_20_01
16481
16482 20 November 2001.  Summary of changes for this release.
16483
16484 1) ACPI CA Core Subsystem:
16485
16486Updated Index support to match ACPI 2.0 semantics.  Storing a
16487Integer, String, or Buffer to an Index of a Buffer will store only
16488the least-significant byte of the source to the Indexed buffer
16489byte.  Multiple writes are not performed.
16490
16491Fixed a problem where the access type used in an AccessAs ASL
16492operator was not recorded correctly into the field object.
16493
16494Fixed a problem where ASL Event objects were created in a
16495signalled state. Events are now created in an unsignalled state.
16496
16497The internal object cache is now purged after table loading and
16498initialization to reduce the use of dynamic kernel memory -- on
16499the assumption that object use is greatest during the parse phase
16500of the entire table (versus the run-time use of individual control
16501methods.)
16502
16503ACPI 2.0 variable-length packages are now fully operational.
16504
16505Code and Data Size: Code and Data optimizations have permitted new
16506feature development with an actual reduction in the library size.
16507Current core subsystem library sizes are shown below.  These are
16508the code and data sizes for the acpica.lib produced by the
16509Microsoft Visual C++ 6.0 compiler, and these values do not include
16510any ACPI driver or OSPM code.  The debug version of the code
16511includes the debug output trace mechanism and has a larger code
16512and data size.  Note that these values will vary depending on the
16513efficiency of the compiler and the compiler options used during
16514generation.
16515
16516  Previous Release (11_09_01):
16517     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
16518     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
16519
16520  Current Release:
16521     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
16522     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
16523
16524 2) Linux:
16525
16526Enhanced the ACPI boot-time initialization code to allow the use
16527of Local APIC tables for processor enumeration on IA-32, and to
16528pave the way for a fully MPS-free boot (on SMP systems) in the
16529near future.  This functionality replaces
16530arch/i386/kernel/acpitables.c, which was introduced in an earlier
165312.4.15-preX release.  To enable this feature you must add
16532"acpi_boot=on" to the kernel command line -- see the help entry
16533for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
16534the works...
16535
16536Restructured the configuration options to allow boot-time table
16537parsing support without inclusion of the ACPI Interpreter (and
16538other) code.
16539
16540NOTE: This release does not include fixes for the reported events,
16541power-down, and thermal passive cooling issues (coming soon).
16542
16543 3) ASL Compiler:
16544
16545Added additional typechecking for Fields within restricted access
16546Operation Regions.  All fields within EC and CMOS regions must be
16547declared with ByteAcc. All fields withing SMBus regions must be
16548declared with the BufferAcc access type.
16549
16550Fixed a problem where the listing file output of control methods
16551no longer interleaved the actual AML code with the ASL source
16552code.
16553
16554
16555
16556
16557----------------------------------------
16558Summary of changes for this label: 11_09_01
16559
165601) ACPI CA Core Subsystem:
16561
16562Implemented ACPI 2.0-defined support for writes to fields with a
16563Buffer, String, or Integer source operand that is smaller than the
16564target field. In these cases, the source operand is zero-extended
16565to fill the target field.
16566
16567Fixed a problem where a Field starting bit offset (within the
16568parent operation region) was calculated incorrectly if the
16569
16570alignment of the field differed from the access width.  This
16571affected CreateWordField, CreateDwordField, CreateQwordField, and
16572possibly other fields that use the "AccessAny" keyword.
16573
16574Fixed a problem introduced in the 11_02_01 release where indirect
16575stores through method arguments did not operate correctly.
16576
165772) Linux:
16578
16579Implemented boot-time ACPI table parsing support
16580(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
16581facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
16582legacy BIOS interfaces (e.g. MPS) for the configuration of system
16583processors, memory, and interrupts during setup_arch().  Note that
16584this patch does not include the required architecture-specific
16585changes required to apply this information -- subsequent patches
16586will be posted for both IA32 and IA64 to achieve this.
16587
16588Added low-level sleep support for IA32 platforms, courtesy of Pat
16589Mochel. This allows IA32 systems to transition to/from various
16590sleeping states (e.g. S1, S3), although the lack of a centralized
16591driver model and power-manageable drivers will prevent its
16592(successful) use on most systems.
16593
16594Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
16595submenu, unified IA32 and IA64 options, added new "Boot using ACPI
16596tables" option, etc.
16597
16598Increased the default timeout for the EC driver from 1ms to 10ms
16599(1000 cycles of 10us) to try to address AE_TIME errors during EC
16600transactions.
16601
16602 ----------------------------------------
16603Summary of changes for this label: 11_02_01
16604
166051) ACPI CA Core Subsystem:
16606
16607ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
16608(QWordAcc keyword). All ACPI 2.0 64-bit support is now
16609implemented.
16610
16611OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
16612changes to support ACPI 2.0 Qword field access.  Read/Write
16613PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
16614accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
16615the value parameter for the address space handler interface is now
16616an ACPI_INTEGER.  OSL implementations of these interfaces must now
16617handle the case where the Width parameter is 64.
16618
16619Index Fields: Fixed a problem where unaligned bit assembly and
16620disassembly for IndexFields was not supported correctly.
16621
16622Index and Bank Fields:  Nested Index and Bank Fields are now
16623supported. During field access, a check is performed to ensure
16624that the value written to an Index or Bank register is not out of
16625the range of the register.  The Index (or Bank) register is
16626written before each access to the field data. Future support will
16627include allowing individual IndexFields to be wider than the
16628DataRegister width.
16629
16630Fields: Fixed a problem where the AML interpreter was incorrectly
16631attempting to write beyond the end of a Field/OpRegion.  This was
16632a boundary case that occurred when a DWORD field was written to a
16633BYTE access OpRegion, forcing multiple writes and causing the
16634interpreter to write one datum too many.
16635
16636Fields: Fixed a problem with Field/OpRegion access where the
16637starting bit address of a field was incorrectly calculated if the
16638current access type was wider than a byte (WordAcc, DwordAcc, or
16639QwordAcc).
16640
16641Fields: Fixed a problem where forward references to individual
16642FieldUnits (individual Field names within a Field definition) were
16643not resolved during the AML table load.
16644
16645Fields: Fixed a problem where forward references from a Field
16646definition to the parent Operation Region definition were not
16647resolved during the AML table load.
16648
16649Fields: Duplicate FieldUnit names within a scope are now detected
16650during AML table load.
16651
16652Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
16653returned an incorrect name for the root node.
16654
16655Code and Data Size: Code and Data optimizations have permitted new
16656feature development with an actual reduction in the library size.
16657Current core subsystem library sizes are shown below.  These are
16658the code and data sizes for the acpica.lib produced by the
16659Microsoft Visual C++ 6.0 compiler, and these values do not include
16660any ACPI driver or OSPM code.  The debug version of the code
16661includes the debug output trace mechanism and has a larger code
16662and data size.  Note that these values will vary depending on the
16663efficiency of the compiler and the compiler options used during
16664generation.
16665
16666  Previous Release (10_18_01):
16667     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
16668     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
16669
16670  Current Release:
16671     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
16672     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
16673
16674 2) Linux:
16675
16676Improved /proc processor output (Pavel Machek) Re-added
16677MODULE_LICENSE("GPL") to all modules.
16678
16679 3) ASL Compiler version X2030:
16680
16681Duplicate FieldUnit names within a scope are now detected and
16682flagged as errors.
16683
16684 4) Documentation:
16685
16686Programmer Reference updated to reflect OSL and address space
16687handler interface changes described above.
16688
16689----------------------------------------
16690Summary of changes for this label: 10_18_01
16691
16692ACPI CA Core Subsystem:
16693
16694Fixed a problem with the internal object reference count mechanism
16695that occasionally caused premature object deletion. This resolves
16696all of the outstanding problem reports where an object is deleted
16697in the middle of an interpreter evaluation.  Although this problem
16698only showed up in rather obscure cases, the solution to the
16699problem involved an adjustment of all reference counts involving
16700objects attached to namespace nodes.
16701
16702Fixed a problem with Field support in the interpreter where
16703writing to an aligned field whose length is an exact multiple (2
16704or greater) of the field access granularity would cause an attempt
16705to write beyond the end of the field.
16706
16707The top level AML opcode execution functions within the
16708interpreter have been renamed with a more meaningful and
16709consistent naming convention.  The modules exmonad.c and
16710exdyadic.c were eliminated.  New modules are exoparg1.c,
16711exoparg2.c, exoparg3.c, and exoparg6.c.
16712
16713Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
16714
16715Fixed a problem where the AML debugger was causing some internal
16716objects to not be deleted during subsystem termination.
16717
16718Fixed a problem with the external AcpiEvaluateObject interface
16719where the subsystem would fault if the named object to be
16720evaluated refered to a constant such as Zero, Ones, etc.
16721
16722Fixed a problem with IndexFields and BankFields where the
16723subsystem would fault if the index, data, or bank registers were
16724not defined in the same scope as the field itself.
16725
16726Added printf format string checking for compilers that support
16727this feature.  Corrected more than 50 instances of issues with
16728format specifiers within invocations of ACPI_DEBUG_PRINT
16729throughout the core subsystem code.
16730
16731The ASL "Revision" operator now returns the ACPI support level
16732implemented in the core - the value "2" since the ACPI 2.0 support
16733is more than 50% implemented.
16734
16735Enhanced the output of the AML debugger "dump namespace" command
16736to output in a more human-readable form.
16737
16738Current core subsystem library code sizes are shown below.  These
16739
16740are the code and data sizes for the acpica.lib produced by the
16741Microsoft Visual C++ 6.0 compiler, and these values do not include
16742any ACPI driver or OSPM code.  The debug version of the code
16743includes the full debug trace mechanism -- leading to a much
16744
16745larger code and data size.  Note that these values will vary
16746depending on the efficiency of the compiler and the compiler
16747options used during generation.
16748
16749     Previous Label (09_20_01):
16750     Non-Debug Version:    65K Code,     5K Data,     70K Total
16751     Debug Version:       138K Code,    58K Data,    196K Total
16752
16753     This Label:
16754
16755     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
16756     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
16757
16758Linux:
16759
16760Implemented a "Bad BIOS Blacklist" to track machines that have
16761known ASL/AML problems.
16762
16763Enhanced the /proc interface for the thermal zone driver and added
16764support for _HOT (the critical suspend trip point).  The 'info'
16765file now includes threshold/policy information, and allows setting
16766of _SCP (cooling preference) and _TZP (polling frequency) values
16767to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
16768frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
16769preference to the passive/quiet mode (if supported by the ASL).
16770
16771Implemented a workaround for a gcc bug that resuted in an OOPs
16772when loading the control method battery driver.
16773
16774 ----------------------------------------
16775Summary of changes for this label: 09_20_01
16776
16777 ACPI CA Core Subsystem:
16778
16779The AcpiEnableEvent and AcpiDisableEvent interfaces have been
16780modified to allow individual GPE levels to be flagged as wake-
16781enabled (i.e., these GPEs are to remain enabled when the platform
16782sleeps.)
16783
16784The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
16785support wake-enabled GPEs.  This means that upon entering the
16786sleep state, all GPEs that are not wake-enabled are disabled.
16787When leaving the sleep state, these GPEs are reenabled.
16788
16789A local double-precision divide/modulo module has been added to
16790enhance portability to OS kernels where a 64-bit math library is
16791not available.  The new module is "utmath.c".
16792
16793Several optimizations have been made to reduce the use of CPU
16794stack.  Originally over 2K, the maximum stack usage is now below
167952K at 1860  bytes (1.82k)
16796
16797Fixed a problem with the AcpiGetFirmwareTable interface where the
16798root table pointer was not mapped into a logical address properly.
16799
16800Fixed a problem where a NULL pointer was being dereferenced in the
16801interpreter code for the ASL Notify operator.
16802
16803Fixed a problem where the use of the ASL Revision operator
16804returned an error. This operator now returns the current version
16805of the ACPI CA core subsystem.
16806
16807Fixed a problem where objects passed as control method parameters
16808to AcpiEvaluateObject were always deleted at method termination.
16809However, these objects may end up being stored into the namespace
16810by the called method.  The object reference count mechanism was
16811applied to these objects instead of a force delete.
16812
16813Fixed a problem where static strings or buffers (contained in the
16814AML code) that are declared as package elements within the ASL
16815code could cause a fault because the interpreter would attempt to
16816delete them.  These objects are now marked with the "static
16817object" flag to prevent any attempt to delete them.
16818
16819Implemented an interpreter optimization to use operands directly
16820from the state object instead of extracting the operands to local
16821variables.  This reduces stack use and code size, and improves
16822performance.
16823
16824The module exxface.c was eliminated as it was an unnecessary extra
16825layer of code.
16826
16827Current core subsystem library code sizes are shown below.  These
16828are the code and data sizes for the acpica.lib produced by the
16829Microsoft Visual C++ 6.0 compiler, and these values do not include
16830any ACPI driver or OSPM code.  The debug version of the code
16831includes the full debug trace mechanism -- leading to a much
16832larger code and data size.  Note that these values will vary
16833depending on the efficiency of the compiler and the compiler
16834options used during generation.
16835
16836  Non-Debug Version:  65K Code,   5K Data,   70K Total
16837(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
16838Total  (Previously 195K)
16839
16840Linux:
16841
16842Support for ACPI 2.0 64-bit integers has been added.   All ACPI
16843Integer objects are now 64 bits wide
16844
16845All Acpi data types and structures are now in lower case.  Only
16846Acpi macros are upper case for differentiation.
16847
16848 Documentation:
16849
16850Changes to the external interfaces as described above.
16851
16852 ----------------------------------------
16853Summary of changes for this label: 08_31_01
16854
16855 ACPI CA Core Subsystem:
16856
16857A bug with interpreter implementation of the ASL Divide operator
16858was found and fixed.  The implicit function return value (not the
16859explicit store operands) was returning the remainder instead of
16860the quotient.  This was a longstanding bug and it fixes several
16861known outstanding issues on various platforms.
16862
16863The ACPI_DEBUG_PRINT and function trace entry/exit macros have
16864been further optimized for size.  There are 700 invocations of the
16865DEBUG_PRINT macro alone, so each optimization reduces the size of
16866the debug version of the subsystem significantly.
16867
16868A stack trace mechanism has been implemented.  The maximum stack
16869usage is about 2K on 32-bit platforms.  The debugger command "stat
16870stack" will display the current maximum stack usage.
16871
16872All public symbols and global variables within the subsystem are
16873now prefixed with the string "Acpi".  This keeps all of the
16874symbols grouped together in a kernel map, and avoids conflicts
16875with other kernel subsystems.
16876
16877Most of the internal fixed lookup tables have been moved into the
16878code segment via the const operator.
16879
16880Several enhancements have been made to the interpreter to both
16881reduce the code size and improve performance.
16882
16883Current core subsystem library code sizes are shown below.  These
16884are the code and data sizes for the acpica.lib produced by the
16885Microsoft Visual C++ 6.0 compiler, and these values do not include
16886any ACPI driver or OSPM code.  The debug version of the code
16887includes the full debug trace mechanism which contains over 700
16888invocations of the DEBUG_PRINT macro, 500 function entry macro
16889invocations, and over 900 function exit macro invocations --
16890leading to a much larger code and data size.  Note that these
16891values will vary depending on the efficiency of the compiler and
16892the compiler options used during generation.
16893
16894        Non-Debug Version:  64K Code,   5K Data,   69K Total
16895Debug Version:     137K Code,  58K Data,  195K Total
16896
16897 Linux:
16898
16899Implemented wbinvd() macro, pending a kernel-wide definition.
16900
16901Fixed /proc/acpi/event to handle poll() and short reads.
16902
16903 ASL Compiler, version X2026:
16904
16905Fixed a problem introduced in the previous label where the AML
16906
16907code emitted for package objects produced packages with zero
16908length.
16909
16910 ----------------------------------------
16911Summary of changes for this label: 08_16_01
16912
16913ACPI CA Core Subsystem:
16914
16915The following ACPI 2.0 ASL operators have been implemented in the
16916AML interpreter (These are already supported by the Intel ASL
16917compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
16918ToBuffer.  Support for 64-bit AML constants is implemented in the
16919AML parser, debugger, and disassembler.
16920
16921The internal memory tracking mechanism (leak detection code) has
16922been upgraded to reduce the memory overhead (a separate tracking
16923block is no longer allocated for each memory allocation), and now
16924supports all of the internal object caches.
16925
16926The data structures and code for the internal object caches have
16927been coelesced and optimized so that there is a single cache and
16928memory list data structure and a single group of functions that
16929implement generic cache management.  This has reduced the code
16930size in both the debug and release versions of the subsystem.
16931
16932The DEBUG_PRINT macro(s) have been optimized for size and replaced
16933by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
16934different, because it generates a single call to an internal
16935function.  This results in a savings of about 90 bytes per
16936invocation, resulting in an overall code and data savings of about
1693716% in the debug version of the subsystem.
16938
16939 Linux:
16940
16941Fixed C3 disk corruption problems and re-enabled C3 on supporting
16942machines.
16943
16944Integrated low-level sleep code by Patrick Mochel.
16945
16946Further tweaked source code Linuxization.
16947
16948Other minor fixes.
16949
16950 ASL Compiler:
16951
16952Support for ACPI 2.0 variable length packages is fixed/completed.
16953
16954Fixed a problem where the optional length parameter for the ACPI
169552.0 ToString operator.
16956
16957Fixed multiple extraneous error messages when a syntax error is
16958detected within the declaration line of a control method.
16959
16960 ----------------------------------------
16961Summary of changes for this label: 07_17_01
16962
16963ACPI CA Core Subsystem:
16964
16965Added a new interface named AcpiGetFirmwareTable to obtain any
16966ACPI table via the ACPI signature.  The interface can be called at
16967any time during kernel initialization, even before the kernel
16968virtual memory manager is initialized and paging is enabled.  This
16969allows kernel subsystems to obtain ACPI tables very early, even
16970before the ACPI CA subsystem is initialized.
16971
16972Fixed a problem where Fields defined with the AnyAcc attribute
16973could be resolved to the incorrect address under the following
16974conditions: 1) the field width is larger than 8 bits and 2) the
16975parent operation region is not defined on a DWORD boundary.
16976
16977Fixed a problem where the interpreter is not being locked during
16978namespace initialization (during execution of the _INI control
16979methods), causing an error when an attempt is made to release it
16980later.
16981
16982ACPI 2.0 support in the AML Interpreter has begun and will be
16983ongoing throughout the rest of this year.  In this label, The Mod
16984operator is implemented.
16985
16986Added a new data type to contain full PCI addresses named
16987ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
16988and Function values.
16989
16990 Linux:
16991
16992Enhanced the Linux version of the source code to change most
16993capitalized ACPI type names to lowercase. For example, all
16994instances of ACPI_STATUS are changed to acpi_status.  This will
16995result in a large diff, but the change is strictly cosmetic and
16996aligns the CA code closer to the Linux coding standard.
16997
16998OSL Interfaces:
16999
17000The interfaces to the PCI configuration space have been changed to
17001add the PCI Segment number and to split the single 32-bit combined
17002DeviceFunction field into two 16-bit fields.  This was
17003accomplished by moving the four values that define an address in
17004PCI configuration space (segment, bus, device, and function) to
17005the new ACPI_PCI_ID structure.
17006
17007The changes to the PCI configuration space interfaces led to a
17008reexamination of the complete set of address space access
17009interfaces for PCI, I/O, and Memory.  The previously existing 18
17010interfaces have proven difficult to maintain (any small change
17011must be propagated across at least 6 interfaces) and do not easily
17012allow for future expansion to 64 bits if necessary.  Also, on some
17013systems, it would not be appropriate to demultiplex the access
17014width (8, 16, 32,or 64) before calling the OSL if the
17015corresponding native OS interfaces contain a similar access width
17016parameter.  For these reasons, the 18 address space interfaces
17017have been replaced by these 6 new ones:
17018
17019AcpiOsReadPciConfiguration
17020AcpiOsWritePciConfiguration
17021AcpiOsReadMemory
17022AcpiOsWriteMemory
17023AcpiOsReadPort
17024AcpiOsWritePort
17025
17026Added a new interface named AcpiOsGetRootPointer to allow the OSL
17027to perform the platform and/or OS-specific actions necessary to
17028obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
17029interface will simply call down to the CA core to perform the low-
17030memory search for the table.  On IA-64, the RSDP is obtained from
17031EFI.  Migrating this interface to the OSL allows the CA core to
17032
17033remain OS and platform independent.
17034
17035Added a new interface named AcpiOsSignal to provide a generic
17036"function code and pointer" interface for various miscellaneous
17037signals and notifications that must be made to the host OS.   The
17038first such signals are intended to support the ASL Fatal and
17039Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
17040interface has been obsoleted.
17041
17042The definition of the AcpiFormatException interface has been
17043changed to simplify its use.  The caller no longer must supply a
17044buffer to the call; A pointer to a const string is now returned
17045directly.  This allows the call to be easily used in printf
17046statements, etc. since the caller does not have to manage a local
17047buffer.
17048
17049
17050 ASL Compiler, Version X2025:
17051
17052The ACPI 2.0 Switch/Case/Default operators have been implemented
17053and are fully functional.  They will work with all ACPI 1.0
17054interpreters, since the operators are simply translated to If/Else
17055pairs.
17056
17057The ACPI 2.0 ElseIf operator is implemented and will also work
17058with 1.0 interpreters, for the same reason.
17059
17060Implemented support for ACPI 2.0 variable-length packages.  These
17061packages have a separate opcode, and their size is determined by
17062the interpreter at run-time.
17063
17064Documentation The ACPI CA Programmer Reference has been updated to
17065reflect the new interfaces and changes to existing interfaces.
17066
17067 ------------------------------------------
17068Summary of changes for this label: 06_15_01
17069
17070 ACPI CA Core Subsystem:
17071
17072Fixed a problem where a DWORD-accessed field within a Buffer
17073object would get its byte address inadvertently rounded down to
17074the nearest DWORD.  Buffers are always Byte-accessible.
17075
17076 ASL Compiler, version X2024:
17077
17078Fixed a problem where the Switch() operator would either fault or
17079hang the compiler.  Note however, that the AML code for this ACPI
170802.0 operator is not yet implemented.
17081
17082Compiler uses the new AcpiOsGetTimer interface to obtain compile
17083timings.
17084
17085Implementation of the CreateField operator automatically converts
17086a reference to a named field within a resource descriptor from a
17087byte offset to a bit offset if required.
17088
17089Added some missing named fields from the resource descriptor
17090support. These are the names that are automatically created by the
17091compiler to reference fields within a descriptor.  They are only
17092valid at compile time and are not passed through to the AML
17093interpreter.
17094
17095Resource descriptor named fields are now typed as Integers and
17096subject to compile-time typechecking when used in expressions.
17097
17098 ------------------------------------------
17099Summary of changes for this label: 05_18_01
17100
17101 ACPI CA Core Subsystem:
17102
17103Fixed a couple of problems in the Field support code where bits
17104from adjacent fields could be returned along with the proper field
17105bits. Restructured the field support code to improve performance,
17106readability and maintainability.
17107
17108New DEBUG_PRINTP macro automatically inserts the procedure name
17109into the output, saving hundreds of copies of procedure name
17110strings within the source, shrinking the memory footprint of the
17111debug version of the core subsystem.
17112
17113 Source Code Structure:
17114
17115The source code directory tree was restructured to reflect the
17116current organization of the component architecture.  Some files
17117and directories have been moved and/or renamed.
17118
17119 Linux:
17120
17121Fixed leaking kacpidpc processes.
17122
17123Fixed queueing event data even when /proc/acpi/event is not
17124opened.
17125
17126 ASL Compiler, version X2020:
17127
17128Memory allocation performance enhancement - over 24X compile time
17129improvement on large ASL files.  Parse nodes and namestring
17130buffers are now allocated from a large internal compiler buffer.
17131
17132The temporary .SRC file is deleted unless the "-s" option is
17133specified
17134
17135The "-d" debug output option now sends all output to the .DBG file
17136instead of the console.
17137
17138"External" second parameter is now optional
17139
17140"ElseIf" syntax now properly allows the predicate
17141
17142Last operand to "Load" now recognized as a Target operand
17143
17144Debug object can now be used anywhere as a normal object.
17145
17146ResourceTemplate now returns an object of type BUFFER
17147
17148EISAID now returns an object of type INTEGER
17149
17150"Index" now works with a STRING operand
17151
17152"LoadTable" now accepts optional parameters
17153
17154"ToString" length parameter is now optional
17155
17156"Interrupt (ResourceType," parse error fixed.
17157
17158"Register" with a user-defined region space parse error fixed
17159
17160Escaped backslash at the end of a string ("\\") scan/parse error
17161fixed
17162
17163"Revision" is now an object of type INTEGER.
17164
17165
17166
17167------------------------------------------
17168Summary of changes for this label: 05_02_01
17169
17170Linux:
17171
17172/proc/acpi/event now blocks properly.
17173
17174Removed /proc/sys/acpi. You can still dump your DSDT from
17175/proc/acpi/dsdt.
17176
17177 ACPI CA Core Subsystem:
17178
17179Fixed a problem introduced in the previous label where some of the
17180"small" resource descriptor types were not recognized.
17181
17182Improved error messages for the case where an ASL Field is outside
17183the range of the parent operation region.
17184
17185 ASL Compiler, version X2018:
17186
17187
17188Added error detection for ASL Fields that extend beyond the length
17189of the parent operation region (only if the length of the region
17190is known at compile time.)  This includes fields that have a
17191minimum access width that is smaller than the parent region, and
17192individual field units that are partially or entirely beyond the
17193extent of the parent.
17194
17195
17196
17197------------------------------------------
17198Summary of changes for this label: 04_27_01
17199
17200 ACPI CA Core Subsystem:
17201
17202Fixed a problem where the namespace mutex could be released at the
17203wrong time during execution of AcpiRemoveAddressSpaceHandler.
17204
17205Added optional thread ID output for debug traces, to simplify
17206debugging of multiple threads.  Added context switch notification
17207when the debug code realizes that a different thread is now
17208executing ACPI code.
17209
17210Some additional external data types have been prefixed with the
17211string "ACPI_" for consistency.  This may effect existing code.
17212The data types affected are the external callback typedefs - e.g.,
17213
17214WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
17215
17216 Linux:
17217
17218Fixed an issue with the OSL semaphore implementation where a
17219thread was waking up with an error from receiving a SIGCHLD
17220signal.
17221
17222Linux version of ACPI CA now uses the system C library for string
17223manipulation routines instead of a local implementation.
17224
17225Cleaned up comments and removed TBDs.
17226
17227 ASL Compiler, version X2017:
17228
17229Enhanced error detection and reporting for all file I/O
17230operations.
17231
17232 Documentation:
17233
17234Programmer Reference updated to version 1.06.
17235
17236
17237
17238------------------------------------------
17239Summary of changes for this label: 04_13_01
17240
17241 ACPI CA Core Subsystem:
17242
17243Restructured support for BufferFields and RegionFields.
17244BankFields support is now fully operational.  All known 32-bit
17245limitations on field sizes have been removed.  Both BufferFields
17246and (Operation) RegionFields are now supported by the same field
17247management code.
17248
17249Resource support now supports QWORD address and IO resources. The
1725016/32/64 bit address structures and the Extended IRQ structure
17251have been changed to properly handle Source Resource strings.
17252
17253A ThreadId of -1 is now used to indicate a "mutex not acquired"
17254condition internally and must never be returned by AcpiOsThreadId.
17255This reserved value was changed from 0 since Unix systems allow a
17256thread ID of 0.
17257
17258Linux:
17259
17260Driver code reorganized to enhance portability
17261
17262Added a kernel configuration option to control ACPI_DEBUG
17263
17264Fixed the EC driver to honor _GLK.
17265
17266ASL Compiler, version X2016:
17267
17268Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
17269address space was set to 0, not 0x7f as it should be.
17270
17271 ------------------------------------------
17272Summary of changes for this label: 03_13_01
17273
17274 ACPI CA Core Subsystem:
17275
17276During ACPI initialization, the _SB_._INI method is now run if
17277present.
17278
17279Notify handler fix - notifies are deferred until the parent method
17280completes execution.  This fixes the "mutex already acquired"
17281issue seen occasionally.
17282
17283Part of the "implicit conversion" rules in ACPI 2.0 have been
17284found to cause compatibility problems with existing ASL/AML.  The
17285convert "result-to-target-type" implementation has been removed
17286for stores to method Args and Locals.  Source operand conversion
17287is still fully implemented.  Possible changes to ACPI 2.0
17288specification pending.
17289
17290Fix to AcpiRsCalculatePciRoutingTableLength to return correct
17291length.
17292
17293Fix for compiler warnings for 64-bit compiles.
17294
17295 Linux:
17296
17297/proc output aligned for easier parsing.
17298
17299Release-version compile problem fixed.
17300
17301New kernel configuration options documented in Configure.help.
17302
17303IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
17304context" message.
17305
17306 OSPM:
17307
17308Power resource driver integrated with bus manager.
17309
17310Fixed kernel fault during active cooling for thermal zones.
17311
17312Source Code:
17313
17314The source code tree has been restructured.
17315
17316
17317
17318------------------------------------------
17319Summary of changes for this label: 03_02_01
17320
17321 Linux OS Services Layer (OSL):
17322
17323Major revision of all Linux-specific code.
17324
17325Modularized all ACPI-specific drivers.
17326
17327Added new thermal zone and power resource drivers.
17328
17329Revamped /proc interface (new functionality is under /proc/acpi).
17330
17331New kernel configuration options.
17332
17333 Linux known issues:
17334
17335New kernel configuration options not documented in Configure.help
17336yet.
17337
17338
17339Module dependencies not currently implemented. If used, they
17340should be loaded in this order: busmgr, power, ec, system,
17341processor, battery, ac_adapter, button, thermal.
17342
17343Modules will not load if CONFIG_MODVERSION is set.
17344
17345IBM 600E - entering S5 may reboot instead of shutting down.
17346
17347IBM 600E - Sleep button may generate "Invalid <NULL> context"
17348message.
17349
17350Some systems may fail with "execution mutex already acquired"
17351message.
17352
17353 ACPI CA Core Subsystem:
17354
17355Added a new OSL Interface, AcpiOsGetThreadId.  This was required
17356for the  deadlock detection code. Defined to return a non-zero, 32-
17357bit thread ID for the currently executing thread.  May be a non-
17358zero constant integer on single-thread systems.
17359
17360Implemented deadlock detection for internal subsystem mutexes.  We
17361may add conditional compilation for this code (debug only) later.
17362
17363ASL/AML Mutex object semantics are now fully supported.  This
17364includes multiple acquires/releases by owner and support for the
17365
17366Mutex SyncLevel parameter.
17367
17368A new "Force Release" mechanism automatically frees all ASL
17369Mutexes that have been acquired but not released when a thread
17370exits the interpreter.  This forces conformance to the ACPI spec
17371("All mutexes must be released when an invocation exits") and
17372prevents deadlocked ASL threads.  This mechanism can be expanded
17373(later) to monitor other resource acquisitions if OEM ASL code
17374continues to misbehave (which it will).
17375
17376Several new ACPI exception codes have been added for the Mutex
17377support.
17378
17379Recursive method calls are now allowed and supported (the ACPI
17380spec does in fact allow recursive method calls.)  The number of
17381recursive calls is subject to the restrictions imposed by the
17382SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
17383parameter.
17384
17385Implemented support for the SyncLevel parameter for control
17386methods (ACPI 2.0 feature)
17387
17388Fixed a deadlock problem when multiple threads attempted to use
17389the interpreter.
17390
17391Fixed a problem where the string length of a String package
17392element was not always set in a package returned from
17393AcpiEvaluateObject.
17394
17395Fixed a problem where the length of a String package element was
17396not always included in the length of the overall package returned
17397from AcpiEvaluateObject.
17398
17399Added external interfaces (Acpi*) to the ACPI debug memory
17400manager.  This manager keeps a list of all outstanding
17401allocations, and can therefore detect memory leaks and attempts to
17402free memory blocks more than once. Useful for code such as the
17403power manager, etc.  May not be appropriate for device drivers.
17404Performance with the debug code enabled is slow.
17405
17406The ACPI Global Lock is now an optional hardware element.
17407
17408 ASL Compiler Version X2015:
17409
17410Integrated changes to allow the compiler to be generated on
17411multiple platforms.
17412
17413Linux makefile added to generate the compiler on Linux
17414
17415 Source Code:
17416
17417All platform-specific headers have been moved to their own
17418subdirectory, Include/Platform.
17419
17420New source file added, Interpreter/ammutex.c
17421
17422New header file, Include/acstruct.h
17423
17424 Documentation:
17425
17426The programmer reference has been updated for the following new
17427interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
17428
17429 ------------------------------------------
17430Summary of changes for this label: 02_08_01
17431
17432Core ACPI CA Subsystem: Fixed a problem where an error was
17433incorrectly returned if the return resource buffer was larger than
17434the actual data (in the resource interfaces).
17435
17436References to named objects within packages are resolved to the
17437
17438full pathname string before packages are returned directly (via
17439the AcpiEvaluateObject interface) or indirectly via the resource
17440interfaces.
17441
17442Linux OS Services Layer (OSL):
17443
17444Improved /proc battery interface.
17445
17446
17447Added C-state debugging output and other miscellaneous fixes.
17448
17449ASL Compiler Version X2014:
17450
17451All defined method arguments can now be used as local variables,
17452including the ones that are not actually passed in as parameters.
17453The compiler tracks initialization of the arguments and issues an
17454exception if they are used without prior assignment (just like
17455locals).
17456
17457The -o option now specifies a filename prefix that is used for all
17458output files, including the AML output file.  Otherwise, the
17459default behavior is as follows:  1) the AML goes to the file
17460specified in the DSDT.  2) all other output files use the input
17461source filename as the base.
17462
17463 ------------------------------------------
17464Summary of changes for this label: 01_25_01
17465
17466Core ACPI CA Subsystem: Restructured the implementation of object
17467store support within the  interpreter.  This includes support for
17468the Store operator as well  as any ASL operators that include a
17469target operand.
17470
17471Partially implemented support for Implicit Result-to-Target
17472conversion. This is when a result object is converted on the fly
17473to the type of  an existing target object.  Completion of this
17474support is pending  further analysis of the ACPI specification
17475concerning this matter.
17476
17477CPU-specific code has been removed from the subsystem (hardware
17478directory).
17479
17480New Power Management Timer functions added
17481
17482Linux OS Services Layer (OSL): Moved system state transition code
17483to the core, fixed it, and modified  Linux OSL accordingly.
17484
17485Fixed C2 and C3 latency calculations.
17486
17487
17488We no longer use the compilation date for the version message on
17489initialization, but retrieve the version from AcpiGetSystemInfo().
17490
17491Incorporated for fix Sony VAIO machines.
17492
17493Documentation:  The Programmer Reference has been updated and
17494reformatted.
17495
17496
17497ASL Compiler:  Version X2013: Fixed a problem where the line
17498numbering and error reporting could get out  of sync in the
17499presence of multiple include files.
17500
17501 ------------------------------------------
17502Summary of changes for this label: 01_15_01
17503
17504Core ACPI CA Subsystem:
17505
17506Implemented support for type conversions in the execution of the
17507ASL  Concatenate operator (The second operand is converted to
17508match the type  of the first operand before concatenation.)
17509
17510Support for implicit source operand conversion is partially
17511implemented.   The ASL source operand types Integer, Buffer, and
17512String are freely  interchangeable for most ASL operators and are
17513converted by the interpreter  on the fly as required.  Implicit
17514Target operand conversion (where the  result is converted to the
17515target type before storing) is not yet implemented.
17516
17517Support for 32-bit and 64-bit BCD integers is implemented.
17518
17519Problem fixed where a field read on an aligned field could cause a
17520read  past the end of the field.
17521
17522New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
17523does not return a value, but the caller expects one.  (The ASL
17524compiler flags this as a warning.)
17525
17526ASL Compiler:
17527
17528Version X2011:
175291. Static typechecking of all operands is implemented. This
17530prevents the use of invalid objects (such as using a Package where
17531an Integer is required) at compile time instead of at interpreter
17532run-time.
175332. The ASL source line is printed with ALL errors and warnings.
175343. Bug fix for source EOF without final linefeed.
175354. Debug option is split into a parse trace and a namespace trace.
175365. Namespace output option (-n) includes initial values for
17537integers and strings.
175386. Parse-only option added for quick syntax checking.
175397. Compiler checks for duplicate ACPI name declarations
17540
17541Version X2012:
175421. Relaxed typechecking to allow interchangeability between
17543strings, integers, and buffers.  These types are now converted by
17544the interpreter at runtime.
175452. Compiler reports time taken by each internal subsystem in the
17546debug         output file.
17547
17548
17549 ------------------------------------------
17550Summary of changes for this label: 12_14_00
17551
17552ASL Compiler:
17553
17554This is the first official release of the compiler. Since the
17555compiler requires elements of the Core Subsystem, this label
17556synchronizes everything.
17557
17558------------------------------------------
17559Summary of changes for this label: 12_08_00
17560
17561
17562Fixed a problem where named references within the ASL definition
17563of both OperationRegions and CreateXXXFields did not work
17564properly.  The symptom was an AE_AML_OPERAND_TYPE during
17565initialization of the region/field. This is similar (but not
17566related internally) to the problem that was fixed in the last
17567label.
17568
17569Implemented both 32-bit and 64-bit support for the BCD ASL
17570functions ToBCD and FromBCD.
17571
17572Updated all legal headers to include "2000" in the copyright
17573years.
17574
17575 ------------------------------------------
17576Summary of changes for this label: 12_01_00
17577
17578Fixed a problem where method invocations within the ASL definition
17579of both OperationRegions and CreateXXXFields did not work
17580properly.  The symptom was an AE_AML_OPERAND_TYPE during
17581initialization of the region/field:
17582
17583  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
17584[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
17585(0x3005)
17586
17587Fixed a problem where operators with more than one nested
17588subexpression would fail.  The symptoms were varied, by mostly
17589AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
17590problem that has gone unnoticed until now.
17591
17592  Subtract (Add (1,2), Multiply (3,4))
17593
17594Fixed a problem where AcpiGetHandle didn't quite get fixed in the
17595previous build (The prefix part of a relative path was handled
17596incorrectly).
17597
17598Fixed a problem where Operation Region initialization failed if
17599the operation region name was a "namepath" instead of a simple
17600"nameseg". Symptom was an AE_NO_OPERAND error.
17601
17602Fixed a problem where an assignment to a local variable via the
17603indirect RefOf mechanism only worked for the first such
17604assignment.  Subsequent assignments were ignored.
17605
17606 ------------------------------------------
17607Summary of changes for this label: 11_15_00
17608
17609ACPI 2.0 table support with backwards support for ACPI 1.0 and the
176100.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
17611the AML  interpreter does NOT have support for the new 2.0 ASL
17612grammar terms at this time.
17613
17614All ACPI hardware access is via the GAS structures in the ACPI 2.0
17615FADT.
17616
17617All physical memory addresses across all platforms are now 64 bits
17618wide. Logical address width remains dependent on the platform
17619(i.e., "void *").
17620
17621AcpiOsMapMemory interface changed to a 64-bit physical address.
17622
17623The AML interpreter integer size is now 64 bits, as per the ACPI
176242.0 specification.
17625
17626For backwards compatibility with ACPI 1.0, ACPI tables with a
17627revision number less than 2 use 32-bit integers only.
17628
17629Fixed a problem where the evaluation of OpRegion operands did not
17630always resolve them to numbers properly.
17631
17632------------------------------------------
17633Summary of changes for this label: 10_20_00
17634
17635Fix for CBN_._STA issue.  This fix will allow correct access to
17636CBN_ OpRegions when the _STA returns 0x8.
17637
17638Support to convert ACPI constants (Ones, Zeros, One) to actual
17639values before a package object is returned
17640
17641Fix for method call as predicate to if/while construct causing
17642incorrect if/while behavior
17643
17644Fix for Else block package lengths sometimes calculated wrong (if
17645block > 63 bytes)
17646
17647Fix for Processor object length field, was always zero
17648
17649Table load abort if FACP sanity check fails
17650
17651Fix for problem with Scope(name) if name already exists
17652
17653Warning emitted if a named object referenced cannot be found
17654(resolved) during method execution.
17655
17656
17657
17658
17659
17660------------------------------------------
17661Summary of changes for this label: 9_29_00
17662
17663New table initialization interfaces: AcpiInitializeSubsystem no
17664longer has any parameters AcpiFindRootPointer - Find the RSDP (if
17665necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
17666>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
17667AcpiLoadTables
17668
17669Note: These interface changes require changes to all existing OSDs
17670
17671The PCI_Config default address space handler is always installed
17672at the root namespace object.
17673
17674-------------------------------------------
17675Summary of changes for this label: 09_15_00
17676
17677The new initialization architecture is implemented.  New
17678interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
17679AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
17680
17681(Namespace is automatically loaded when a table is loaded)
17682
17683The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1768452 bytes to 32 bytes.  There is usually one of these for every
17685namespace object, so the memory savings is significant.
17686
17687Implemented just-in-time evaluation of the CreateField operators.
17688
17689Bug fixes for IA-64 support have been integrated.
17690
17691Additional code review comments have been implemented
17692
17693The so-called "third pass parse" has been replaced by a final walk
17694through the namespace to initialize all operation regions (address
17695spaces) and fields that have not yet been initialized during the
17696execution of the various _INI and REG methods.
17697
17698New file - namespace/nsinit.c
17699
17700-------------------------------------------
17701Summary of changes for this label: 09_01_00
17702
17703Namespace manager data structures have been reworked to change the
17704primary  object from a table to a single object.  This has
17705resulted in dynamic memory  savings of 3X within the namespace and
177062X overall in the ACPI CA subsystem.
17707
17708Fixed problem where the call to AcpiEvFindPciRootBuses was
17709inadvertently left  commented out.
17710
17711Reduced the warning count when generating the source with the GCC
17712compiler.
17713
17714Revision numbers added to each module header showing the
17715SourceSafe version of the file.  Please refer to this version
17716number when giving us feedback or comments on individual modules.
17717
17718The main object types within the subsystem have been renamed to
17719clarify their  purpose:
17720
17721ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
17722ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
17723ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
17724
17725NOTE: no changes to the initialization sequence are included in
17726this label.
17727
17728-------------------------------------------
17729Summary of changes for this label: 08_23_00
17730
17731Fixed problem where TerminateControlMethod was being called
17732multiple times per  method
17733
17734Fixed debugger problem where single stepping caused a semaphore to
17735be  oversignalled
17736
17737Improved performance through additional parse object caching -
17738added  ACPI_EXTENDED_OP type
17739
17740-------------------------------------------
17741Summary of changes for this label: 08_10_00
17742
17743Parser/Interpreter integration:  Eliminated the creation of
17744complete parse trees  for ACPI tables and control methods.
17745Instead, parse subtrees are created and  then deleted as soon as
17746they are processed (Either entered into the namespace or  executed
17747by the interpreter).  This reduces the use of dynamic kernel
17748memory  significantly. (about 10X)
17749
17750Exception codes broken into classes and renumbered.  Be sure to
17751recompile all  code that includes acexcep.h.  Hopefully we won't
17752have to renumber the codes  again now that they are split into
17753classes (environment, programmer, AML code,  ACPI table, and
17754internal).
17755
17756Fixed some additional alignment issues in the Resource Manager
17757subcomponent
17758
17759Implemented semaphore tracking in the AcpiExec utility, and fixed
17760several places  where mutexes/semaphores were being unlocked
17761without a corresponding lock  operation.  There are no known
17762semaphore or mutex "leaks" at this time.
17763
17764Fixed the case where an ASL Return operator is used to return an
17765unnamed  package.
17766
17767-------------------------------------------
17768Summary of changes for this label: 07_28_00
17769
17770Fixed a problem with the way addresses were calculated in
17771AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
17772manifested itself when a Field was  created with WordAccess or
17773DwordAccess, but the field unit defined within the  Field was less
17774
17775than a Word or Dword.
17776
17777Fixed a problem in AmlDumpOperands() module's loop to pull
17778operands off of the  operand stack to display information. The
17779problem manifested itself as a TLB  error on 64-bit systems when
17780accessing an operand stack with two or more  operands.
17781
17782Fixed a problem with the PCI configuration space handlers where
17783context was  getting confused between accesses. This required a
17784change to the generic address  space handler and address space
17785setup definitions. Handlers now get both a  global handler context
17786(this is the one passed in by the user when executing
17787AcpiInstallAddressSpaceHandler() and a specific region context
17788that is unique to  each region (For example, the _ADR, _SEG and
17789_BBN values associated with a  specific region). The generic
17790function definitions have changed to the  following:
17791
17792typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
17793UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
17794*HandlerContext, // This used to be void *Context void
17795*RegionContext); // This is an additional parameter
17796
17797typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
17798RegionHandle, UINT32 Function, void *HandlerContext,  void
17799**RegionContext); // This used to be **ReturnContext
17800
17801-------------------------------------------
17802Summary of changes for this label: 07_21_00
17803
17804Major file consolidation and rename.  All files within the
17805interpreter have been  renamed as well as most header files.  This
17806was done to prevent collisions with  existing files in the host
17807OSs -- filenames such as "config.h" and "global.h"  seem to be
17808quite common.  The VC project files have been updated.  All
17809makefiles  will require modification.
17810
17811The parser/interpreter integration continues in Phase 5 with the
17812implementation  of a complete 2-pass parse (the AML is parsed
17813twice) for each table;  This  avoids the construction of a huge
17814parse tree and therefore reduces the amount of  dynamic memory
17815required by the subsystem.  Greater use of the parse object cache
17816means that performance is unaffected.
17817
17818Many comments from the two code reviews have been rolled in.
17819
17820The 64-bit alignment support is complete.
17821
17822-------------------------------------------
17823Summary of changes for this label: 06_30_00
17824
17825With a nod and a tip of the hat to the technology of yesteryear,
17826we've added  support in the source code for 80 column output
17827devices.  The code is now mostly  constrained to 80 columns or
17828less to support environments and editors that 1)  cannot display
17829or print more than 80 characters on a single line, and 2) cannot
17830disable line wrapping.
17831
17832A major restructuring of the namespace data structure has been
17833completed.  The  result is 1) cleaner and more
17834understandable/maintainable code, and 2) a  significant reduction
17835in the dynamic memory requirement for each named ACPI  object
17836(almost half).
17837
17838-------------------------------------------
17839Summary of changes for this label: 06_23_00
17840
17841Linux support has been added.  In order to obtain approval to get
17842the ACPI CA  subsystem into the Linux kernel, we've had to make
17843quite a few changes to the  base subsystem that will affect all
17844users (all the changes are generic and OS- independent).  The
17845effects of these global changes have been somewhat far  reaching.
17846Files have been merged and/or renamed and interfaces have been
17847renamed.   The major changes are described below.
17848
17849Osd* interfaces renamed to AcpiOs* to eliminate namespace
17850pollution/confusion  within our target kernels.  All OSD
17851interfaces must be modified to match the new  naming convention.
17852
17853Files merged across the subsystem.  A number of the smaller source
17854and header  files have been merged to reduce the file count and
17855increase the density of the  existing files.  There are too many
17856to list here.  In general, makefiles that  call out individual
17857files will require rebuilding.
17858
17859Interpreter files renamed.  All interpreter files now have the
17860prefix am*  instead of ie* and is*.
17861
17862Header files renamed:  The acapi.h file is now acpixf.h.  The
17863acpiosd.h file is  now acpiosxf.h.  We are removing references to
17864the acronym "API" since it is  somewhat windowsy. The new name is
17865"external interface" or xface or xf in the  filenames.j
17866
17867
17868All manifest constants have been forced to upper case (some were
17869mixed case.)   Also, the string "ACPI_" has been prepended to many
17870(not all) of the constants,  typedefs, and structs.
17871
17872The globals "DebugLevel" and "DebugLayer" have been renamed
17873"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
17874
17875All other globals within the subsystem are now prefixed with
17876"AcpiGbl_" Internal procedures within the subsystem are now
17877prefixed with "Acpi" (with only  a few exceptions).  The original
17878two-letter abbreviation for the subcomponent  remains after "Acpi"
17879- for example, CmCallocate became AcpiCmCallocate.
17880
17881Added a source code translation/conversion utility.  Used to
17882generate the Linux  source code, it can be modified to generate
17883other types of source as well. Can  also be used to cleanup
17884existing source by removing extraneous spaces and blank  lines.
17885Found in tools/acpisrc/*
17886
17887OsdUnMapMemory was renamed to OsdUnmapMemory and then
17888AcpiOsUnmapMemory.  (UnMap  became Unmap).
17889
17890A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
17891When set to  one, this indicates that the caller wants to use the
17892
17893semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
17894both types.  However, implementers of this  call may want to use
17895different OS primitives depending on the type of semaphore
17896requested.  For example, some operating systems provide separate
17897
17898"mutex" and  "semaphore" interfaces - where the mutex interface is
17899much faster because it  doesn't have all the overhead of a full
17900semaphore implementation.
17901
17902Fixed a deadlock problem where a method that accesses the PCI
17903address space can  block forever if it is the first access to the
17904space.
17905
17906-------------------------------------------
17907Summary of changes for this label: 06_02_00
17908
17909Support for environments that cannot handle unaligned data
17910accesses (e.g.  firmware and OS environments devoid of alignment
17911handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
17912been added (via configurable macros) in  these three areas: -
17913Transfer of data from the raw AML byte stream is done via byte
17914moves instead of    word/dword/qword moves. - External objects are
17915aligned within the user buffer, including package   elements (sub-
17916objects). - Conversion of name strings to UINT32 Acpi Names is now
17917done byte-wise.
17918
17919The Store operator was modified to mimic Microsoft's
17920implementation when storing  to a Buffer Field.
17921
17922Added a check of the BM_STS bit before entering C3.
17923
17924The methods subdirectory has been obsoleted and removed.  A new
17925file, cmeval.c  subsumes the functionality.
17926
17927A 16-bit (DOS) version of AcpiExec has been developed.  The
17928makefile is under  the acpiexec directory.
17929