xref: /dragonfly/sys/contrib/dev/acpica/changes.txt (revision bda2cd54)
1----------------------------------------
230 July 2021. Summary of changes for version 20210730:
3
4This release is available at https://acpica.org/downloads
5
61) ACPICA kernel-resident subsystem:
7
82) iASL Compiler/Disassembler and ACPICA tools:
9
10iasl: Check usage of _CRS, _DIS, _PRS, and _SRS objects (July 2021).
11  Under the Device Object:
12  1) If _DIS is present, must have a _CRS and _SRS
13  2) If _PRS is present, must have a _CRS, _DIS, and _SRS
14  3) If _SRS is present, must have a _CRS and _DIS
15A warning will be issued for each of these cases.
16Note: For existing ASL/projects, these warnings may be disabled by
17specifying this on the command line:
18"-vw 3141"
19
20iASL Table Disassembler/Table compiler: Fix for WPBT table with no
21command-line arguments. Handle the case where the Command-line
22Arguments table field does not exist (zero).
23
24Headers: Add new DBG2 Serial Port Subtypes
25The Microsoft Debug Port Table 2 (DBG2) specification revision
26September 21, 2020 comprises additional Serial Port Subtypes [1].
27Reflect that in the actbl1.h header file. Submitted by:
28semihalf-wojtas-marcin
29
30iASL: Add full support for the AEST table (data compiler)
31Includes support in the table compiler and the disassembler.
32
33Add PRMT module header to facilitate parsing.
34This structure is used in to parse PRMT in other Operating Systems
35that relies on using subtable headers in order to parse ACPI tables.
36Although the PRMT doesn't have "subtables" it has a list of module
37information structures that act as subtables.
38
39iASL: Table disassembler: Add missing strings to decode subtable types.
40Includes the MADT and CEDT tables.
41
42
43----------------------------------------
4404 June 2021. Summary of changes for version 20210604:
45
461) ACPICA kernel-resident subsystem:
47
48Cleaned up (delete) the context mutex during local address handler object
49deletion.
50
51Fixed a memory leak caused by the _CID repair function.
52
53Added support for PlatformRtMechanism OperationRegion handler. Adds a new
54utility function, AcpiUtConvertUuidToString. Writing a buffer to a
55PlatformRtMechanism fieldunit invokes a bidirectional transaction. The
56input buffer contains 26 bytes containing 9 bytes of status, a command
57byte and a 16-byte UUID. This change will simply pass this incoming
58buffer to a handler registered by the OS.
59
602) iASL Compiler/Disassembler and ACPICA tools:
61
62Added full support for the PRMT ACPI table (Platform Runtime Mechanism
63Table). Includes support in the iASL compiler, the disassembler, and the
64template generator.
65
66Added full support for the BDAT (BIOS Data ACPI Table) ACPI table.
67
68Added full support for the RGRT (Regulatory Graphics Resource Table) ACPI
69table.
70
71Added full support for the SVKL (Storage Volume Key Location Table) ACPI
72table. Header file support from Kuppuswamy Sathyanarayanan
73<sathyanarayanan.kuppuswamy@linux.intel.com>.
74
75Completed full support for the IVRS (I/O Virtualization Reporting
76Structure) ACPI table. Added compiler support for IVRS, updated
77disassembler support. Adds a new utility, UtIsIdInteger, to determine if
78a HID/CID is an integer or a string.
79
80Headers: Added more structs to the CEDT table: CXL fixed memory window
81structure.
82
83ACPI 6.4: MADT: added Multiprocessor Wakeup Mailbox Structure.
84
85----------------------------------------
8631 March 2021. Summary of changes for version 20210331:
87
88This release is available at https://acpica.org/downloads, and includes
89all ACPI 6.4 support
90
911) ACPICA kernel-resident subsystem:
92ACPI 6.4: iASL: deprecate DDBHandleObj keyword
93Always create namespace nodes using AcpiNsCreateNode(). ACPICA is
94allocating an object using kmalloc(), but then frees it
95using kmem_cache_free(<"Acpi-Namespace" kmem_cache>). This is wrong.
96Fixed a race condition in generic serial bus operation region handler.
97Fixed by Hans de Goede.
98
992) iASL Compiler/Disassembler and ACPICA tools:
100
101ACPI 6.4: NFIT: add Location Cookie field
102ACPI 6.4: HMAT: add new fields/flags
103ACPI 6.4: Add new flags in SRAT
104ACPI 6.4: add SDEV secure access components
105ACPI 6.4: add Csi2Bus resource template
106ACPI 6.4: add support for PHAT table
107ACPI 6.4: add support for PMTT table
108Add disassembly support for the IVRS table. Compilation of the table is
109not yet complete.
110Fixed a potential infinite loop due to type mismatch. The for-loop is
111using a UINT8 counter and comparing the upper
112limit against a UINT32 AslGbl_ExpectedMessagesIndex maximum. In
113the case where AslGbl_ExpectedMessagesIndex is > 255 the counter i
114will wrap around to zero and the loop will never exit. I suspect
115the AslGbl_ExpectedMessagesIndex is never that high, but fixing
116this does future proof the code and cleans up static analysis
117warnings.Colin King.
118iASL/TableCompiler: update it with IORT table E.b revision changes. From
119shamiali2008.
120iASL/TableCompiler: Add compilation support for the VIOT table. Signed-
121off-by: Jean-Philippe Brucker.
122iASL/TableCompiler: Add compilation support for CEDT table. Also, update
123the CEDT template.
124
125----------------------------------------
12605 January 2021. Summary of changes for version 20210105:
127
128This release is available at https://acpica.org/downloads
129
130
1311) ACPICA kernel-resident subsystem:
132
133Updated all copyrights to 2021. This affects all ACPICA source code
134modules.
135
1362) iASL Compiler/Disassembler and ACPICA tools:
137
138ASL test suite (ASLTS): Updated all copyrights to 2021.
139
140Tools and utilities: Updated all signon copyrights to 2021.
141
142iASL Table Compiler: Removed support for obsolete ACPI tables: VRTC,
143MTMR. Al Stone.
144
145
146----------------------------------------
14717 December 2020. Summary of changes for version 20201217:
148
149This release is available at https://acpica.org/downloads
150
151
1521) ACPICA kernel-resident subsystem:
153
154Note: The implementation of ACPI 6.4 is underway, and is expected to be
155mostly finished next month, when ACPI 6.4 is released.
156
157From qzed:- fixed-ae-class-macros. Fix exception code class checks. Added
158several new macros, such as ACPI_CNTL_EXCEPTION(Status) in order to
159enable this.
160
161AcpiExec/iASL/AcpiHelp: Added a few changes for support of GCC 10.2.0.
162These included a few casts, as well as a null pointer check.
163
164Fix -Wfallthrough: GCC 7.1 gained -Wimplicit-fallthrough to warn on
165implicit fallthrough, as well as __attribute__((__fallthrough__)) and
166comments to explicitly denote that cases of fallthrough were intentional.
167Clang also supports this warning and statement attribute, but not the
168comment form. Added a new macro, ACPI_FALLTHROUGH to support this feature
169of GCC. With assistance from @nickdesaulniers.
170
1712) iASL Compiler/Disassembler and ACPICA tools:
172
173Added improvement to method call analysis by saving the return type and
174relaxing certain cases of type checking.
175
176iASL Table Compiler: Improved info messages. Added a message to the -T
177option for when the default template (DSDT) is used.
178Also added a note for when multiple SSDTs are created with a DSDT that
179the SSDTs are created in the same file as the DSDT.
180
181
182----------------------------------------
183
18413 November 2020. Summary of changes for version 20201113:
185
186This release is available at https://acpica.org/downloads
187
188
1891) ACPICA kernel-resident subsystem:
190
191Interpreter: fixed a memory leak by using use existing buffer in _HID
192repair. There was a memory leak that occurred when a _CID object is
193defined as a package containing string objects. When _CID is checked for
194any possible repairs, it calls a helper function to repair _HID (because
195_CID basically contains multiple _HID entries). The _HID repair function
196assumes that string objects are standalone objects that are not contained
197inside of any packages. The _HID repair function replaced the string
198object with a brand new object and attempted to delete the old object by
199decrementing the reference count of the old object. Strings inside of
200packages have a reference count of 2 so the _HID repair function leaves
201this object in a dangling state and causes a memory leak. Instead of
202allocating a brand new object and removing the old object, use the
203existing object when repairing the _HID object.
204
205Added function trace macros to improve namespace debugging. The namespace
206repair mechanism does not have function tracing macros. Add several trace
207macros to improve debuggability.
208
209Handle "orphan" _REG methods for GPIO OpRegions. Before this change
210AcpiEvExecuteRegMethods() had special handling to handle "orphan" (no
211matching OpRegion declared) _REG methods for EC nodes. On Intel Cherry
212Trail devices there are 2 possible ACPI OpRegions for accessing GPIOs.
213The standard GeneralPurposeIo OpRegion and the Cherry Trail - specific
214UserDefined 0x9X OpRegions. Having 2 different types of OpRegions leads
215to potential issues with checks for OpRegion availability, or in other
216words checks if _REG has been called for the OpRegion which the ACPI code
217wants to use. Except for the "orphan" EC handling, ACPICA core does not
218call _REG on an ACPI node which does not define an OpRegion matching the
219type being registered; and the reference design DSDT, from which most
220Cherry Trail DSDTs are derived, does not define GeneralPurposeIo, nor
221UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because no pins
222were assigned ACPI controlled functions in the reference design. Together
223this leads to the perfect storm, at least on the Cherry Trail based
224Medion Akayo E1239T. This design does use a GPO2 pin from its ACPI code
225and has added the Cherry Trail specific UserDefined(0x93) opregion to its
226GPO2 ACPI node to access this pin. But it uses a "has _REG been called"
227availability check for the standard GeneralPurposeIo OpRegion. This
228clearly is a bug in the DSDT, but this does work under Windows. This
229issue leads to the intel vbtn driver reporting the device always being in
230tablet-mode at boot, even if it is in laptop mode. Which in turn causes
231userspace to ignore touchpad events. So in other words, this issue causes
232the touchpad to not work at boot. This change fixes this by extending the
233"orphan" _REG method handling to also apply to GPIO address-space
234handlers.
235
236
2372) iASL Compiler/Disassembler and ACPICA tools:
238
239iASL: Added more info to namespace dump file (-ln option). In a separate
240section of the dump file (after the main namespace dump), emit the full
241pathname for each namespace node, its type, and the ASL filename and line
242number where it is declared.
243
244AcpiHelp: Added an option to display/decode iASL exceptions. Option is: -
245x [Hex Value] where "Hex Value" is the iASL exception code. If Hex Value
246is omitted, all iASL exceptions are displayed.
247
248iASL: Use StringLiteral instead of StringData for some ASL macros. The
249use of the stringData rule allows for some "string" oriented opcodes
250(Such as ToString, ToHexString, etc.) None of which make sense with the
251macros in question. This change modifies the StringData part of the rule
252for these macros to a simple string  literal - thus disallowing the use
253of ToString, ToHexString, etc.
254The following ASL operators (macros) are affected:
255EisaId
256Fprintf
257Printf
258ToUuid
259Unicode
260Note: The MS compiler requires the use of string literals for these
261operators also.
262
263iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND. Search
264the list of "known" UUIDs for the input to the ToUUID macro.
265
266Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the
267NFIT table.
268
269
270----------------------------------------
271
27225 September 2020. Summary of changes for version 20200925:
273
274This release is available at https://acpica.org/downloads
275
276
2771) ACPICA kernel-resident subsystem:
278
279Preserve memory opregion mappings. The ACPICA's strategy with respect to
280the handling of memory mappings associated with memory operation regions
281is to avoid mapping the entire region at once which may be problematic at
282least in principle (for example, it may lead to conflicts with
283overlapping mappings having different attributes created by drivers).  It
284may also be wasteful, because memory opregions on some systems take up
285vastchunks of address space while the fields in those regions actually
286accessed by AML are sparsely distributed.
287
288For this reason, a one-page "window" is mapped for a given opregion on
289the first memory access through it and if that "window" does not cover an
290address range accessed through that opregion subsequently, it is unmapped
291and a new "window" is mapped to replace it.  Next, if the new "window" is
292not sufficient to access memory through the opregion in question in the
293future, it will be replaced with yet another "window" and so on.  That
294may lead to a suboptimal sequence of memory mapping and unmapping
295operations, for example if two fields in one opregion separated from each
296other by a sufficiently wide chunk of unused address space are accessed
297in an alternating pattern.
298
299Added support for 64 bit risc-v compilation.  Useful for acpica tools and
300incorporating ACPICA into the Firmware Test Suite. Colin Ian King
301<colin.king@canonical.com>.
302
303Added support for SMBus predefined names (from SMBus Control Method
304Interface Specification, Version 1.0, December 10, 1999. New predefined
305names:
306    _SBA
307    _SBI
308    _SBR
309    _SBT
310    _SBW
311
312AML Disassembler: Added a new command, "All <NameSeg>". This command will
313evaluate all objects in the current namespace whose NameString contains
314the input NameSeg as the last element of the NameString. Useful for
315debugging.
316
317
3182) iASL Compiler/Disassembler and ACPICA tools:
319
320iASL: fixed a crash that occurred when predefined objects return packages
321with lengths that exceed the initializer list.
322
323iASL: added more detail to external resolution error message when
324compiling multiple definition blocks.
325
326iASL: added a remark for an attempt to create a nameseg or namestring
327containing lower-case letters. This should prevent declaring multiple
328namesegs or namestrings in an attempt to refer to different objects (with
329different cases), but actually refer to the same object(s).
330
331iASL: improve alias analysis by saving object type. If the alias is a
332method type, the parameter count is also recorded.
333
334AcpiExec: Increase the default loop timeout value. Was 1 second, is now
33510 seconds. Prevents unnecessary timeouts when executing control methods
336from the command line.
337
338AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal
339list. Includes:
340    Memory Device
341    Generic Buttons Device
342    NVDIMM Root Device
343    Control Method Battery
344    Device Graphs for _DSD method
345    Hierarchical Data Extension
346....ARM CoreSight Graph
347
348----------------------------------------
349
350
35117 July 2020. Summary of changes for version 20200717:
352
353This release is available at https://acpica.org/downloads
354
355
3561) ACPICA kernel-resident subsystem:
357
358Do not increment OperationRegion reference counts for field units. Recent
359server firmware has revealed that this reference count can overflow on
360large servers that declare many field units (thousands) under the same
361OperationRegion. This occurs because each field unit declaration will add
362a reference count to the source OperationRegion. This release solves the
363reference count overflow for OperationRegion objects by preventing
364fieldUnits from incrementing their parent OperationRegion's reference
365count.
366
367Replaced one-element arrays with flexible-arrays, which were introduced
368in C99.
369
370Restored the readme file containing the directions for generation of
371ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is
372located at: generate/msvc2017/readme.txt
373
3742) iASL Compiler/Disassembler and ACPICA tools:
375
376iASL: Fixed a regression found in version 20200214. Prevent iASL from
377emitting an extra byte of garbage data when control methods declared a
378single parameter type without using braces. This extra byte is known to
379cause a blue screen on the Windows AML interpreter.
380
381iASL: Made a change to allow external declarations to specify the type of
382a named object even when some name segments are not defined.
383This change allows the following ASL code to compile (When DEV0 is not
384defined or not defined yet):
385
386    External (\_SB.DEV0.OBJ1, IntObj)
387    External (\_SB.DEV0, DeviceObj)
388
389iASL: Fixed a problem where method names in "Alias ()" statement could be
390misinterpreted. They are now interpreted correctly as method invocations.
391
392iASL: capture a method parameter count (Within the Method info segment,
393as well as the argument node) when using parameter type lists.
394
395----------------------------------------
396
397
39828 May 2020. Summary of changes for version 20200528:
399
400
4011) ACPICA kernel-resident subsystem:
402
403Removed old/obsolete Visual Studio files which were used to build the
404Windows versions of the ACPICA tools. Since we have moved to Visual
405Studio 2017, we are no longer supporting Visual Studio 2006 and 2009
406project files. The new subdirectory and solution file are located at:
407
408    acpica/generate/msvc2017/AcpiComponents.sln
409
410
4112) iASL Compiler/Disassembler and ACPICA tools:
412
413iASL: added support for a new OperationRegion Address Space (subtype):
414PlatformRtMechanism. Support for this new keyword is being released for
415early prototyping. It will appear in the next release of the ACPI
416specification.
417
418iASL: do not optimize the NameString parameter of the CondRefOf operator.
419In the previous iASL compiler release, the NameString parameter of the
420CondRefOf was optimized. There is evidence that some implementations of
421the AML interpreter do not perform the recursive search-to-parent search
422during the execution of the CondRefOf operator. Therefore, the CondRefOf
423operator behaves differently when the NameString parameter is a single
424name segment (a NameSeg) as opposed to a full NamePath (starting at the
425root scope) or a NameString containing parent prefixes.
426
427iASL: Prevent an inadvertent remark message. This change prevents a
428remark if within a control method the following exist:
4291) An Operation Region is defined, and
4302) A Field operator is defined that refers to the region.
431This happens because at the top level, the Field operator does not
432actually create a new named object, it simply references the operation
433region.
434
435Removed support for the acpinames utility. The acpinames was a simple
436utility used to populate and display the ACPI namespace without executing
437any AML code. However, ACPICA now supports executable opcodes outside of
438control methods. This means that executable AML opcodes such as If and
439Store opcodes need to be executed during table load. Therefore, acpinames
440would need to be updated to match the same behavior as the acpiexec
441utility and since acpiexec can already dump the entire namespace (via the
442'namespace' command), we no longer have the need to maintain acpinames.
443
444    In order to dump the contents of the ACPI namespace using acpiexec,
445execute the following command from the command line:
446
447        acpiexec -b "n" [aml files]
448
449----------------------------------------
450
451
45230 April 2020. Summary of changes for version 20200430:
453
4541) ACPICA kernel-resident subsystem:
455
456Cleaned up the coding style of a couple of global variables
457(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers.
458AcpiProtocolLengths was made static, and the definition of
459AcpiGbl_NextCmdNum was moved to acglobal.h.
460
461
4622) iASL Compiler/Disassembler and ACPICA tools:
463
464iASL DataTable Compiler:  Fixed a segfault on errors that aren't directly
465associated with a field.
466
467Disassembler: has been made more resilient so that it will continue to
468parse AML even if the AML generates ACPI namespace errors. This enables
469iASL to disassemble some AML that may have been compiled using older
470versions of iASL that no longer compile with newer versions of iASL.
471
472iASL: Fixed the required parameters for _NIH and _NIG. Previously, there
473was a mixup where _NIG required one parameter and _NIH required zero
474parameters. This change swaps these parameter requirements. Now it is
475required that _NIH must be called with one parameter and _NIG requires
476zero parameters.
477
478iASL: Allow use of undefined externals as long as they are protected by
479an if (CondRefOf (...)) block when compiling multiple definition blocks.
480
481iASL: Fixed the type override behavior of named objects that are declared
482as External. External declarations will no longer override the type of
483the actual definition if it already exists.
484
485AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable
486command line wildcard support on Windows. Note: the AcpiNames utility is
487essentially redundant with the AcpiExec utility (using the "namespace"
488command) and is therefore deprecated. It will be removed in future
489releases of ACPICA.
490
491Disassembler: ignore AE_ALREADY_EXISTS status when parsing create*
492operators. The disassembler is intended to emit existing ASL code as-is.
493Therefore, error messages emitted during disassembly should be ignored or
494handled in a way such that the disassembler can continue to parse the
495AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op
496parsing for create operators in order to complete parsing ASL termlists.
497
498iASL DataTable Compiler: IVRS table: fix potentially uninitialized
499variable warning. Some compilers catch potential uninitialized variables.
500This is done by examining branches of if/else statements. This change
501replaces an "else if" with an "else" to fix the uninitialized variable
502warning.
503
504
505----------------------------------------
50626 March 2020. Summary of changes for version 20200326:
507
508
5091) ACPICA kernel-resident subsystem:
510
511Performed a code clean-up to prevent build errors on early versions of
512GCC-10.
513
514Added the NHLT table signature. iASL data table compiler/disassembler
515support for this table is coming soon.
516
517
5182) iASL Compiler/Disassembler and ACPICA tools:
519
520AcpiExec: Fixed several problems with the namespace initialization file
521(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS
522errors, several seg faults, and enhancements to line parsing within the
523init file. In addition, each object found in the init file and it's new
524value is displayed, as well as any such entries that do not have a
525corresponding name in the namespace. For reference, the syntax for the
526various supported data types are presented below:
527	PCHG 0x777788889999BBBB	// Integer
528	\DEV1.STR1 "XYZ"			// String
529	BUF1 (88 99 AA)			// Buffer
530	PKG1 [0x1111 0x2222]		// Package
531	\BF1 0x7980				// BufferField
532	RCRV 0x0123456789ABCDEF	// Field Unit
533
534iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro
535can be used anywhere in a given ASL file to configure iASL to expect an
536iASL compiler error code on the line where this macro was placed. If the
537error code does not exist, an error is generated. This is intended to be
538used for ACPICA's ASL test suite, but can be used by ASL developers as
539well.
540
541iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD
542IVRS table parsing supported only IVHD type 10h structures. Parsing an
543IVHD type 11h caused the iasl to report unknown subtable type. Add
544necessary structure definition for IVHD type 11h and apply correct
545parsing method based on subtable type. Micha? ?ygowski.
546
547iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name
548According to AMD IOMMU Specification Revision 3.05 the reserved field
549should be IOMMU Feature Reporting. Change the name of the field to the
550correct one. Micha? ?ygowski.
551
552acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch
553based on suggestions by David Seifert and Benjamin Berg.
554
555iASL: table compiler: removed an unused variable (DtCompilerParserResult)
556causing linking errors. Patch based on suggestions by David Seifert and
557Benjamin Berg.
558
559iASL: table compiler: make LexBuffer static to avoid linking errors in
560newer compilers. Patch based on suggestions by David Seifert and Benjamin
561Berg.
562
563iASL: fixed type matching between External and Named objects. External
564object types can only be expressed with ACPI object type values that are
565defined in the ACPI spec. However, iASL uses ACPI object type values that
566are local to ACPICA in addition to the values defined in the ACPI spec.
567This change implements type matching to map some object type values
568specific to ACPICA to ones that are defined in the ACPI spec.
569
570iASL: Dropped the type mismatch compiler error that can arise from
571External declarations to a warning. This warning can occur when there is
572a type difference between the external declaration and the actual object
573declaration (when compiling multiple files/modules simultaneously).
574
575iASL: removed an incorrect error message regarding externals. This change
576removes an incorrect error that is emitted when a duplicate external
577declaration does not contain a type that opens a scope. This is incorrect
578because the duplicate external with conflicting types are already caught
579by iASL and it doesn't make any sense to enforce what this conflicting
580type should be.
581
582AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be
583surrounded by parens. Otherwise, a logical statement that applies a
584logical not operator to this macro could result in a computation that
585applies the operator to the left side of the logical and but not the
586right. Reported-by: John Levon <john.levon@joyent.com>
587
588Fixed a problem with the local version of sprint(): On 32-bit, the
589provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX,
590String + Size will wrap, meaning End < Start, and
591AcpiUtBoundStringOutput() will never output anything as a result. The
592symptom seen of this was acpixtract failing to output anything -- with a
593custom build that included utprint.c. Signed-off-by: John Levon
594<john.levon@joyent.com>
595
596iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the
597ACPI specification.
598
599
600----------------------------------------
60114 February 2020. Summary of changes for version 20200214:
602
603
6041) ACPICA kernel-resident subsystem:
605
606Enable sleep button on ACPI legacy wake:  Hibernation (S4) is triggered
607in a guest when it receives a sleep trigger from the hypervisor. When the
608guest resumes from this power state, it does not see the SleepEnabled
609bit. In other words, the sleepHibernation (S4) is triggered in a guest
610when it receives a sleep trigger from the hypervisor. When the guest
611resumes from this power state, it does not see the SleepEnabled bit. In
612other words, the sleep button is not enabled on waking from an S4 state.
613This causes subsequent invocation of sleep state to fail since the
614guest.button is not enabled on waking from an S4 state. This causes
615subsequent invocation of sleep state to fail in the guest. Fix this
616problem by enabling the sleep button in ACPI legacy wake. From Anchal
617Agarwal <anchalag@amazon.com>.
618
619Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used
620for checking the status bits of all enabled GPEs in one go. It is needed
621to distinguish spurious SCIs from genuine ones when deciding whether or
622not to wake up the system from suspend-to-idle.
623
624Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be
625using HOST in their environment to represent the host name for their
626machines. Avoid this problem by renaming this variable from HOST to
627ACPI_HOST.
628
629MSVC 2017 project files: Enable multiprocessor generation to improve
630build performance.
631
632Added a macro to get the byte width of a Generic Address structure. New
633ACPI_ACCESS_BYTE_WIDTH is in addition to the existing
634ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg.
635
636
6372) iASL Compiler/Disassembler and ACPICA tools:
638
639iASL: Implemented full support for the (optional, rarely used) ReturnType
640and ParameterTypesList for the Method, Function, and External operators.
641For Method declarations, the number of individual ParameterTypes must
642match the declaration of the number of arguments (NumArgs). This also
643Fixes a problem with the External operator where extra/extraneous bytes
644were emitted in the AML code if the optional ReturnType/ParameterTypes
645were specified for a MethodObj declaration.
646New error message:
6471) Method NumArgs count does not match length of ParameterTypes list
648
649iASL: Implemented detection of type mismatches between External
650declarations and named object declarations. Also, detect type mismatches
651between multiple External declarations of the same Name.
652New error messages:
6531) Type mismatch between external declaration and actual object
654declaration detected
6552) Type mismatch between multiple external declarations detected
656
657iASL: Implemented new error messages for External operators that specify
658a ReturnType and/or ParameterTypesList for any object type other than
659control methods (MethodObj).
660New error messages:
6611) Return type is only allowed for Externals declared as MethodObj
6622) Parameter type is only allowed for Externals declared as MethodObj
663
664iASL: Implemented two new remark/warning messages for ASL code that
665creates named objects from within a control method. This is very
666inefficient since the named object must be created and deleted each time
667the method is executed.
668New messages:
6691) Creation of named objects within a method is highly inefficient, use
670globals or method local variables instead (remark)
6712) Static OperationRegion should be declared outside control method
672(warning)
673
674iASL: Improved illegal forward reference detection by adding support to
675detect forward-reference method invocations.
676
677iASL: Detect and issue an error message for NameStrings that contain too
678many individual NameSegs (>255). This is an AML limitation that is
679defined in the ACPI specification.
680New message:
6811) NameString contains too many NameSegs (>255)
682
683acpidump: windows: use GetSystemFirmwareTable API for all tables except
684SSDT. By using this API, acpidump is able to get all tables in the XSDT
685
686iASL: Removed unused parser file and updated msvc2017 project files.
687Removed the obsolete AslCompiler.y from the repository.
688
689iASL: msvc2017: Fixed macros in the file dependency list to prevent
690unnecessary rebuilds. Replace %(Directory) with %(RelativeDir).
691
692Disassembler: Prevent spilling error messages to the output file. All
693errors are directed to the console instead. These error messages
694prevented re-compilation of the resulting disassembled ASL output file
695(.DSL).
696
697
698----------------------------------------
69910 January 2020. Summary of changes for version 20200110:
700
701
7021) ACPICA kernel-resident subsystem:
703
704Updated all copyrights to 2020. This affects all ACPICA source code
705modules.
706
707
7082) iASL Compiler/Disassembler and ACPICA tools:
709
710ASL test suite (ASLTS): Updated all copyrights to 2020.
711
712Tools and utilities: Updated all signon copyrights to 2020.
713
714iASL: fix forward reference analysis for field declarations. Fixes
715forward reference analysis for field declarations by searching the
716parent scope for the named object when the object is not present in
717the current scope.
718
719iASL: Improved the error output for ALREADY_EXISTS errors. Now, the
720full pathname of the name that already exists is printed.
721
722iASL: Enhance duplicate Case() detection for buffers. Add check for
723buffers with no initializer list (these buffers will be filled with
724zeros at runtime.)
725
726
727----------------------------------------
72813 December 2019. Summary of changes for version 20191213:
729
730
7311) ACPICA kernel-resident subsystem:
732
733Return a Buffer object for all fields created via the CreateField
734operator. Previously, an Integer would be returned if the size of
735the field was less than or equal to the current size of an Integer.
736Although this goes against the ACPI specification, it provides
737compatibility with other ACPI implementations. Also updated the
738ASLTS test suite to reflect this new behavior.
739
7402) iASL Compiler/Disassembler and ACPICA tools:
741
742iASL: Implemented detection of (and throw an error for) duplicate
743values for Case statements within a single Switch statement. Duplicate
744Integers, Strings, and Buffers are supported.
745
746iASL: Fix error logging issue during multiple file compilation --
747Switch to the correct input file during error node creation.
748
749iASL: For duplicate named object creation, now emit an error instead
750of a warning - since this will cause a runtime error.
751
752AcpiSrc: Add unix line-ending support for non-Windows builds.
753
754iASL: Add an error condition for an attempt to create a NameString
755with > 255 NameSegs (the max allowable via the AML definition).
756
757
758----------------------------------------
75918 October 2019. Summary of changes for version 20191018:
760
761
7621) ACPICA kernel-resident subsystem:
763
764Debugger: added a new command: ?Fields [address space ID]?. This command
765dumps the contents of all field units that are defined within the
766namespace with a particular address space ID.
767
768Modified the external interface AcpiLoadTable() to return a table index.
769This table index can be used for unloading a table for debugging.
770    ACPI_STATUS
771    AcpiLoadTable (
772        ACPI_TABLE_HEADER       *Table,
773        UINT32                  *TableIndex))
774
775Implemented a new external interface: AcpiUnloadTable() This new function
776takes a table index as an argument and unloads the table. Useful for
777debugging only.
778    ACPI_STATUS
779    AcpiUnloadTable (
780        UINT32                  TableIndex))
781
782Ported the AcpiNames utility to use the new table initialization
783sequence. The utility was broken before this change. Also, it was
784required to include most of the AML interpreter into the utility in order
785to process table initialization (module-level code execution.)
786
787Update for results from running Clang V8.0.1. This fixes all "dead
788assignment" warnings. There are still several "Dereference of NULL
789pointer" warnings, but these have been found to be false positive
790warnings.
791
792
7932) iASL Compiler/Disassembler and ACPICA tools:
794
795iASL: numerous table compiler changes to ensure that the usage of
796yacc/bison syntax is POSIX-compliant.
797
798iASL/disassembler: several simple bug fixes in the data table
799disassembler.
800
801Acpiexec: expanded the initialization file (the -fi option) to initialize
802strings, buffers, packages, and field units.
803
804
805----------------------------------------
80616 August 2019. Summary of changes for version 20190816:
807
808This release is available at https://acpica.org/downloads
809
810
8111) ACPICA kernel-resident subsystem:
812
813Modified the OwnerId mechanism to allow for more Owner Ids. The previous
814limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT
815exceptions on machines with a large number of initialization threads,
816many CPU cores and nested initialization control methods.
817
818Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for
819checking if the given GPE (as represented by a GPE device handle and a
820GPE number) is currently active and dispatching it (if that's the case)
821outside of interrupt context.
822
823Table load: exit the interpreter before initializing objects within the
824new table This prevents re-acquiring the interpreter lock when loading
825tables
826
827Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
828uk Kim
829
830Macros: removed pointer math on a null pointer. Causes warnings on some
831compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR
832instead of using arithmetic.
833
834Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used
835across all "printf-like" internal functions. Also, cleanup all calls to
836such functions (both in 32-bit mode and 64-bit mode) now that they are
837analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
838
839
8402) iASL Compiler/Disassembler and ACPICA tools:
841
842iASL: implemented a new data table compiler flex/bison front-end. This
843change is internal and is not intended to result in changes to the
844compiled code. This new compiler front-end can be invoked using the -tp
845option for now, until the old mechanism is removed.
846
847ASLTS: Implemented a new data table compiler test suite. This test suite
848generates all table templates and compile/disassemble/re-compile/binary-
849compare each file.
850
851iASL: return -1 if AML files were not generated due to compiler errors
852
853iASL: added a warning on use of the now-legacy ASL Processor () keyword.
854
855iASL: added an error on _UID object declaration that returns a String
856within a Processor () declaration. A _UID for a processor must be an
857Integer.
858
859iASL: added a null terminator to name strings that consist only of
860multiple parent prefixes (^)
861
862iASL: added support to compile both ASL and data table files in a single
863command.
864
865Updated the tool generation project files that were recently migrated to
866MSVC 2017 to eliminate all new warnings. The new project files appear in
867the directory \acpica\generate\msvc2017. This change effectively
868deprecates the older project files in \acpica\generate\msvc9.
869
870
871----------------------------------------
87203 July 2019. Summary of changes for version 20190703:
873
874
8751) ACPICA kernel-resident subsystem:
876
877Remove legacy module-level support code. There were still some remnants
878of the legacy module-level code executions. Since we no longer support
879this option, this is essentially dead code and has been removed from the
880ACPICA source.
881
882iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
883scope. If these named objects are declared outside the root scope, they
884will not be invoked by any host Operating System.
885
886Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC
887one) can be enabled in two situations. First, the GPEs with existing _Lxx
888and _Exx methods are enabled implicitly by ACPICA during system
889initialization.  Second, the GPEs without these methods (like GPEs listed
890by _PRW objects for wakeup devices) need to be enabled directly by the
891code that is going to use them (e.g. ACPI power management or device
892drivers).
893
894In the former case, if the status of a given GPE is set to start with,
895its handler method (either _Lxx or _Exx) needs to be invoked to take care
896of the events (possibly) signaled before the GPE was enabled. In the
897latter case, however, the first caller of AcpiEnableGpe() for a given GPE
898should not be expected to care about any events that might be signaled
899through it earlier.  In that case, it is better to clear the status of
900the GPE before enabling it, to prevent stale events from triggering
901unwanted actions (like spurious system resume, for example).
902
903For this reason, modify AcpiEvAddGpeReference() to take an additional
904boolean argument indicating whether or not the GPE status needs to be
905cleared when its reference counter changes from zero to one and make
906AcpiEnableGpe() pass TRUE to it through that new argument.
907
908
9092) iASL Compiler/Disassembler and ACPICA tools:
910
911The tool generation process has been migrated to MSVC 2017, and all
912project files have been upgraded. The new project files appear in the
913directory \acpica\generate\msvc2017. This change effectively deprecates
914the older project files in \acpica\generate\msvc9.
915
916iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
917scope. If these named objects are declared outside the root scope, they
918will not be invoked by any host Operating System
919
920----------------------------------------
92109 May 2019. Summary of changes for version 20190509:
922
923
9241) ACPICA kernel-resident subsystem:
925
926Revert commit  6c43e1a ("ACPICA: Clear status of GPEs before enabling
927them") that causes problems with Thunderbolt controllers to occur if a
928dock device is connected at init time (the xhci_hcd and thunderbolt
929modules crash which prevents peripherals connected through them from
930working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA:
931Dispatch active GPEs at init time") to get undone, so the problem
932addressed by commit ecc1165b8b74 appears again as a result of it.
933
934
9352) iASL Compiler/Disassembler and ACPICA tools:
936
937Reverted iASL: Additional forward reference detection. This change
938reverts forward reference detection for field declarations. The feature
939unintentionally emitted AML bytecode with incorrect package lengths for
940some ASL code related to Fields and OperationRegions. This malformed AML
941can cause systems to crash
942during boot. The malformed AML bytecode is emitted in iASL version
94320190329 and 20190405.
944
945iASL: improve forward reference detection. This change improves forward
946reference detection for named objects inside of scopes. If a parse object
947has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to
948a named object that is declared later in the AML bytecode. This is
949allowed if the reference is inside of a method and the declaration is
950outside of a method like so:
951
952DefinitionBlock(...)
953{
954    Method (TEST)
955    {
956        Return (NUM0)
957    }
958    Name (NUM0,0)
959}
960
961However, if the declaration and reference are both in the same method or
962outside any methods, this is a forward reference and should be marked as
963an error because it would result in runtime errors.
964
965DefinitionBlock(...)
966{
967    Name (BUFF, Buffer (NUM0) {}) // Forward reference
968    Name (NUM0, 0x0)
969
970    Method (TEST)
971    {
972        Local0 = NUM1
973        Name (NUM1, 0x1) // Forward reference
974        return (Local0)
975    }
976}
977
978iASL: Implemented additional buffer overflow analysis for BufferField
979declarations. Check if a buffer index argument to a create buffer field
980operation is beyond the end of the target buffer.
981
982This affects these AML operators:
983
984   AML_CREATE_FIELD_OP
985   AML_CREATE_BIT_FIELD_OP
986   AML_CREATE_BYTE_FIELD_OP
987   AML_CREATE_WORD_FIELD_OP
988   AML_CREATE_DWORD_FIELD_OP
989   AML_CREATE_QWORD_FIELD_OP
990
991 There are three conditions that must be satisfied in order to allow this
992validation at compile time:
993
994   1) The length of the target buffer must be an integer constant
995   2) The index specified in the create* must be an integer constant
996   3) For CreateField, the bit length argument must be non-zero.
997
998Example:
999    Name (BUF1, Buffer() {1,2})
1000    CreateField (BUF1, 7, 9, CF03)  // 3: ERR
1001
1002dsdt.asl     14:     CreateField (BUF1, 7, 9, CF03)  // 3: ERR
1003Error    6165 -                           ^ Buffer index beyond end of
1004target buffer
1005
1006
1007----------------------------------------
100805 April 2019. Summary of changes for version 20190405:
1009
1010
10111) ACPICA kernel-resident subsystem:
1012
1013Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop
1014unconditionally clearing ACPI IRQs during suspend/resume") was added
1015earlier to stop clearing of event status bits unconditionally on suspend
1016and resume paths. Though this change fixed an issue on suspend path, it
1017introduced regressions on several resume paths. In the case of S0ix,
1018events are enabled as part of device suspend path. If status bits for the
1019events are set when they are enabled, it could result in premature wake
1020from S0ix. If status is cleared for any event that is being enabled so
1021that any stale events are cleared out. In case of S0ix, events are
1022enabled as part of device suspend path. If status bits for the events are
1023set when they are enabled, it could result in premature wake from S0ix.
1024
1025This change ensures that status is cleared for any event that is being
1026enabled so that any stale events are cleared out.
1027
1028
10292) iASL Compiler/Disassembler and ACPICA tools:
1030
1031iASL: Implemented an enhanced multiple file compilation that combines
1032named objects from all input files to a single namespace. With this
1033feature, any unresolved external declarations as well as duplicate named
1034object declarations can be detected during compilation rather than
1035generating errors much later at runtime. The following commands are
1036examples that utilize this feature:
1037    iasl dsdt.asl ssdt.asl
1038    iasl dsdt.asl ssdt1.asl ssdt2.asl
1039    iasl dsdt.asl ssdt*.asl
1040
1041----------------------------------------
104229 March 2019. Summary of changes for version 20190329:
1043
1044
10451) ACPICA kernel-resident subsystem:
1046
1047Namespace support: Remove the address nodes from global list after method
1048termination. The global address list contains pointers to namespace nodes
1049that represent Operation Regions. This change properly removes Operation
1050Region namespace nodes that are declared dynamically during method
1051execution.
1052
1053Linux: Use a different debug default than ACPICA. There was a divergence
1054between Linux and the ACPICA codebases. In order to resolve this
1055divergence, Linux now declares its own debug default in aclinux.h
1056
1057Renamed some internal macros to improve code understanding and
1058maintenance. The macros below all operate on single 4-character ACPI
1059NameSegs, not generic strings (old -> new):
1060    ACPI_NAME_SIZE    -> ACPI_NAMESEG_SIZE
1061    ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
1062    ACPI_MOVE_NAME    -> ACPI_COPY_NAMESEG
1063
1064Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
1065table.
1066
1067Test suite: Update makefiles, add PCC operation region support
1068
1069
10702) iASL Compiler/Disassembler and Tools:
1071
1072iASL: Implemented additional illegal forward reference detection. Now
1073detect and emit an error upon detection of a forward reference from a
1074Field to an Operation Region. This will fail at runtime if allowed to
1075pass the compiler.
1076
1077AcpiExec: Add an address list check for dynamic Operation Regions. This
1078feature performs a sanity test for each node the global address list.
1079This is done in order to ensure that all dynamic operation regions are
1080properly removed from the global address list and no dangling pointers
1081are left behind.
1082
1083Disassembler: Improved generation of resource pathnames. This change
1084improves the code that generates resource descriptor and resource tag
1085pathnames. The original code used a bunch of str* C library functions
1086that caused warnings on some compilers.
1087
1088iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
1089function can overwrite buffers if the calling code is not very careful.
1090In the case of generating a module/table header, use of memmove is a
1091better implementation.
1092
1093
10943) Status of new features that have not been completed at this time:
1095
1096iASL: Implementing an enhanced multiple file compilation into a single
1097namespace feature (Status): This feature will be released soon, and
1098allows multiple ASL files to be compiled into the same single namespace.
1099By doing so, any unresolved external declarations as well as duplicate
1100named object declarations can be detected during compilation (rather than
1101later during runtime). The following commands are examples that utilize
1102this feature:
1103    iasl dsdt.asl ssdt.asl
1104    iasl dsdt.asl ssdt1.asl ssdt2.asl
1105    iasl dsdt.asl ssdt*.asl
1106
1107ASL tutorial status: Feedback is being gathered internally and the
1108current plan is to publish this tutorial on the ACPICA website after a
1109final review by a tech writer.
1110
1111----------------------------------------
111215 February 2019. Summary of changes for version 20190215:
1113
1114
11150) Support for ACPI specification version 6.3:
1116
1117Add PCC operation region support for the AML interpreter. This adds PCC
1118operation region support in the AML interpreter and a default handler for
1119acpiexec. The change also renames the PCC region address space keyword to
1120PlatformCommChannel.
1121
1122Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG.
1123These methods provide OSPM with health information and device boot
1124status.
1125
1126PDTT: Add TriggerOrder to the PCC Identifier structure. The field value
1127defines if the trigger needs to be invoked by OSPM before or at the end
1128of kernel crash dump processing/handling operation.
1129
1130SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT
1131is used for describing devices such as heterogeneous processors,
1132accelerators, GPUs, and IO devices with integrated compute or DMA
1133engines.
1134
1135MADT: Add support for statistical profiling in GICC. Statistical
1136profiling extension (SPE) is an architecture-specific feature for ARM.
1137
1138MADT: Add online capable flag. If this bit is set, system hardware
1139supports enabling this processor during OS runtime.
1140
1141New Error Disconnect Recover Notification value. There are a number of
1142scenarios where system Firmware in collaboration with hardware may
1143disconnect one or more devices from the rest of the system for purposes
1144of error containment. Firmware can use this new notification value to
1145alert OSPM of such a removal.
1146
1147PPTT: New additional fields in Processor Structure Flags. These flags
1148provide more information about processor topology.
1149
1150NFIT/Disassembler: Change a field name from "Address Range" to "Region
1151Type".
1152
1153HMAT updates: make several existing fields to be reserved as well as
1154rename subtable 0 to "memory proximity domain attributes".
1155
1156GTDT: Add support for new GTDT Revision 3. This revision adds information
1157for the EL2 timer.
1158
1159iASL: Update the HMAT example template for new fields.
1160
1161iASL: Add support for the new revision of the GTDT (Rev 3).
1162
1163
11641) ACPICA kernel-resident subsystem:
1165
1166AML Parser: fix the main AML parse loop to correctly skip erroneous
1167extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
1168byte extended opcodes. If an error occurs during an AML table load, the
1169AML parser will continue loading the table by skipping the offending
1170opcode. This implements a "load table at any cost" philosophy.
1171
1172
11732) iASL Compiler/Disassembler and Tools:
1174
1175iASL: Add checks for illegal object references, such as a reference
1176outside of method to an object within a method. Such an object is only
1177temporary.
1178
1179iASL: Emit error for creation of a zero-length operation region. Such a
1180region is rather pointless. If encountered, a runtime error is also
1181implemented in the interpreter.
1182
1183Debugger: Fix a possible fault with the "test objects" command.
1184
1185iASL: Makefile: support parent directory filenames containing embedded
1186spaces.
1187
1188iASL: Update the TPM2 template to revision 4.
1189
1190iASL: Add the ability to report specific warnings or remarks as errors.
1191
1192Disassembler: Disassemble OEMx tables as actual AML byte code.
1193Previously, these tables were treated as "unknown table".
1194
1195iASL: Add definition and disassembly for TPM2 revision 3.
1196
1197iASL: Add support for TPM2 rev 3 compilation.
1198
1199
1200----------------------------------------
120108 January 2019. Summary of changes for version 20190108:
1202
1203
12041) ACPICA kernel-resident subsystem:
1205
1206Updated all copyrights to 2019. This affects all source code modules.
1207
1208
12092) iASL Compiler/Disassembler and Tools:
1210
1211ASL test suite (ASLTS): Updated all copyrights to 2019.
1212
1213Tools: Updated all signon copyrights to 2019.
1214
1215AcpiExec: Added a new option to dump extra information concerning any
1216memory leaks detected by the internal object/cache tracking mechanism. -
1217va
1218
1219iASL: Updated the table template for the TPM2 table to the newest version
1220of the table (Revision 4)
1221
1222
1223----------------------------------------
122413 December 2018. Summary of changes for version 20181213:
1225
1226
12271) ACPICA Kernel-resident Subsystem:
1228
1229Fixed some buffer length issues with the GenericSerialBus, related to two
1230of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
1231which are rarely seen in the field. For these, the LEN field of the ASL
1232buffer is now ignored. Hans de Goede
1233
1234Implemented a new object evaluation trace mechanism for control methods
1235and data objects. This includes nested control methods. It is
1236particularly useful for examining the ACPI execution during system
1237initialization since the output is relatively terse. The flag below
1238enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
1239   #define ACPI_LV_EVALUATION          0x00080000
1240
1241Examples:
1242   Enter evaluation       :  _SB.PCI0._INI (Method)
1243   Exit evaluation        :  _SB.PCI0._INI
1244   Enter evaluation       :  _OSI (Method)
1245   Exit evaluation        :  _OSI
1246   Enter evaluation       :  _SB.PCI0.TEST (Method)
1247   Nested method call     :     _SB.PCI0.NST1
1248   Exit nested method     :     _SB.PCI0.NST1
1249   Exit evaluation        :  _SB.PCI0.TEST
1250
1251Added two recently-defined _OSI strings. See
1252https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
1253osi.
1254   "Windows 2018"
1255   "Windows 2018.2"
1256
1257Update for buffer-to-string conversions via the ToHexString ASL operator.
1258A "0x" is now prepended to each of the hex values in the output string.
1259This provides compatibility with other ACPI implementations. The ACPI
1260specification is somewhat vague on this issue.
1261   Example output string after conversion:
1262"0x01,0x02,0x03,0x04,0x05,0x06"
1263
1264Return a run-time error for TermArg expressions within individual package
1265elements. Although this is technically supported by the ASL grammar,
1266other ACPI implementations do not support this either. Also, this fixes a
1267fault if this type of construct is ever encountered (it never has been).
1268
1269
12702) iASL Compiler/Disassembler and Tools:
1271
1272iASL: Implemented a new compile option (-ww) that will promote individual
1273warnings and remarks to errors. This is intended to enhance the firmware
1274build process.
1275
1276AcpiExec: Implemented a new command-line option (-eo) to support the new
1277object evaluation trace mechanism described above.
1278
1279Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
1280instead of a "unknown table" message.
1281
1282AcpiHelp: Improved support for the "special" predefined names such as
1283_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be
1284used for "xx" and "x".
1285
1286----------------------------------------
128731 October 2018. Summary of changes for version 20181031:
1288
1289
1290An Operation Region regression was fixed by properly adding address
1291ranges to a global list during initialization. This allows OS to
1292accurately check for overlapping regions between native devices (such as
1293PCI) and Operation regions as well as checking for region conflicts
1294between two Operation Regions.
1295
1296Added support for the 2-byte extended opcodes in the code/feature that
1297attempts to continue parsing during the table load phase. Skip parsing
1298Device declarations (and other extended opcodes) when an error occurs
1299during parsing. Previously, only single-byte opcodes were supported.
1300
1301Cleanup: Simplified the module-level code support by eliminating a
1302useless global variable (AcpiGbl_GroupModuleLeveCode).
1303
1304
13052) iASL Compiler/Disassembler and Tools:
1306
1307iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
1308could cause a fault in the preprocessor. This was an inadvertent side-
1309effect from moving more allocations/frees to the local cache/memory
1310mechanism.
1311
1312iASL: Enhanced error detection by validating that all NameSeg elements
1313within a NamePatch actually exist. The previous behavior was spotty at
1314best, and such errors could be improperly ignored at compiler time (never
1315at runtime, however. There are two new error messages, as shown in the
1316examples below:
1317
1318dsdt.asl     33:     CreateByteField (TTTT.BXXX, 1, CBF1)
1319Error    6161 -                              ^ One or more objects within
1320the Pathname do not exist (TTTT.BXXX)
1321
1322dsdt.asl     34:     CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
1323Error    6160 -        One or more prefix Scopes do not exist ^
1324(BBBB.CBF1)
1325
1326iASL: Disassembler/table-compiler: Added support for the static data
1327table TPM2 revision 3 (an older version of TPM2). The support has been
1328added for the compiler and the disassembler.
1329
1330Fixed compilation of DOS format data table file on Unix/Linux systems.
1331iASL now properly detects line continuations (\) for DOS format data
1332table definition language files on when executing on Unix/Linux.
1333
1334----------------------------------------
133503 October 2018. Summary of changes for version 20181003:
1336
1337
13382) iASL Compiler/Disassembler and Tools:
1339
1340Fixed a regression introduced in version 20180927 that could cause the
1341compiler to fault, especially with NamePaths containing one or more
1342carats (^). Such as: ^^_SB_PCI0
1343
1344Added a new remark for the Sleep() operator when the sleep time operand
1345is larger than one second. This is a very long time for the ASL/BIOS code
1346and may not be what was intended by the ASL writer.
1347
1348----------------------------------------
134927 September 2018. Summary of changes for version 20180927:
1350
1351
13521) ACPICA kernel-resident subsystem:
1353
1354Updated the GPE support to clear the status of all ACPI events when
1355entering any/all sleep states in order to avoid premature wakeups. In
1356theory, this may cause some wakeup events to be missed, but the
1357likelihood of this is small. This change restores the original behavior
1358of the ACPICA code in order to fix a regression seen from the previous
1359"Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
1360This regression could cause some systems to incorrectly wake immediately.
1361
1362Updated the execution of the _REG methods during initialization and
1363namespace loading to bring the behavior into closer conformance to the
1364ACPI specification and other ACPI implementations:
1365
1366From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
1367    "Control methods must assume all operation regions are inaccessible
1368until the _REG(RegionSpace, 1) method is executed"
1369
1370    "The exceptions to this rule are:
13711.  OSPM must guarantee that the following operation regions are always
1372accessible:
1373    SystemIO operation regions.
1374    SystemMemory operation regions when accessing memory returned by the
1375System Address Map reporting interfaces."
1376
1377Since the state of both the SystemIO and SystemMemory address spaces are
1378defined by the specification to never change, this ACPICA change ensures
1379that now _REG is never called on them. This solves some problems seen in
1380the field and provides compatibility with other ACPI implementations. An
1381update to the upcoming new version of the ACPI specification will help
1382clarify this behavior.
1383
1384Updated the implementation of support for the Generic Serial Bus. For the
1385"bidirectional" protocols, the internal implementation now automatically
1386creates a return data buffer of the maximum size (255). This handles the
1387worst-case for data that is returned from the serial bus handler, and
1388fixes some problems seen in the field. This new buffer is directly
1389returned to the ASL. As such, there is no true "bidirectional" buffer,
1390which matches the ACPI specification. This is the reason for the "double
1391store" seen in the example ASL code in the specification, shown below:
1392
1393Word Process Call (AttribProcessCall):
1394    OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
1395    Field(TOP1, BufferAcc, NoLock, Preserve)
1396    {
1397        FLD1, 8, // Virtual register at command value 1.
1398    }
1399
1400    Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
1401                             // as BUFF
1402    CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
1403
1404    Store(0x5416, DATA)               // Save 0x5416 into the data buffer
1405    Store(Store(BUFF, FLD1), BUFF)    // Invoke a write/read Process Call
1406transaction
1407                           // This is the "double store". The write to
1408                           // FLD1 returns a new buffer, which is stored
1409                           // back into BUFF with the second Store.
1410
1411
14122) iASL Compiler/Disassembler and Tools:
1413
1414iASL: Implemented detection of extraneous/redundant uses of the Offset()
1415operator within a Field Unit list. A remark is now issued for these. For
1416example, the first two of the Offset() operators below are extraneous.
1417Because both the compiler and the interpreter track the offsets
1418automatically, these Offsets simply refer to the current offset and are
1419unnecessary. Note, when optimization is enabled, the iASL compiler will
1420in fact remove the redundant Offset operators and will not emit any AML
1421code for them.
1422
1423    OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
1424    Field (OPR1)
1425    {
1426        Offset (0),     // Never needed
1427        FLD1, 32,
1428        Offset (4),     // Redundant, offset is already 4 (bytes)
1429        FLD2, 8,
1430        Offset (64),    // OK use of Offset.
1431        FLD3, 16,
1432    }
1433dsdt.asl     14:         Offset (0),
1434Remark   2158 -                 ^ Unnecessary/redundant use of Offset
1435operator
1436
1437dsdt.asl     16:         Offset (4),
1438Remark   2158 -                 ^ Unnecessary/redundant use of Offset
1439operator
1440
1441----------------------------------------
144210 August 2018. Summary of changes for version 20180810:
1443
1444
14451) ACPICA kernel-resident subsystem:
1446
1447Initial ACPI table loading: Attempt to continue loading ACPI tables
1448regardless of malformed AML. Since migrating table initialization to the
1449new module-level code support, the AML interpreter rejected tables upon
1450any ACPI error encountered during table load. This is a problem because
1451non-serious ACPI errors during table load do not necessarily mean that
1452the entire definition block (DSDT or SSDT) is invalid. This change
1453improves the table loading by ignoring some types of errors that can be
1454generated by incorrect AML. This can range from object type errors, scope
1455errors, and index errors.
1456
1457Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
1458during suspend/resume. The status of ACPI events is no longer cleared
1459when entering the ACPI S5 system state (power off) which caused some
1460systems to power up immediately after turning off power in certain
1461situations. This was a functional regression. It was fixed by clearing
1462the status of all ACPI events again when entering S5 (for system-wide
1463suspend or hibernation the clearing of the status of all events is not
1464desirable, as it might cause the kernel to miss wakeup events sometimes).
1465Rafael Wysocki.
1466
1467
14682) iASL Compiler/Disassembler and Tools:
1469
1470AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
1471elements listed in the initialization file were previously initialized
1472after the table load and before executing module-level code blocks.
1473Recent changes in the module-level code support means that the table load
1474becomes a large control method execution. If fields are used within
1475module-level code and we are executing with the -fi option, the
1476initialization values were used to initialize the namespace object(s)
1477only after the table was finished loading. This change Provides an early
1478initialization of objects specified in the initialization file so that
1479field unit values are populated during the table load (not after the
1480load).
1481
1482AcpiExec: Fixed a small memory leak regression that could result in
1483warnings during exit of the utility. These warnings were similar to
1484these:
1485    0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
1486    0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
1487
1488----------------------------------------
148929 June 2018. Summary of changes for version 20180629:
1490
1491
14921) iASL Compiler/Disassembler and Tools:
1493
1494iASL: Fixed a regression related to the use of the ASL External
1495statement. Error checking for the use of the External() statement has
1496been relaxed. Previously, a restriction on the use of External meant that
1497the referenced named object was required to be defined in a different
1498table (an SSDT). Thus it would be an error to declare an object as an
1499external and then define the same named object in the same table. For
1500example:
1501    DefinitionBlock (...)
1502    {
1503        External (DEV1)
1504        Device (DEV1){...} // This was an error
1505    }
1506However, this behavior has caused regressions in some existing ASL code,
1507because there is code that depends on named objects and externals (with
1508the same name) being declared in the same table. This change will allow
1509the ASL code above to compile without errors or warnings.
1510
1511iASL: Implemented ASL language extensions for four operators to make some
1512of their arguments optional instead of required:
1513    1) Field (RegionName, AccessType, LockRule, UpdateRule)
1514    2) BankField (RegionName, BankName, BankValue,
1515                AccessType, LockRule, UpdateRule)
1516    3) IndexField (IndexName, DataName,
1517                AccessType, LockRule, UpdateRule)
1518For the Field operators above, the AccessType, LockRule, and UpdateRule
1519are now optional arguments. The default values are:
1520        AccessType: AnyAcc
1521        LockRule:   NoLock
1522        UpdateRule: Preserve
1523    4) Mutex (MutexName, SyncLevel)
1524For this operator, the SyncLevel argument is now optional. This argument
1525is rarely used in any meaningful way by ASL code, and thus it makes sense
1526to make it optional. The default value is:
1527        SyncLevel:  0
1528
1529iASL: Attempted use of the ASL Unload() operator now results in the
1530following warning:
1531    "Unload is not supported by all operating systems"
1532This is in fact very true, and the Unload operator may be completely
1533deprecated in the near future.
1534
1535AcpiExec: Fixed a regression for the -fi option (Namespace initialization
1536file. Recent changes in the ACPICA module-level code support altered the
1537table load/initialization sequence . This means that the table load has
1538become a large method execution of the table itself. If Operation Region
1539Fields are used within any module-level code and the -fi option was
1540specified, the initialization values were populated only after the table
1541had completely finished loading (and thus the module-level code had
1542already been executed). This change moves the initialization of objects
1543listed in the initialization file to before the table is executed as a
1544method. Field unit values are now initialized before the table execution
1545is performed.
1546
1547----------------------------------------
154831 May 2018. Summary of changes for version 20180531:
1549
1550
15511) ACPICA kernel-resident Subsystem:
1552
1553Implemented additional support to help ensure that a DSDT or SSDT is
1554fully loaded even if errors are incurred during the load. The majority of
1555the problems that are seen is the failure of individual AML operators
1556that occur during execution of any module-level code (MLC) existing in
1557the table. This support adds a mechanism to abort the current ASL
1558statement (AML opcode), emit an error message, and to simply move on to
1559the next opcode -- instead of aborting the entire table load. This is
1560different than the execution of a control method where the entire method
1561is aborted upon any error. The goal is to perform a very "best effort" to
1562load the ACPI tables. The most common MLC errors that have been seen in
1563the field are direct references to unresolved ASL/AML symbols (referenced
1564directly without the use of the CondRefOf operator to validate the
1565symbol). This new ACPICA behavior is now compatible with other ACPI
1566implementations.
1567
1568Interpreter: The Unload AML operator is no longer supported for the
1569reasons below. An AE_NOT_IMPLEMENTED exception is returned.
15701) A correct implementation on at least some hosts may not be possible.
15712) Other ACPI implementations do not correctly/fully support it.
15723) It requires host device driver support which is not known to exist.
1573    (To properly support namespace unload out from underneath.)
15744) This AML operator has never been seen in the field.
1575
1576Parser: Added a debug option to dump AML parse sub-trees as they are
1577being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
1578ACPI_DB_PARSE_TREES.
1579
1580Debugger: Reduced the verbosity for errors incurred during table load and
1581module-level code execution.
1582
1583Completed an investigation into adding a namespace node "owner list"
1584instead of the current "owner ID" associated with namespace nodes. This
1585list would link together all nodes that are owned by an individual
1586control method. The purpose would be to enhance control method execution
1587by speeding up cleanup during method exit (all namespace nodes created by
1588a method are deleted upon method termination.) Currently, the entire
1589namespace must be searched for matching owner IDs if (and only if) the
1590method creates named objects outside of the local scope. However, by far
1591the most common case is that methods create objects locally, not outside
1592the method scope. There is already an ACPICA optimization in place that
1593only searches the entire namespace in the rare case of a method creating
1594objects elsewhere in the namespace. Therefore, it is felt that the
1595overhead of adding an additional pointer to each namespace node to
1596implement the owner list makes this feature unnecessary.
1597
1598
15992) iASL Compiler/Disassembler and Tools:
1600
1601iASL, Disassembler, and Template generator: Implemented support for
1602Revision D of the IORT table. Adds a new subtable that is used to specify
1603SMMUv3 PMCGs. rmurphy-arm.
1604
1605Disassembler: Restored correct table header validation for the "special"
1606ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
1607table header and must be special-cased. This was a regression that has
1608been present for apparently a long time.
1609
1610AcpiExec: Reduced verbosity of the local exception handler implemented
1611within acpiexec. This handler is invoked by ACPICA upon any exceptions
1612generated during control method execution. A new option was added: -vh
1613restores the original verbosity level if desired.
1614
1615AcpiExec: Changed the default base from decimal to hex for the -x option
1616(set debug level). This simplifies the use of this option and matches the
1617behavior of the corresponding iASL -x option.
1618
1619AcpiExec: Restored a force-exit on multiple control-c (sigint)
1620interrupts. This allows program termination even if other issues cause
1621the control-c to fail.
1622
1623ASL test suite (ASLTS): Added tests for the recently implemented package
1624element resolution mechanism that allows forward references to named
1625objects from individual package elements (this mechanism provides
1626compatibility with other ACPI implementations.)
1627
1628
1629----------------------------------------
16308 May 2018. Summary of changes for version 20180508:
1631
1632
16331) ACPICA kernel-resident subsystem:
1634
1635Completed the new (recently deployed) package resolution mechanism for
1636the Load and LoadTable ASL/AML operators. This fixes a regression that
1637was introduced in version 20180209 that could result in an
1638AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
1639(SSDT) that contains package objects.
1640
1641
16422) iASL Compiler/Disassembler and Tools:
1643
1644AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
16451 MB. This change allows for table offsets within the acpidump file to be
1646up to 8 characters. These changes are backwards compatible with existing
1647acpidump files.
1648
1649
1650----------------------------------------
165127 April 2018. Summary of changes for version 20180427:
1652
1653
16541) ACPICA kernel-resident subsystem:
1655
1656Debugger: Added support for Package objects in the "Test Objects"
1657command. This command walks the entire namespace and evaluates all named
1658data objects (Integers, Strings, Buffers, and now Packages).
1659
1660Improved error messages for the namespace root node. Originally, the root
1661was referred to by the confusing string "\___". This has been replaced by
1662"Namespace Root" for clarification.
1663
1664Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
1665Ian King <colin.king@canonical.com>.
1666
1667
16682) iASL Compiler/Disassembler and Tools:
1669
1670iASL: Implemented support to detect and flag illegal forward references.
1671For compatibility with other ACPI implementations, these references are
1672now illegal at the root level of the DSDT or SSDTs. Forward references
1673have always been illegal within control methods. This change should not
1674affect existing ASL/AML code because of the fact that these references
1675have always been illegal in the other ACPI implementation.
1676
1677iASL: Added error messages for the case where a table OEM ID and OEM
1678TABLE ID strings are longer than the ACPI-defined length. Previously,
1679these strings were simply silently truncated.
1680
1681iASL: Enhanced the -tc option (which creates an AML hex file in C,
1682suitable for import into a firmware project):
1683  1) Create a unique name for the table, to simplify use of multiple
1684SSDTs.
1685  2) Add a protection #ifdef in the file, similar to a .h header file.
1686With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd,
1687evan.lloyd@arm.com
1688
1689AcpiExec: Added a new option, -df, to disable the local fault handler.
1690This is useful during debugging, where it may be desired to drop into a
1691debugger on a fault.
1692
1693----------------------------------------
169413 March 2018. Summary of changes for version 20180313:
1695
1696
16971) ACPICA kernel-resident subsystem:
1698
1699Implemented various improvements to the GPE support:
1700
17011) Dispatch all active GPEs at initialization time so that no GPEs are
1702lost.
17032) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
1704before devices are enumerated.
17053) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
1706IRQs are not lost.
17074) Add parallel GPE handling to eliminate the possibility of dispatching
1708the same GPE twice.
17095) Dispatch any pending GPEs after enabling for the first time.
1710
1711AcpiGetObjectInfo - removed support for the _STA method. This was causing
1712problems on some platforms.
1713
1714Added a new _OSI string, "Windows 2017.2".
1715
1716Cleaned up and simplified the module-level code support. These changes
1717are in preparation for the eventual removal of the legacy MLC support
1718(deferred execution), replaced by the new MLC architecture which executes
1719the MLC as a table is loaded (DSDT/SSDTs).
1720
1721Changed a compile-time option to a runtime option. Changes the option to
1722ignore ACPI table load-time package resolution errors into a runtime
1723option. Used only for platforms that generate many AE_NOT_FOUND errors
1724during boot. AcpiGbl_IgnorePackageResolutionErrors.
1725
1726Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
1727ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
1728compilation errors from unused variables (seen with some compilers).
1729
1730
17312) iASL Compiler/Disassembler and Tools:
1732
1733ASLTS: parallelized execution in order to achieve an (approximately) 2X
1734performance increase.
1735
1736ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
1737error reporting.
1738
1739----------------------------------------
174009 February 2018. Summary of changes for version 20180209:
1741
1742
17431) ACPICA kernel-resident subsystem:
1744
1745Completed the final integration of the recent changes to Package Object
1746handling and the module-level AML code support. This allows forward
1747references from individual package elements when the package object is
1748declared from within module-level code blocks. Provides compatibility
1749with other ACPI implementations.
1750
1751The new architecture for the AML module-level code has been completed and
1752is now the default for the ACPICA code. This new architecture executes
1753the module-level code in-line as the ACPI table is loaded/parsed instead
1754of the previous architecture which deferred this code until after the
1755table was fully loaded. This solves some ASL code ordering issues and
1756provides compatibility with other ACPI implementations. At this time,
1757there is an option to fallback to the earlier architecture, but this
1758support is deprecated and is planned to be completely removed later this
1759year.
1760
1761Added a compile-time option to ignore AE_NOT_FOUND exceptions during
1762resolution of named reference elements within Package objects. Although
1763this is potentially a serious problem, it can generate a lot of
1764noise/errors on platforms whose firmware carries around a bunch of unused
1765Package objects. To disable these errors, define
1766ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
1767errors are always reported for ACPICA applications such as AcpiExec.
1768
1769Fixed a regression related to the explicit type-conversion AML operators
1770(ToXXXX). The regression was introduced early in 2017 but was not seen
1771until recently because these operators are not fully supported by other
1772ACPI implementations and are thus rarely used by firmware developers. The
1773operators are defined by the ACPI specification to not implement the
1774"implicit result object conversion". The regression incorrectly
1775introduced this object conversion for the following explicit conversion
1776operators:
1777    ToInteger
1778    ToString
1779    ToBuffer
1780    ToDecimalString
1781    ToHexString
1782    ToBCD
1783    FromBCD
1784
1785
17862) iASL Compiler/Disassembler and Tools:
1787
1788iASL: Fixed a problem with the compiler constant folding feature as
1789related to the ToXXXX explicit conversion operators. These operators do
1790not support the "implicit result object conversion" by definition. Thus,
1791ASL expressions that use these operators cannot be folded to a simple
1792Store operator because Store implements the implicit conversion. This
1793change uses the CopyObject operator for the ToXXXX operator folding
1794instead. CopyObject is defined to not implement implicit result
1795conversions and is thus appropriate for folding the ToXXXX operators.
1796
1797iASL: Changed the severity of an error condition to a simple warning for
1798the case where a symbol is declared both locally and as an external
1799symbol. This accommodates existing ASL code.
1800
1801AcpiExec: The -ep option to enable the new architecture for module-level
1802code has been removed. It is replaced by the -dp option which instead has
1803the opposite effect: it disables the new architecture (the default) and
1804enables the legacy architecture. When the legacy code is removed in the
1805future, the -dp option will be removed also.
1806
1807----------------------------------------
180805 January 2018. Summary of changes for version 20180105:
1809
1810
18111) ACPICA kernel-resident subsystem:
1812
1813Updated all copyrights to 2018. This affects all source code modules.
1814
1815Fixed a possible build error caused by an unresolved reference to the
1816AcpiUtSafeStrncpy function.
1817
1818Removed NULL pointer arithmetic in the various pointer manipulation
1819macros. All "(void *) NULL" constructs are converted to "(void *) 0".
1820This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
1821
1822Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
1823Mittal.
1824
1825
18262) iASL Compiler/Disassembler and Tools:
1827
1828ASLTS: Updated all copyrights to 2018.
1829
1830Tools: Updated all signon copyrights to 2018.
1831
1832AcpiXtract: Fixed a regression related to ACPI table signatures where the
1833signature was truncated to 3 characters (instead of 4).
1834
1835AcpiExec: Restore the original terminal mode after the use of the -v and
1836-vd options.
1837
1838ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
1839
1840----------------------------------------
184114 December 2017. Summary of changes for version 20171214:
1842
1843
18441) ACPICA kernel-resident subsystem:
1845
1846Fixed a regression in the external (public) AcpiEvaluateObjectTyped
1847interface where the optional "pathname" argument had inadvertently become
1848a required argument returning an error if omitted (NULL pointer
1849argument).
1850
1851Fixed two possible memory leaks related to the recently developed "late
1852resolution" of reference objects within ASL Package Object definitions.
1853
1854Added two recently defined _OSI strings: "Windows 2016" and "Windows
18552017". Mario Limonciello.
1856
1857Implemented and deployed a safer version of the C library function
1858strncpy:  AcpiUtSafeStrncpy. The intent is to at least prevent the
1859creation of unterminated strings as a possible result of a standard
1860strncpy.
1861
1862Cleaned up and restructured the global variable file (acglobal.h). There
1863are many changes, but no functional changes.
1864
1865
18662) iASL Compiler/Disassembler and Tools:
1867
1868iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
1869optional OemData field at the end of the table was incorrectly required
1870for proper compilation. It is now correctly an optional field.
1871
1872ASLTS: The entire suite was converted from standard ASL to the ASL+
1873language, using the ASL-to-ASL+ converter which is integrated into the
1874iASL compiler. A binary compare of all output files has verified the
1875correctness of the conversion.
1876
1877iASL: Fixed the source code build for platforms where "char" is unsigned.
1878This affected the iASL lexer only. Jung-uk Kim.
1879
1880----------------------------------------
188110 November 2017. Summary of changes for version 20171110:
1882
1883
18841) ACPICA kernel-resident subsystem:
1885
1886This release implements full support for ACPI 6.2A:
1887    NFIT - Added a new subtable, "Platform Capabilities Structure"
1888No other changes to ACPICA were required, since ACPI 6.2A is primarily an
1889errata release of the specification.
1890
1891Other ACPI table changes:
1892    IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
1893    PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
1894Linton
1895
1896Utilities: Modified the string/integer conversion functions to use
1897internal 64-bit divide support instead of a native divide. On 32-bit
1898platforms, a 64-bit divide typically requires a library function which
1899may not be present in the build (kernel or otherwise).
1900
1901Implemented a targeted error message for timeouts returned from the
1902Embedded Controller device driver. This is seen frequently enough to
1903special-case an AE_TIME returned from an EC operation region access:
1904    "Timeout from EC hardware or EC device driver"
1905
1906Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
1907runtime error messages have the identical prefix.
1908
1909
19102) iASL Compiler/Disassembler and Tools:
1911
1912AcpiXtract: Fixed a problem with table header detection within the
1913acpidump file. Processing a table could be ended early if a 0x40 (@)
1914appears in the original binary table, resulting in the @ symbol appearing
1915in the decoded ASCII field at the end of the acpidump text line. The
1916symbol caused acpixtract to incorrectly think it had reached the end of
1917the current table and the beginning of a new table.
1918
1919AcpiXtract: Added an option (-f) to ignore some errors during table
1920extraction. This initial implementation ignores non-ASCII and non-
1921printable characters found in the acpidump text file.
1922
1923TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
1924for ASLTS. This feature is used to track memory allocations from
1925different memory caches within the ACPICA code. At the end of an ASLTS
1926run, these memory statistics are recorded and stored in a log file.
1927
1928Debugger (user-space version): Implemented a simple "Background" command.
1929Creates a new thread to execute a control method in the background, while
1930control returns to the debugger prompt to allow additional commands.
1931    Syntax: Background <Namepath> [Arguments]
1932
1933----------------------------------------
193429 September 2017. Summary of changes for version 20170929:
1935
1936
19371) ACPICA kernel-resident subsystem:
1938
1939Redesigned and implemented an improved ASL While() loop timeout
1940mechanism. This mechanism is used to prevent infinite loops in the kernel
1941AML interpreter caused by either non-responsive hardware or incorrect AML
1942code. The new implementation uses AcpiOsGetTimer instead of a simple
1943maximum loop count, and is thus more accurate and constant across
1944different machines. The default timeout is currently 30 seconds, but this
1945may be adjusted later.
1946
1947Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
1948better reflect the new implementation of the loop timeout mechanism.
1949
1950Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
1951and to fix an off-by-one error. Jung-uk Kim.
1952
1953Fixed an EFI build problem by updating the makefiles to for a new file
1954that was added, utstrsuppt.c
1955
1956
19572) iASL Compiler/Disassembler and Tools:
1958
1959Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
1960includes support in the table disassembler, compiler, and template
1961generator.
1962
1963iASL: Added an exception for an illegal type of recursive method
1964invocation. If a method creates named objects, the first recursive call
1965will fail at runtime. This change adds an error detection at compile time
1966to catch the problem up front. Note: Marking such a method as
1967"serialized" will not help with this problem, because the same thread can
1968acquire the method mutex more than once. Example compiler and runtime
1969output:
1970
1971    Method (MTH1)
1972    {
1973        Name (INT1, 1)
1974        MTH1 ()
1975    }
1976
1977    dsdt.asl     22: MTH1 ()
1978    Error    6152 -  ^ Illegal recursive call to method
1979                       that creates named objects (MTH1)
1980
1981Previous runtime exception:
1982    ACPI Error: [INT1] Namespace lookup failure,
1983    AE_ALREADY_EXISTS (20170831/dswload2-465)
1984
1985iASL: Updated support for External() opcodes to improve namespace
1986management and error detection. These changes are related to issues seen
1987with multiple-segment namespace pathnames within External declarations,
1988such as below:
1989
1990    External(\_SB.PCI0.GFX0, DeviceObj)
1991    External(\_SB.PCI0.GFX0.ALSI)
1992
1993iASL: Implemented support for multi-line error/warning messages. This
1994enables more detailed and helpful error messages as below, from the
1995initial deployment for the duplicate names error:
1996
1997    DSDT.iiii   1692:       Device(PEG2) {
1998    Error    6074 -                  ^ Name already exists in scope
1999(PEG2)
2000
2001        Original name creation/declaration below:
2002        DSDT.iiii     93:   External(\_SB.PCI0.PEG2, DeviceObj)
2003
2004AcpiXtract: Added additional flexibility to support differing input hex
2005dump formats. Specifically, hex dumps that contain partial disassembly
2006and/or comments within the ACPI table data definition. There exist some
2007dump utilities seen in the field that create this type of hex dump (such
2008as Simics). For example:
2009
2010    DSDT @ 0xdfffd0c0 (10999 bytes)
2011        Signature DSDT
2012        Length 10999
2013        Revision 1
2014        Checksum 0xf3 (Ok)
2015        OEM_ID BXPC
2016        OEM_table_id BXDSDT
2017        OEM_revision 1
2018        Creator_id 1280593481
2019        Creator_revision 537399345
2020      0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
2021      ...
2022      2af0: 5f 4c 30 46 00 a4 01
2023
2024Test suite: Miscellaneous changes/fixes:
2025    More cleanup and simplification of makefiles
2026    Continue compilation of test cases after a compile failure
2027    Do not perform binary compare unless both files actually exist
2028
2029iASL: Performed some code/module restructuring. Moved all memory
2030allocation functions to new modules. Two new files, aslallocate.c and
2031aslcache.c
2032
2033----------------------------------------
203431 August 2017. Summary of changes for version 20170831:
2035
2036
20371) ACPICA kernel-resident subsystem:
2038
2039Implemented internal support for full 64-bit addresses that appear in all
2040Generic Address Structure (GAS) structures. Previously, only the lower 32
2041bits were used. Affects the use of GAS structures in the FADT and other
2042tables, as well as the GAS structures passed to the AcpiRead and
2043AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
2044
2045Added header support for the PDTT ACPI table (Processor Debug Trigger
2046Table). Full support in the iASL Data Table Compiler and disassembler is
2047forthcoming.
2048
2049
20502) iASL Compiler/Disassembler and Tools:
2051
2052iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
2053Properties Topology Table) where a flag bit was specified in the wrong
2054bit position ("Line Size Valid", bit 6).
2055
2056iASL: Implemented support for Octal integer constants as defined by the
2057ASL language grammar, per the ACPI specification. Any integer constant
2058that starts with a zero is an octal constant. For example,
2059    Store (037777, Local0) /* Octal constant */
2060    Store (0x3FFF, Local0) /* Hex equivalent */
2061    Store (16383,  Local0) /* Decimal equivalent */
2062
2063iASL: Improved overflow detection for 64-bit string conversions during
2064compilation of integer constants. "Overflow" in this case means a string
2065that represents an integer that is too large to fit into a 64-bit value.
2066Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
2067the low-order 32 bits with a warning, as previously implemented. Several
2068new exceptions are defined that indicate a 64-bit overflow, as well as
2069the base (radix) that was used during the attempted conversion. Examples:
2070    Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF        // AE_HEX_OVERFLOW
2071    Local0 = 01111222233334444555566667777     // AE_OCTAL_OVERFLOW
2072    Local0 = 11112222333344445555666677778888  // AE_DECIMAL_OVERFLOW
2073
2074iASL: Added a warning for the case where a ResourceTemplate is declared
2075with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
2076this case, the resulting template is created with a single END_TAG
2077descriptor, which is essentially useless.
2078
2079iASL: Expanded the -vw option (ignore specific warnings/remarks) to
2080include compilation error codes as well.
2081
2082----------------------------------------
208328 July 2017. Summary of changes for version 20170728:
2084
2085
20861) ACPICA kernel-resident subsystem:
2087
2088Fixed a regression seen with small resource descriptors that could cause
2089an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
2090
2091AML interpreter: Implemented a new feature that allows forward references
2092from individual named references within package objects that are
2093contained within blocks of "module-level code". This provides
2094compatibility with other ACPI implementations and supports existing
2095firmware that depends on this feature. Example:
2096
2097    Name (ABCD, 1)
2098    If (ABCD)                       /* An If() at module-level */
2099    {
2100        Name (PKG1, Package()
2101        {
2102            INT1                    /* Forward reference to object INT1
2103*/
2104        })
2105        Name (INT1, 0x1234)
2106    }
2107
2108AML Interpreter: Fixed a problem with the Alias() operator where aliases
2109to some ASL objects were not handled properly. Objects affected are:
2110Mutex, Event, and OperationRegion.
2111
2112AML Debugger: Enhanced to properly handle AML Alias objects. These
2113objects have one level of indirection which was not fully supported by
2114the debugger.
2115
2116Table Manager: Added support to detect and ignore duplicate SSDTs within
2117the XSDT/RSDT. This error in the XSDT has been seen in the field.
2118
2119EFI and EDK2 support:
2120    Enabled /WX flag for MSVC builds
2121    Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
2122    Added local support for 64-bit multiply and shift operations
2123    Added support to compile acpidump.efi on Windows
2124    Added OSL function stubs for interfaces not used under EFI
2125
2126Added additional support for the _DMA predefined name. _DMA returns a
2127buffer containing a resource template. This change add support within the
2128resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
2129resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
2130
2131
21322) iASL Compiler/Disassembler and Tools:
2133
2134iASL: Fixed a problem where the internal input line buffer(s) could
2135overflow if there are very long lines in the input ASL source code file.
2136Implemented buffer management that automatically increases the size of
2137the buffers as necessary.
2138
2139iASL: Added an option (-vx) to "expect" particular remarks, warnings and
2140errors. If the specified exception is not raised during compilation, the
2141compiler emits an error. This is intended to support the ASL test suite,
2142but may be useful in other contexts.
2143
2144iASL: Implemented a new predefined macro, __METHOD__, which returns a
2145string containing the name of the current control method that is being
2146compiled.
2147
2148iASL: Implemented debugger and table compiler support for the SDEI ACPI
2149table (Software Delegated Exception Interface). James Morse
2150<james.morse@arm.com>
2151
2152Unix/Linux makefiles: Added an option to disable compile optimizations.
2153The disable occurs when the NOOPT flag is set to TRUE.
2154theracermaster@gmail.com
2155
2156Acpidump: Added support for multiple DSDT and FACS tables. This can occur
2157when there are different tables for 32-bit versus 64-bit.
2158
2159Enhanced error reporting for the ASL test suite (ASLTS) by removing
2160unnecessary/verbose text, and emit the actual line number where an error
2161has occurred. These changes are intended to improve the usefulness of the
2162test suite.
2163
2164----------------------------------------
216529 June 2017. Summary of changes for version 20170629:
2166
2167
21681) ACPICA kernel-resident subsystem:
2169
2170Tables: Implemented a deferred ACPI table verification. This is useful
2171for operating systems where the tables cannot be verified in the early
2172initialization stage due to early memory mapping limitations on some
2173architectures. Lv Zheng.
2174
2175Tables: Removed the signature validation for dynamically loaded tables.
2176Provides compatibility with other ACPI implementations. Previously, only
2177SSDT tables were allowed, as per the ACPI specification. Now, any table
2178signature can be used via the Load() operator. Lv Zheng.
2179
2180Tables: Fixed several mutex issues that could cause errors during table
2181acquisition. Lv Zheng.
2182
2183Tables: Fixed a problem where an ACPI warning could be generated if a
2184null pointer was passed to the AcpiPutTable interface. Lv Zheng.
2185
2186Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
2187AcpiPutTable interfaces. This applies to the "late stage" table loading
2188when the use of AcpiPutTable is no longer required (since the system
2189memory manager is fully running and available). Lv Zheng.
2190
2191Fixed/Reverted a regression during processing of resource descriptors
2192that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
2193exception in this case.
2194
2195Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
2196I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
2197
2198Interpreter: Fixed a possible fault if an Alias operator with an invalid
2199or duplicate target is encountered during Alias creation in
2200AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
2201
2202Added an option to use designated initializers for function pointers.
2203Kees Cook <keescook@google.com>
2204
2205
22062) iASL Compiler/Disassembler and Tools:
2207
2208iASL: Allow compilation of External declarations with target pathnames
2209that refer to existing named objects within the table. Erik Schmauss.
2210
2211iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
2212FieldUnit name also is declared via External in the same table. Erik
2213Schmauss.
2214
2215iASL: Allow existing scope names within pathnames used in External
2216statements. For example:
2217    External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
2218    Device (ABCD)
2219
2220iASL: IORT ACPI table: Implemented changes required to decode the new
2221Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
2222compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
2223
2224Disassembler: Don't abort disassembly on errors from External()
2225statements. Erik Schmauss.
2226
2227Disassembler: fixed a possible fault when one of the Create*Field
2228operators references a Resource Template. ACPICA Bugzilla 1396.
2229
2230iASL: In the source code, resolved some naming inconsistences across the
2231parsing support. Fixes confusion between "Parse Op" and "Parse Node".
2232Adds a new file, aslparseop.c
2233
2234----------------------------------------
223531 May 2017. Summary of changes for version 20170531:
2236
2237
22380) ACPI 6.2 support:
2239
2240The ACPI specification version 6.2 has been released and is available at
2241http://uefi.org/specifications
2242
2243This version of ACPICA fully supports the ACPI 6.2 specification. Changes
2244are summarized below.
2245
2246New ACPI tables (Table Compiler/Disassembler/Templates):
2247    HMAT (Heterogeneous Memory Attributes Table)
2248    WSMT (Windows SMM Security Mitigation Table)
2249    PPTT (Processor Properties Topology Table)
2250
2251New subtables for existing ACPI tables:
2252    HEST (New subtable, Arch-deferred machine check)
2253    SRAT (New subtable, Arch-specific affinity structure)
2254    PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
2255
2256Simple updates for existing ACPI tables:
2257    BGRT (two new flag bits)
2258    HEST (New bit defined for several subtables, GHES_ASSIST)
2259
2260New Resource Descriptors and Resource macros (Compiler/Disassembler):
2261    PinConfig()
2262    PinFunction()
2263    PinGroup()
2264    PinGroupConfig()
2265    PinGroupFunction()
2266    New type for hardware error notification (section 18.3.2.9)
2267
2268New predefined names/methods (Compiler/Interpreter):
2269    _HMA (Heterogeneous Memory Attributes)
2270    _LSI (Label Storage Information)
2271    _LSR (Label Storage Read)
2272    _LSW (Label Storage Write)
2273
2274ASL grammar/macro changes (Compiler):
2275    For() ASL macro, implemented with the AML while operator
2276    Extensions to Concatenate operator
2277    Support for multiple definition blocks in same ASL file
2278    Clarification for Buffer operator
2279    Allow executable AML code underneath all scopes (Devices, etc.)
2280    Clarification/change for the _OSI return value
2281    ASL grammar update for reference operators
2282    Allow a zero-length string for AML filename in DefinitionBlock
2283
2284Miscellaneous:
2285    New device object notification value
2286    Remove a notify value (0x0C) for graceful shutdown
2287    New UUIDs for processor/cache properties and
2288        physical package property
2289    New _HID, ACPI0014 (Wireless Power Calibration Device)
2290
2291
22921) ACPICA kernel-resident subsystem:
2293
2294Added support to disable ACPI events on hardware-reduced platforms.
2295Eliminates error messages of the form "Could not enable fixed event". Lv
2296Zheng
2297
2298Fixed a problem using Device/Thermal objects with the ObjectType and
2299DerefOf ASL operators. This support had not been fully/properly
2300implemented.
2301
2302Fixed a problem where if a Buffer object containing a resource template
2303was longer than the actual resource template, an error was generated --
2304even though the AML is legal. This case has been seen in the field.
2305
2306Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
2307The values for DUAL_PIC and MULTIPLE_APIC were reversed.
2308
2309Added header file changes for the TPM2 ACPI table. Update to new version
2310of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
2311
2312Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
2313These interfaces are intended to be used only in conjunction with the
2314predefined _DLM method (Device Lock Method). "This object appears in a
2315device scope when AML access to the device must be synchronized with the
2316OS environment".
2317
2318Example Code and Data Size: These are the sizes for the OS-independent
2319acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2320debug version of the code includes the debug output trace mechanism and
2321has a much larger code and data size.
2322
2323  Current Release:
2324    Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
2325    Debug Version:     204.0K Code, 84.3K Data, 288.3K Total
2326  Previous Release:
2327    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
2328    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
2329
2330
23312) iASL Compiler/Disassembler and Tools:
2332
2333iASL: Fixed a problem where an External() declaration could not refer to
2334a Field Unit. Erik Schmauss.
2335
2336Disassembler: Improved support for the Switch/Case operators. This
2337feature will disassemble AML code back to the original Switch operators
2338when possible, instead of an If..Else sequence. David Box
2339
2340iASL and disassembler: Improved the handling of multiple extraneous
2341parentheses for both ASL input and disassembled ASL output.
2342
2343Improved the behavior of the iASL compiler and disassembler to detect
2344improper use of external declarations
2345
2346Disassembler: Now aborts immediately upon detection of an unknown AML
2347opcode. The AML parser has no real way to recover from this, and can
2348result in the creation of an ill-formed parse tree that causes errors
2349later during the disassembly.
2350
2351All tools: Fixed a problem where the Unix application OSL did not handle
2352control-c correctly. For example, a control-c could incorrectly wake the
2353debugger.
2354
2355AcpiExec: Improved the Control-C handling and added a handler for
2356segmentation faults (SIGSEGV). Supports both Windows and Unix-like
2357environments.
2358
2359Reduced the verbosity of the generic unix makefiles. Previously, each
2360compilation displayed the full set of compiler options. This has been
2361eliminated as the options are easily inspected within the makefiles. Each
2362compilation now results in a single line of output.
2363
2364----------------------------------------
236503 March 2017. Summary of changes for version 20170303:
2366
2367
23680) ACPICA licensing:
2369
2370The licensing information at the start of each source code module has
2371been updated. In addition to the Intel license, the dual GPLv2/BSD
2372license has been added for completeness. Now, a single version of the
2373source code should be suitable for all ACPICA customers. This is the
2374major change for this release since it affects all source code modules.
2375
2376
23771) ACPICA kernel-resident subsystem:
2378
2379Fixed two issues with the common asltypes.h header that could cause
2380problems in some environments: (Kim Jung-uk)
2381    Removed typedef for YY_BUFFER_STATE ?
2382       Fixes an error with earlier versions of Flex.
2383    Removed use of FILE typedef (which is only defined in stdio.h)
2384
2385
23862) iASL Compiler/Disassembler and Tools:
2387
2388Disassembler: fixed a regression introduced in 20170224. A fix for a
2389memory leak related to resource descriptor tags (names) could fault when
2390the disassembler was generated with 64-bit compilers.
2391
2392The ASLTS test suite has been updated to implement a new testing
2393architecture. During generation of the suite from ASL source, both the
2394ASL and ASL+ compilers are now validated, as well as the disassembler
2395itself (Erik Schmauss). The architecture executes as follows:
2396
2397    For every ASL source module:
2398        Compile (legacy ASL compilation)
2399        Disassemble the resulting AML to ASL+ source code
2400        Compile the new ASL+ module
2401        Perform a binary compare on the legacy AML and the new ASL+ AML
2402    The ASLTS suite then executes normally using the AML binaries.
2403
2404----------------------------------------
240524 February 2017. Summary of changes for version 20170224:
2406
2407
24081) ACPICA kernel-resident subsystem:
2409
2410Interpreter: Fixed two issues with the control method return value auto-
2411repair feature, where an attempt to double-delete an internal object
2412could result in an ACPICA warning (for _CID repair and others). No fault
2413occurs, however, because the attempted deletion (actually a release to an
2414internal cache) is detected and ignored via object poisoning.
2415
2416Debugger: Fixed an AML interpreter mutex issue during the single stepping
2417of control methods. If certain debugger commands are executed during
2418stepping, a mutex acquire/release error could occur. Lv Zheng.
2419
2420Fixed some issues generating ACPICA with the Intel C compiler by
2421restoring the original behavior and compiler-specific include file in
2422acenv.h. Lv Zheng.
2423
2424Example Code and Data Size: These are the sizes for the OS-independent
2425acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2426debug version of the code includes the debug output trace mechanism and
2427has a much larger code and data size.
2428
2429  Current Release:
2430    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
2431    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
2432  Previous Release:
2433    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2434    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2435
2436
24372) iASL Compiler/Disassembler and Tools:
2438
2439iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
2440tool has been designed, implemented, and included in this release. The
2441key feature of this utility is that the original comments within the
2442input ASL file are preserved during the conversion process, and included
2443within the converted ASL+ file -- thus creating a transparent conversion
2444of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
2445
2446    Usage: iasl -ca <ASL-filename>  // Output is a .dsl file with
2447converted code
2448
2449iASL/Disassembler: Improved the detection and correct disassembly of
2450Switch/Case operators. This feature detects sequences of if/elseif/else
2451operators that originated from ASL Switch/Case/Default operators and
2452emits the original operators. David Box.
2453
2454iASL: Improved the IORT ACPI table support in the following areas. Lv
2455Zheng:
2456    Clear MappingOffset if the MappingCount is zero.
2457    Fix the disassembly of the SMMU GSU interrupt offset.
2458    Update the template file for the IORT table.
2459
2460Disassembler: Enhanced the detection and disassembly of resource
2461template/descriptor within a Buffer object. An EndTag descriptor is now
2462required to have a zero second byte, since all known ASL compilers emit
2463this. This helps eliminate incorrect decisions when a buffer is
2464disassembled (false positives on resource templates).
2465
2466----------------------------------------
246719 January 2017. Summary of changes for version 20170119:
2468
2469
24701) General ACPICA software:
2471
2472Entire source code base: Added the 2017 copyright to all source code
2473legal/licensing module headers and utility/tool signons. This includes
2474the standard Linux dual-license header. This affects virtually every file
2475in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
2476the ACPICA test suite.
2477
2478
24792) iASL Compiler/Disassembler and Tools:
2480
2481iASL: Removed/fixed an inadvertent remark when a method argument
2482containing a reference is used as a target operand within the method (and
2483never used as a simple argument), as in the example below. Jeffrey Hugo.
2484
2485    dsdt.asl   1507:    Store(0x1, Arg0)
2486    Remark   2146 -                ^ Method Argument is never used (Arg0)
2487
2488All tools: Removed the bit width of the compiler that generated the tool
2489from the common signon for all user space tools. This proved to be
2490confusing and unnecessary. This includes similar removal of HARDWARE_NAME
2491from the generic makefiles (Thomas Petazzoni). Example below.
2492
2493    Old:
2494    ASL+ Optimizing Compiler version 20170119-32
2495    ASL+ Optimizing Compiler version 20170119-64
2496
2497    New:
2498    ASL+ Optimizing Compiler version 20170119
2499
2500----------------------------------------
250122 December 2016. Summary of changes for version 20161222:
2502
2503
25041) ACPICA kernel-resident subsystem:
2505
2506AML Debugger: Implemented a new mechanism to simplify and enhance
2507debugger integration into all environments, including kernel debuggers
2508and user-space utilities, as well as remote debug services. This
2509mechanism essentially consists of new OSL interfaces to support debugger
2510initialization/termination, as well as wait/notify interfaces to perform
2511the debugger handshake with the host. Lv Zheng.
2512
2513    New OSL interfaces:
2514        AcpiOsInitializeDebugger (void)
2515        AcpiOsTerminateDebugger (void)
2516        AcpiOsWaitCommandReady (void)
2517        AcpiOsNotifyCommandComplete (void)
2518
2519    New OS services layer:
2520        osgendbg.c -- Example implementation, and used for AcpiExec
2521
2522Update for Generic Address Space (GAS) support: Although the AccessWidth
2523and/or BitOffset fields of the GAS are not often used, this change now
2524fully supports these fields. This affects the internal support for FADT
2525registers, registers in other ACPI data tables, and the AcpiRead and
2526AcpiWrite public interfaces. Lv Zheng.
2527
2528Sleep support: In order to simplify integration of ACPI sleep for the
2529various host operating systems, a new OSL interface has been introduced.
2530AcpiOsEnterSleep allows the host to perform any required operations
2531before the final write to the sleep control register(s) is performed by
2532ACPICA. Lv Zheng.
2533
2534    New OSL interface:
2535        AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
2536
2537    Called from these internal interfaces:
2538        AcpiHwLegacySleep
2539        AcpiHwExtendedSleep
2540
2541EFI support: Added a very small EFI/ACPICA example application. Provides
2542a simple demo for EFI integration, as well as assisting with resolution
2543of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
2544
2545    source/tools/efihello/efihello.c
2546
2547Local C library: Implemented several new functions to enhance ACPICA
2548portability, for environments where these clib functions are not
2549available (such as EFI). Lv Zheng:
2550    putchar
2551    getchar
2552    strpbrk
2553    strtok
2554    memmove
2555
2556Fixed a regression where occasionally a valid resource descriptor was
2557incorrectly detected as invalid at runtime, and a
2558AE_AML_NO_RESOURCE_END_TAG was returned.
2559
2560Fixed a problem with the recently implemented support that enables
2561control method invocations as Target operands to many ASL operators.
2562Warnings of this form: "Needed type [Reference], found [Processor]" were
2563seen at runtime for some method invocations.
2564
2565Example Code and Data Size: These are the sizes for the OS-independent
2566acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2567debug version of the code includes the debug output trace mechanism and
2568has a much larger code and data size.
2569
2570  Current Release:
2571    Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
2572    Debug Version:     201.7K Code, 82.7K Data, 284.4K Total
2573  Previous Release:
2574    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
2575    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
2576
2577
25782) iASL Compiler/Disassembler and Tools:
2579
2580Disassembler: Enhanced output by adding the capability to detect and
2581disassemble ASL Switch/Case statements back to the original ASL source
2582code instead of if/else blocks. David Box.
2583
2584AcpiHelp: Split a large file into separate files based upon
2585functionality/purpose. New files are:
2586    ahaml.c
2587    ahasl.c
2588
2589----------------------------------------
259017 November 2016. Summary of changes for version 20161117:
2591
2592
25931) ACPICA kernel-resident subsystem:
2594
2595Table Manager: Fixed a regression introduced in 20160729, "FADT support
2596cleanup". This was an attempt to remove all references in the source to
2597the FADT version 2, which never was a legal version number. It was
2598skipped because it was an early version of 64-bit support that was
2599eventually abandoned for the current 64-bit support.
2600
2601Interpreter: Fixed a problem where runtime implicit conversion was
2602incorrectly disabled for the ASL operators below. This brings the
2603behavior into compliance with the ACPI specification:
2604    FromBCD
2605    ToBCD
2606    ToDecimalString
2607    ToHexString
2608    ToInteger
2609    ToBuffer
2610
2611Table Manager: Added a new public interface, AcpiPutTable, used to
2612release and free an ACPI table returned by AcpiGetTable and related
2613interfaces. Lv Zheng.
2614
2615Example Code and Data Size: These are the sizes for the OS-independent
2616acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2617debug version of the code includes the debug output trace mechanism and
2618has a much larger code and data size.
2619
2620  Current Release:
2621    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
2622    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
2623  Previous Release:
2624    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
2625    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
2626
2627
26282) iASL Compiler/Disassembler and Tools:
2629
2630Disassembler: Fixed a regression for disassembly of Resource Template.
2631Detection of templates in the AML stream missed some types of templates.
2632
2633iASL: Fixed a problem where an Access Size error was returned for the PCC
2634address space when the AccessSize of the GAS register is greater than a
2635DWORD. Hoan Tran.
2636
2637iASL: Implemented several grammar changes for the operators below. These
2638changes are slated for the next version of the ACPI specification:
2639    RefOf        - Disallow method invocation as an operand
2640    CondRefOf    - Disallow method invocation as an operand
2641    DerefOf      - Disallow operands that use the result from operators
2642that
2643                   do not return a reference (Changed TermArg to
2644SuperName).
2645
2646iASL: Control method invocations are now allowed for Target operands, as
2647per the ACPI specification. Removed error for using a control method
2648invocation as a Target operand.
2649
2650Disassembler: Improved detection of Resource Templates, Unicode, and
2651Strings within Buffer objects. These subtypes do not contain a specific
2652opcode to indicate the originating ASL code, and they must be detected by
2653other means within the disassembler.
2654
2655iASL: Implemented an optimization improvement for 32-bit ACPI tables
2656(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
2657only after 64-bit to 32-bit truncation. A truncation warning message is
2658still emitted, however.
2659
2660AcpiXtract: Implemented handling for both types of line terminators (LF
2661or CR/LF) so that it can accept AcpiDump output files from any system.
2662Peter Wu.
2663
2664AcpiBin: Added two new options for comparing AML files:
2665    -a: compare and display ALL mismatches
2666    -o: start compare at this offset into the second file
2667
2668----------------------------------------
266930 September 2016. Summary of changes for version 20160930:
2670
2671
26721) ACPICA kernel-resident subsystem:
2673
2674Fixed a regression in the internal AcpiTbFindTable function where a non
2675AE_OK exception could inadvertently be returned even if the function did
2676not fail. This problem affects the following operators:
2677    DataTableRegion
2678    LoadTable
2679
2680Fixed a regression in the LoadTable operator where a load to any
2681namespace location other than the root no longer worked properly.
2682
2683Increased the maximum loop count value that will result in the
2684AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
2685prevent infinite loops within the AML interpreter and thus the host OS
2686kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
26871,048,575).
2688
2689Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
2690acpixf.h file. This allows hosts to easily configure the maximum loop
2691count at runtime.
2692
2693Removed an illegal character in the strtoul64.c file. This character
2694caused errors with some C compilers.
2695
2696Example Code and Data Size: These are the sizes for the OS-independent
2697acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2698debug version of the code includes the debug output trace mechanism and
2699has a much larger code and data size.
2700
2701  Current Release:
2702    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
2703    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
2704  Previous Release:
2705    Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
2706    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
2707
2708
27092) iASL Compiler/Disassembler and Tools:
2710
2711Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
2712the simpler ASL ElseIf keyword. During the conversion, a trailing If
2713block could be lost and missing from the disassembled output.
2714
2715iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
2716the missing rule caused a parse error when using the Index operator as an
2717operand to ObjectType. This construct now compiles properly. Example:
2718    ObjectType(PKG1[4]).
2719
2720iASL: Correctly handle unresolved symbols in the hardware map file (-lm
2721option). Previously, unresolved symbols could cause a protection fault.
2722Such symbols are now marked as unresolved in the map file.
2723
2724iASL: Implemented support to allow control method invocations as an
2725operand to the ASL DeRefOf operator. Example:
2726    DeRefOf(MTH1(Local0))
2727
2728Disassembler: Improved support for the ToPLD ASL macro. Detection of a
2729possible _PLD buffer now includes examination of both the normal buffer
2730length (16 or 20) as well as the surrounding AML package length.
2731
2732Disassembler: Fixed a problem with the decoding of complex expressions
2733within the Divide operator for ASL+. For the case where both the quotient
2734and remainder targets are specified, the entire statement cannot be
2735disassembled. Previously, the output incorrectly contained a mix of ASL-
2736and ASL+ operators. This mixed statement causes a syntax error when
2737compiled. Example:
2738    Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly
2739disassembled to:
2740    Divide (INT1 + 6, 128, RSLT, QUOT)
2741
2742iASL/Tools: Added support to process AML and non-AML ACPI tables
2743consistently. For the disassembler and AcpiExec, allow all types of ACPI
2744tables (AML and data tables). For the iASL -e option, allow only AML
2745tables (DSDT/SSDT).
2746
2747----------------------------------------
274831 August 2016. Summary of changes for version 20160831:
2749
2750
27511) ACPICA kernel-resident subsystem:
2752
2753Improve support for the so-called "module-level code", which is defined
2754to be math, logical and control AML opcodes that appear outside of any
2755control method. This change improves the support by adding more opcodes
2756that can be executed in the manner. Some other issues have been solved,
2757and the ASL grammar changes to support such code under all scope
2758operators (Device, etc.) are complete. Lv Zheng.
2759
2760UEFI support: these OSL functions have been implemented. This is an
2761additional step toward supporting the AcpiExec utility natively (with
2762full hardware access) under UEFI. Marcelo Ferreira.
2763    AcpiOsReadPciConfiguration
2764    AcpiOsWritePciConfiguration
2765
2766Fixed a possible mutex error during control method auto-serialization. Lv
2767Zheng.
2768
2769Updated support for the Generic Address Structure by fully implementing
2770all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
2771Zheng.
2772
2773Updated the return value for the internal _OSI method. Instead of
27740xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
2775for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
2776implementations, and will be reflected and clarified in the next version
2777of the ACPI specification.
2778
2779Implemented two new table events that can be passed to an ACPICA table
2780handler. These events are used to indicate a table installation or
2781uninstallation. These events are used in addition to existed table load
2782and unload events. Lv Zheng.
2783
2784Implemented a cleanup for all internal string-to-integer conversions.
2785Consolidate multiple versions of this functionality and limit possible
2786bases to either 10 or 16 to simplify the code. Adds a new file,
2787utstrtoul64.
2788
2789Cleanup the inclusion order of the various compiler-specific headers.
2790This simplifies build configuration management. The compiler-specific
2791headers are now split out from the host-specific headers. Lv Zheng.
2792
2793Example Code and Data Size: These are the sizes for the OS-independent
2794acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2795debug version of the code includes the debug output trace mechanism and
2796has a much larger code and data size.
2797
2798  Current Release:
2799    Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
2800    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
2801
2802
28032) iASL Compiler/Disassembler and Tools:
2804
2805iASL/AcpiExec: Added a command line option to display the build date/time
2806of the tool (-vd). This can be useful to verify that the correct version
2807of the tools are being used.
2808
2809AML Debugger: Implemented a new subcommand ("execute predef") to execute
2810all predefined control methods and names within the current namespace.
2811This can be useful for debugging problems with ACPI tables and the ACPI
2812namespace.
2813
2814----------------------------------------
281529 July 2016. Summary of changes for version 20160729:
2816
2817
28181) ACPICA kernel-resident subsystem:
2819
2820Implemented basic UEFI support for the various ACPICA tools. This
2821includes:
28221) An OSL to implement the various AcpiOs* interfaces on UEFI.
28232) Support to obtain the ACPI tables on UEFI.
28243) Local implementation of required C library functions not available on
2825UEFI.
28264) A front-end (main) function for the tools for UEFI-related
2827initialization.
2828
2829The initial deployment of this support is the AcpiDump utility executing
2830as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
2831Current environments supported are Linux/Unix. MSVC generation is not
2832supported at this time. See the generate/efi/README file for build
2833instructions. Lv Zheng.
2834
2835Future plans include porting the AcpiExec utility to execute natively on
2836the platform with I/O and memory access. This will allow viewing/dump of
2837the platform namespace and native execution of ACPI control methods that
2838access the actual hardware. To fully implement this support, the OSL
2839functions below must be implemented with UEFI interfaces. Any community
2840help in the implementation of these functions would be appreciated:
2841    AcpiOsReadPort
2842    AcpiOsWritePort
2843    AcpiOsReadMemory
2844    AcpiOsWriteMemory
2845    AcpiOsReadPciConfiguration
2846    AcpiOsWritePciConfiguration
2847
2848Restructured and standardized the C library configuration for ACPICA,
2849resulting in the various configuration options below. This includes a
2850global restructuring of the compiler-dependent and platform-dependent
2851include files. These changes may affect the existing platform-dependent
2852configuration files on some hosts. Lv Zheng.
2853
2854The current C library configuration options appear below. For any issues,
2855it may be helpful to examine the existing compiler-dependent and
2856platform-dependent files as examples. Lv Zheng.
2857
28581) Linux kernel:
2859    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2860library.
2861    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
28622) Unix/Windows/BSD applications:
2863    ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
2864library.
2865    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
28663) UEFI applications:
2867    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2868library.
2869    ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
28704) UEFI applications (EDK2/StdLib):
2871    ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
2872    ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
2873
2874
2875AML interpreter: "module-level code" support. Allows for execution of so-
2876called "executable" AML code (math/logical operations, etc.) outside of
2877control methods not just at the module level (top level) but also within
2878any scope declared outside of a control method - Scope{}, Device{},
2879Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
2880
2881Simplified the configuration of the "maximum AML loops" global option by
2882adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
2883modified at runtime.
2884
2885
2886Example Code and Data Size: These are the sizes for the OS-independent
2887acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2888debug version of the code includes the debug output trace mechanism and
2889has a much larger code and data size.
2890
2891  Current Release:
2892    Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
2893    Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
2894
2895
28962) iASL Compiler/Disassembler and Tools:
2897
2898iASL: Add full support for the RASF ACPI table (RAS Features Table).
2899Includes disassembler, data table compiler, and header support.
2900
2901iASL Expand "module-level code" support. Allows for
2902compilation/disassembly of so-called "executable" AML code (math/logical
2903operations, etc.) outside of control methods not just at the module level
2904(top level) but also within any scope declared outside of a control
2905method - Scope{}, Device{}, Processor{}, PowerResource{}, and
2906ThermalZone{}.
2907
2908AcpiDump: Added support for dumping all SSDTs on newer versions of
2909Windows. These tables are now easily available -- SSDTs are not available
2910through the registry on older versions.
2911
2912----------------------------------------
291327 May 2016. Summary of changes for version 20160527:
2914
2915
29161) ACPICA kernel-resident subsystem:
2917
2918Temporarily reverted the new arbitrary bit length/alignment support in
2919AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
2920a number of regressions with the new code that need to be fully resolved
2921and tested before this support can be finally integrated into ACPICA.
2922Apologies for any inconveniences these issues may have caused.
2923
2924The ACPI message macros are not configurable (ACPI_MSG_ERROR,
2925ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
2926and ACPI_MSG_BIOS_WARNING). Lv Zheng.
2927
2928Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
2929option. Adds a new return macro, return_STR. Junk-uk Kim.
2930
2931Example Code and Data Size: These are the sizes for the OS-independent
2932acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2933debug version of the code includes the debug output trace mechanism and
2934has a much larger code and data size.
2935
2936  Current Release:
2937    Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
2938    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2939  Previous Release:
2940    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2941    Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
2942
2943----------------------------------------
294422 April 2016. Summary of changes for version 20160422:
2945
29461) ACPICA kernel-resident subsystem:
2947
2948Fixed a regression in the GAS (generic address structure) arbitrary bit
2949support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
2950and incorrect return values. Lv Zheng. ACPICA BZ 1270.
2951
2952ACPI 6.0: Added support for new/renamed resource macros. One new argument
2953was added to each of these macros, and the original name has been
2954deprecated. The AML disassembler will always disassemble to the new
2955names. Support for the new macros was added to iASL, disassembler,
2956resource manager, and the acpihelp utility. ACPICA BZ 1274.
2957
2958    I2cSerialBus  -> I2cSerialBusV2
2959    SpiSerialBus  -> SpiSerialBusV2
2960    UartSerialBus -> UartSerialBusV2
2961
2962ACPI 6.0: Added support for a new integer field that was appended to the
2963package object returned by the _BIX method. This adds iASL compile-time
2964and AML runtime error checking. ACPICA BZ 1273.
2965
2966ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
2967Subspace Type2" (Headers, Disassembler, and data table compiler).
2968
2969Example Code and Data Size: These are the sizes for the OS-independent
2970acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2971debug version of the code includes the debug output trace mechanism and
2972has a much larger code and data size.
2973
2974  Current Release:
2975    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2976    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2977  Previous Release:
2978    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2979    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2980
2981
29822) iASL Compiler/Disassembler and Tools:
2983
2984iASL: Implemented an ASL grammar extension to allow/enable executable
2985"module-level code" to be created and executed under the various
2986operators that create new scopes. This type of AML code is already
2987supported in all known AML interpreters, and the grammar change will
2988appear in the next version of the ACPI specification. Simplifies the
2989conditional runtime creation of named objects under these object types:
2990
2991    Device
2992    PowerResource
2993    Processor
2994    Scope
2995    ThermalZone
2996
2997iASL: Implemented a new ASL extension, a "For" loop macro to add greater
2998ease-of-use to the ASL language. The syntax is similar to the
2999corresponding C operator, and is implemented with the existing AML While
3000opcode -- thus requiring no changes to existing AML interpreters.
3001
3002    For (Initialize, Predicate, Update) {TermList}
3003
3004Grammar:
3005    ForTerm :=
3006        For (
3007            Initializer    // Nothing | TermArg => ComputationalData
3008            Predicate      // Nothing | TermArg => ComputationalData
3009            Update         // Nothing | TermArg => ComputationalData
3010        ) {TermList}
3011
3012
3013iASL: The _HID/_ADR detection and validation has been enhanced to search
3014under conditionals in order to allow these objects to be conditionally
3015created at runtime.
3016
3017iASL: Fixed several issues with the constant folding feature. The
3018improvement allows better detection and resolution of statements that can
3019be folded at compile time. ACPICA BZ 1266.
3020
3021iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
3022conversion to the ASL ElseIf operator where incorrect ASL code could be
3023generated.
3024
3025iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
3026sometimes an extra (and extraneous) set of parentheses were emitted for
3027some combinations of operators. Although this did not cause any problems
3028with recompilation of the disassembled code, it made the code more
3029difficult to read. David Box. ACPICA BZ 1231.
3030
3031iASL: Changed to ignore the unreferenced detection for predefined names
3032of resource descriptor elements, when the resource descriptor is
3033created/defined within a control method.
3034
3035iASL: Disassembler: Fix a possible fault with externally declared Buffer
3036objects.
3037
3038----------------------------------------
303918 March 2016. Summary of changes for version 20160318:
3040
30411) ACPICA kernel-resident subsystem:
3042
3043Added support for arbitrary bit lengths and bit offsets for registers
3044defined by the Generic Address Structure. Previously, only aligned bit
3045lengths of 8/16/32/64 were supported. This was sufficient for many years,
3046but recently some machines have been seen that require arbitrary bit-
3047level support. ACPICA BZ 1240. Lv Zheng.
3048
3049Fixed an issue where the \_SB._INI method sometimes must be evaluated
3050before any _REG methods are evaluated. Lv Zheng.
3051
3052Implemented several changes related to ACPI table support
3053(Headers/Disassembler/TableCompiler):
3054NFIT: For ACPI 6.1, updated to add some additional new fields and
3055constants.
3056FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
30576).
3058DMAR: Added new constants per the 10/2014 DMAR spec.
3059IORT: Added new subtable per the 10/2015 IORT spec.
3060HEST: For ACPI 6.1, added new constants and new subtable.
3061DBG2: Added new constants per the 12/2015 DBG2 spec.
3062FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
3063ACPICA BZ 1249.
3064ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
3065
3066Updated header support for the DMAR table to match the current version of
3067the related spec.
3068
3069Added extensions to the ASL Concatenate operator to allow any ACPI object
3070to be passed as an operand. Any object other than Integer/String/Buffer
3071simply returns a string containing the object type. This extends the
3072usefulness of the Printf macros. Previously, Concatenate would abort the
3073control method if a non-data object was encountered.
3074
3075ACPICA source code: Deployed the C "const" keyword across the source code
3076where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
3077
3078Example Code and Data Size: These are the sizes for the OS-independent
3079acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3080debug version of the code includes the debug output trace mechanism and
3081has a much larger code and data size.
3082
3083  Current Release:
3084    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
3085    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
3086  Previous Release:
3087    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
3088    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
3089
3090
30912) iASL Compiler/Disassembler and Tools:
3092
3093iASL/Disassembler: Improved the heuristic used to determine the number of
3094arguments for an externally defined control method (a method in another
3095table). Although this is an improvement, there is no deterministic way to
3096"guess" the number of method arguments. Only the ACPI 6.0 External opcode
3097will completely solve this problem as it is deployed (automatically) in
3098newer BIOS code.
3099
3100iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
3101statements that could cause errors when the disassembled file is
3102compiled. ACPICA BZ 1243. David Box.
3103
3104iASL: Fixed a regression caused by the merger of the two versions of the
3105local strtoul64. Because of a dependency on a global variable, strtoul64
3106could return an error for integers greater than a 32-bit value. ACPICA BZ
31071260.
3108
3109iASL: Fixed a regression where a fault could occur for an ASL Return
3110statement if it invokes a control method that is not resolved. ACPICA BZ
31111264.
3112
3113AcpiXtract: Improved input file validation: detection of binary files and
3114non-acpidump text files.
3115
3116----------------------------------------
311712 February 2016. Summary of changes for version 20160212:
3118
31191) ACPICA kernel-resident subsystem:
3120
3121Implemented full support for the ACPI 6.1 specification (released in
3122January). This version of the specification is available at:
3123http://www.uefi.org/specifications
3124
3125Only a relatively small number of changes were required in ACPICA to
3126support ACPI 6.1, in these areas:
3127- New predefined names
3128- New _HID values
3129- A new subtable for HEST
3130- A few other header changes for new values
3131
3132Ensure \_SB_._INI is executed before any _REG methods are executed. There
3133appears to be existing BIOS code that relies on this behavior. Lv Zheng.
3134
3135Reverted a change made in version 20151218 which enabled method
3136invocations to be targets of various ASL operators (SuperName and Target
3137grammar elements). While the new behavior is supported by the ACPI
3138specification, other AML interpreters do not support this behavior and
3139never will. The ACPI specification will be updated for ACPI 6.2 to remove
3140this support. Therefore, the change was reverted to the original ACPICA
3141behavior.
3142
3143ACPICA now supports the GCC 6 compiler.
3144
3145Current Release: (Note: build changes increased sizes)
3146    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
3147    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
3148Previous Release:
3149    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
3150    Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
3151
3152
31532) iASL Compiler/Disassembler and Tools:
3154
3155Completed full support for the ACPI 6.0 External() AML opcode. The
3156compiler emits an external AML opcode for each ASL External statement.
3157This opcode is used by the disassembler to assist with the disassembly of
3158external control methods by specifying the required number of arguments
3159for the method. AML interpreters do not use this opcode. To ensure that
3160interpreters do not even see the opcode, a block of one or more external
3161opcodes is surrounded by an "If(0)" construct. As this feature becomes
3162commonly deployed in BIOS code, the ability of disassemblers to correctly
3163disassemble AML code will be greatly improved. David Box.
3164
3165iASL: Implemented support for an optional cross-reference output file.
3166The -lx option will create a the cross-reference file with the suffix
3167"xrf". Three different types of cross-reference are created in this file:
3168- List of object references made from within each control method
3169- Invocation (caller) list for each user-defined control method
3170- List of references to each non-method object in the namespace
3171
3172iASL: Method invocations as ASL Target operands are now disallowed and
3173flagged as errors in preparation for ACPI 6.2 (see the description of the
3174problem above).
3175
3176----------------------------------------
31778 January 2016. Summary of changes for version 20160108:
3178
31791) ACPICA kernel-resident subsystem:
3180
3181Updated all ACPICA copyrights and signons to 2016: Added the 2016
3182copyright to all source code module headers and utility/tool signons.
3183This includes the standard Linux dual-license header. This affects
3184virtually every file in the ACPICA core subsystem, iASL compiler, all
3185ACPICA utilities, and the ACPICA test suite.
3186
3187Fixed a regression introduced in version 20151218 concerning the
3188execution of so-called module-level ASL/AML code. Namespace objects
3189created under a module-level If() construct were not properly/fully
3190entered into the namespace and could cause an interpreter fault when
3191accessed.
3192
3193Example Code and Data Size: These are the sizes for the OS-independent
3194acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3195debug version of the code includes the debug output trace mechanism and
3196has a much larger code and data size.
3197
3198Current Release:
3199    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
3200    Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
3201  Previous Release:
3202    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
3203    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
3204
3205
32062) iASL Compiler/Disassembler and Tools:
3207
3208Fixed a problem with the compilation of the GpioIo and GpioInt resource
3209descriptors. The _PIN field name was incorrectly defined to be an array
3210of 32-bit values, but the _PIN values are in fact 16 bits each. This
3211would cause incorrect bit width warnings when using Word (16-bit) fields
3212to access the descriptors.
3213
3214
3215----------------------------------------
321618 December 2015. Summary of changes for version 20151218:
3217
32181) ACPICA kernel-resident subsystem:
3219
3220Implemented per-AML-table execution of "module-level code" as individual
3221ACPI tables are loaded into the namespace during ACPICA initialization.
3222In other words, any module-level code within an AML table is executed
3223immediately after the table is loaded, instead of batched and executed
3224after all of the tables have been loaded. This provides compatibility
3225with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
3226David Box.
3227
3228To fully support the feature above, the default operation region handlers
3229for the SystemMemory, SystemIO, and PCI_Config address spaces are now
3230installed before any ACPI tables are loaded. This enables module-level
3231code to access these address spaces during the table load and module-
3232level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
3233Box.
3234
3235Implemented several changes to the internal _REG support in conjunction
3236with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
3237utilities for the changes above. Although these tools were changed, host
3238operating systems that simply use the default handlers for SystemMemory,
3239SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
3240
3241For example, in the code below, DEV1 is conditionally added to the
3242namespace by the DSDT via module-level code that accesses an operation
3243region. The SSDT references DEV1 via the Scope operator. DEV1 must be
3244created immediately after the DSDT is loaded in order for the SSDT to
3245successfully reference DEV1. Previously, this code would cause an
3246AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
3247fully supported by ACPICA.
3248
3249    DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
3250    {
3251        OperationRegion (OPR1, SystemMemory, 0x400, 32)
3252        Field (OPR1, AnyAcc, NoLock, Preserve)
3253        {
3254            FLD1, 1
3255        }
3256        If (FLD1)
3257        {
3258            Device (\DEV1)
3259            {
3260            }
3261        }
3262    }
3263    DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
3264    {
3265        External (\DEV1, DeviceObj)
3266        Scope (\DEV1)
3267        {
3268        }
3269    }
3270
3271Fixed an AML interpreter problem where control method invocations were
3272not handled correctly when the invocation was itself a SuperName argument
3273to another ASL operator. In these cases, the method was not invoked.
3274ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
3275argument:
3276    Store
3277    Acquire, Wait
3278    CondRefOf, RefOf
3279    Decrement, Increment
3280    Load, Unload
3281    Notify
3282    Signal, Release, Reset
3283    SizeOf
3284
3285Implemented automatic String-to-ObjectReference conversion support for
3286packages returned by predefined names (such as _DEP). A common BIOS error
3287is to add double quotes around an ObjectReference namepath, which turns
3288the reference into an unexpected string object. This support detects the
3289problem and corrects it before the package is returned to the caller that
3290invoked the method. Lv Zheng.
3291
3292Implemented extensions to the Concatenate operator. Concatenate now
3293accepts any type of object, it is not restricted to simply
3294Integer/String/Buffer. For objects other than these 3 basic data types,
3295the argument is treated as a string containing the name of the object
3296type. This expands the utility of Concatenate and the Printf/Fprintf
3297macros. ACPICA BZ 1222.
3298
3299Cleaned up the output of the ASL Debug object. The timer() value is now
3300optional and no longer emitted by default. Also, the basic data types of
3301Integer/String/Buffer are simply emitted as their values, without a data
3302type string -- since the data type is obvious from the output. ACPICA BZ
33031221.
3304
3305Example Code and Data Size: These are the sizes for the OS-independent
3306acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3307debug version of the code includes the debug output trace mechanism and
3308has a much larger code and data size.
3309
3310  Current Release:
3311    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
3312    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
3313  Previous Release:
3314    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
3315    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
3316
3317
33182) iASL Compiler/Disassembler and Tools:
3319
3320iASL: Fixed some issues with the ASL Include() operator. This operator
3321was incorrectly defined in the iASL parser rules, causing a new scope to
3322be opened for the code within the include file. This could lead to
3323several issues, including allowing ASL code that is technically illegal
3324and not supported by AML interpreters. Note, this does not affect the
3325related #include preprocessor operator. ACPICA BZ 1212.
3326
3327iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
3328operator is essentially an ASL macro since there is no AML opcode
3329associated with it. The code emitted by the iASL compiler for ElseIf is
3330an Else opcode followed immediately by an If opcode. The disassembler
3331will now emit an ElseIf if it finds an Else immediately followed by an
3332If. This simplifies the decoded ASL, especially for deeply nested
3333If..Else and large Switch constructs. Thus, the disassembled code more
3334closely follows the original source ASL. ACPICA BZ 1211. Example:
3335
3336    Old disassembly:
3337        Else
3338        {
3339            If (Arg0 == 0x02)
3340            {
3341                Local0 = 0x05
3342            }
3343        }
3344
3345    New disassembly:
3346        ElseIf (Arg0 == 0x02)
3347        {
3348            Local0 = 0x05
3349        }
3350
3351AcpiExec: Added support for the new module level code behavior and the
3352early region installation. This required a small change to the
3353initialization, since AcpiExec must install its own operation region
3354handlers.
3355
3356AcpiExec: Added support to make the debug object timer optional. Default
3357is timer disabled. This cleans up the debug object output -- the timer
3358data is rarely used.
3359
3360AcpiExec: Multiple ACPI tables are now loaded in the order that they
3361appear on the command line. This can be important when there are
3362interdependencies/references between the tables.
3363
3364iASL/Templates. Add support to generate template files with multiple
3365SSDTs within a single output file. Also added ommand line support to
3366specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
33671223, 1225.
3368
3369
3370----------------------------------------
337124 November 2015. Summary of changes for version 20151124:
3372
33731) ACPICA kernel-resident subsystem:
3374
3375Fixed a possible regression for a previous update to FADT handling. The
3376FADT no longer has a fixed table ID, causing some issues with code that
3377was hardwired to a specific ID. Lv Zheng.
3378
3379Fixed a problem where the method auto-serialization could interfere with
3380the current SyncLevel. This change makes the auto-serialization support
3381transparent to the SyncLevel support and management.
3382
3383Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
3384interface is intended for early access to the namespace during the
3385initial namespace device discovery walk. The _SUB method has been seen to
3386access operation regions in some cases, causing errors because the
3387operation regions are not fully initialized.
3388
3389AML Debugger: Fixed some issues with the terminate/quit/exit commands
3390that can cause faults. Lv Zheng.
3391
3392AML Debugger: Add thread ID support so that single-step mode only applies
3393to the AML Debugger thread. This prevents runtime errors within some
3394kernels. Lv Zheng.
3395
3396Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
3397methods that are invoked by this interface are optional, removed warnings
3398emitted for the case where one or more of these methods do not exist.
3399ACPICA BZ 1208, original change by Prarit Bhargava.
3400
3401Made a major pass through the entire ACPICA source code base to
3402standardize formatting that has diverged a bit over time. There are no
3403functional changes, but this will of course cause quite a few code
3404differences from the previous ACPICA release.
3405
3406Example Code and Data Size: These are the sizes for the OS-independent
3407acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3408debug version of the code includes the debug output trace mechanism and
3409has a much larger code and data size.
3410
3411  Current Release:
3412    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
3413    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
3414  Previous Release:
3415    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3416    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
3417
3418
34192) iASL Compiler/Disassembler and Tools:
3420
3421iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
3422definition blocks within a single ASL file and the resulting AML file.
3423Support for this type of file was also added to the various tools that
3424use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
3425example code below shows two definition blocks within the same file:
3426
3427    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
34280x12345678)
3429    {
3430    }
3431    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
3432    {
3433    }
3434
3435iASL: Enhanced typechecking for the Name() operator. All expressions for
3436the value of the named object must be reduced/folded to a single constant
3437at compile time, as per the ACPI specification (the AML definition of
3438Name()).
3439
3440iASL: Fixed some code indentation issues for the -ic and -ia options (C
3441and assembly headers). Now all emitted code correctly begins in column 1.
3442
3443iASL: Added an error message for an attempt to open a Scope() on an
3444object defined in an SSDT. The DSDT is always loaded into the namespace
3445first, so any attempt to open a Scope on an SSDT object will fail at
3446runtime.
3447
3448
3449----------------------------------------
345030 September 2015. Summary of changes for version 20150930:
3451
34521) ACPICA kernel-resident subsystem:
3453
3454Debugger: Implemented several changes and bug fixes to assist support for
3455the in-kernel version of the AML debugger. Lv Zheng.
3456- Fix the "predefined" command for in-kernel debugger.
3457- Do not enter debug command loop for the help and version commands.
3458- Disallow "execute" command during execution/single-step of a method.
3459
3460Interpreter: Updated runtime typechecking for all operators that have
3461target operands. The operand is resolved and validated that it is legal.
3462For example, the target cannot be a non-data object such as a Device,
3463Mutex, ThermalZone, etc., as per the ACPI specification.
3464
3465Debugger: Fixed the double-mutex user I/O handshake to work when local
3466deadlock detection is enabled.
3467
3468Debugger: limited display of method locals and arguments (LocalX and
3469ArgX) to only those that have actually been initialized. This prevents
3470lines of extraneous output.
3471
3472Updated the definition of the NFIT table to correct the bit polarity of
3473one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
3474
3475Example Code and Data Size: These are the sizes for the OS-independent
3476acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3477debug version of the code includes the debug output trace mechanism and
3478has a much larger code and data size.
3479
3480  Current Release:
3481    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3482    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
3483  Previous Release:
3484    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
3485    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
3486
3487
34882) iASL Compiler/Disassembler and Tools:
3489
3490iASL: Improved the compile-time typechecking for operands of many of the
3491ASL operators:
3492
3493-- Added an option to disable compiler operand/operator typechecking (-
3494ot).
3495
3496-- For the following operators, the TermArg operands are now validated
3497when possible to be Integer data objects: BankField, OperationRegion,
3498DataTableRegion, Buffer, and Package.
3499
3500-- Store (Source, Target): Both the source and target operands are
3501resolved and checked that the operands are both legal. For example,
3502neither operand can be a non-data object such as a Device, Mutex,
3503ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
3504operator can be used to store an object to any type of target object.
3505
3506-- Store (Source, Target): If the source is a Package object, the target
3507must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
3508is a Package, the source must also be a Package.
3509
3510-- Store (Source, Target): A warning is issued if the source and target
3511resolve to the identical named object.
3512
3513-- Store (Source, <method invocation>): An error is generated for the
3514target method invocation, as this construct is not supported by the AML
3515interpreter.
3516
3517-- For all ASL math and logic operators, the target operand must be a
3518data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
3519includes the function return value also.
3520
3521-- External declarations are also included in the typechecking where
3522possible. External objects defined using the UnknownObj keyword cannot be
3523typechecked, however.
3524
3525iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
3526operator:
3527- Legacy code: Index(PKG1, 3)
3528- New ASL+ code: PKG1[3]
3529This completes the ACPI 6.0 ASL+ support as it was the only operator not
3530supported.
3531
3532iASL: Fixed the file suffix for the preprocessor output file (.i). Two
3533spaces were inadvertently appended to the filename, causing file access
3534and deletion problems on some systems.
3535
3536ASL Test Suite (ASLTS): Updated the master makefile to generate all
3537possible compiler output files when building the test suite -- thus
3538exercising these features of the compiler. These files are automatically
3539deleted when the test suite exits.
3540
3541
3542----------------------------------------
354318 August 2015. Summary of changes for version 20150818:
3544
35451) ACPICA kernel-resident subsystem:
3546
3547Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
3548Zheng. ACPICA BZ 1186.
3549
3550Completed development to ensure that the ACPICA Disassembler and Debugger
3551are fully standalone components of ACPICA. Removed cross-component
3552dependences. Lv Zheng.
3553
3554The max-number-of-AML-loops is now runtime configurable (previously was
3555compile-time only). This is essentially a loop timeout to force-abort
3556infinite AML loops. ACPCIA BZ 1192.
3557
3558Debugger: Cleanup output to dump ACPI names and namepaths without any
3559trailing underscores. Lv Zheng. ACPICA BZ 1135.
3560
3561Removed unnecessary conditional compilations across the Debugger and
3562Disassembler components where entire modules could be left uncompiled.
3563
3564The aapits test is deprecated and has been removed from the ACPICA git
3565tree. The test has never been completed and has not been maintained, thus
3566becoming rather useless. ACPICA BZ 1015, 794.
3567
3568A batch of small changes to close bugzilla and other reports:
3569- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
3570- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
3571- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
3572- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
3573Moore.
3574- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
3575ACPICA BZ 1184.
3576- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
3577operators.
3578- Debugger: Split debugger initialization/termination interfaces. Lv
3579Zheng.
3580- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
3581identification.
3582- AcpiExec: Add debug message during _REG method phase during table
3583load/init.
3584- AcpiNames: Fix a regression where some output was missing and no longer
3585emitted.
3586- Debugger: General cleanup and simplification. Lv Zheng.
3587- Disassembler: Cleanup use of several global option variables. Lv Zheng.
3588
3589Example Code and Data Size: These are the sizes for the OS-independent
3590acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3591debug version of the code includes the debug output trace mechanism and
3592has a much larger code and data size.
3593
3594  Current Release:
3595    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
3596    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
3597  Previous Release:
3598    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
3599    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
3600
3601
36022) iASL Compiler/Disassembler and Tools:
3603
3604AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
3605were not handled properly and caused load errors. Now, properly invoke
3606and use the ACPICA auto-reallocate mechanism for ACPI table data
3607structures. ACPICA BZ 1188
3608
3609AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
3610BZ 1190.
3611
3612AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
3613AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
3614executed during initialization. ACPICA BZ 1187, 1189.
3615
3616iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
3617that corresponds to each disassembled ASL statement, to simplify
3618debugging. ACPICA BZ 1191.
3619
3620Debugger: Add option to the "objects" command to display a summary of the
3621current namespace objects (Object type and count). This is displayed if
3622the command is entered with no arguments.
3623
3624AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
3625
3626
3627----------------------------------------
362817 July 2015. Summary of changes for version 20150717:
3629
36301) ACPICA kernel-resident subsystem:
3631
3632Improved the partitioning between the Debugger and Disassembler
3633components. This allows the Debugger to be used standalone within kernel
3634code without the Disassembler (which is used for single stepping also).
3635This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
3636
3637Debugger: Implemented a new command to trace the execution of control
3638methods (Trace). This is especially useful for the in-kernel version of
3639the debugger when file I/O may not be available for method trace output.
3640See the ACPICA reference for more information. Lv Zheng.
3641
3642Moved all C library prototypes (used for the local versions of these
3643functions when requested) to a new header, acclib.h
3644Cleaned up the use of non-ANSI C library functions. These functions are
3645implemented locally in ACPICA. Moved all such functions to a common
3646source file, utnonansi.c
3647
3648Debugger: Fixed a problem with the "!!" command (get last command
3649executed) where the debugger could enter an infinite loop and eventually
3650crash.
3651
3652Removed the use of local macros that were used for some of the standard C
3653library functions to automatically cast input parameters. This mostly
3654affected the is* functions where the input parameter is defined to be an
3655int. This required a few modifications to the main ACPICA source code to
3656provide casting for these functions and eliminate possible compiler
3657warnings for these parameters.
3658
3659Across the source code, added additional status/error checking to resolve
3660issues discovered by static source code analysis tools such as Coverity.
3661
3662Example Code and Data Size: These are the sizes for the OS-independent
3663acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3664debug version of the code includes the debug output trace mechanism and
3665has a much larger code and data size.
3666
3667  Current Release:
3668    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
3669    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
3670  Previous Release:
3671    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3672    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
3673
3674
36752) iASL Compiler/Disassembler and Tools:
3676
3677iASL: Fixed a regression where the device map file feature no longer
3678worked properly when used in conjunction with the disassembler. It only
3679worked properly with the compiler itself.
3680
3681iASL: Implemented a new warning for method LocalX variables that are set
3682but never used (similar to a C compiler such as gcc). This also applies
3683to ArgX variables that are not defined by the parent method, and are
3684instead (legally) used as local variables.
3685
3686iASL/Preprocessor: Finished the pass-through of line numbers from the
3687preprocessor to the compiler. This ensures that compiler errors/warnings
3688have the correct original line numbers and filenames, regardless of any
3689#include files.
3690
3691iASL/Preprocessor: Fixed a couple of issues with comment handling and the
3692pass-through of comments to the preprocessor output file (which becomes
3693the compiler input file). Also fixed a problem with // comments that
3694appear after a math expression.
3695
3696iASL: Added support for the TCPA server table to the table compiler and
3697template generator. (The client table was already previously supported)
3698
3699iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
3700identify the iASL compiler.
3701
3702Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
3703multiple times. The new names are ACPI_SIGN_NEGATIVE and
3704ACPI_SIGN_POSITIVE.
3705
3706AcpiHelp: Update to expand help messages for the iASL preprocessor
3707directives.
3708
3709
3710----------------------------------------
371119 June 2015. Summary of changes for version 20150619:
3712
3713Two regressions in version 20150616 have been addressed:
3714
3715Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
3716etc.) This update changes ACPICA to only use the standard headers for
3717functions, or the prototypes for the local versions of the C library
3718functions. Across the source code, this required some additional casts
3719for some Clib invocations for portability. Moved all local prototypes to
3720a new file, acclib.h
3721
3722Fixes several problems with recent changes to the handling of the FACS
3723table that could cause some systems not to boot.
3724
3725
3726----------------------------------------
372716 June 2015. Summary of changes for version 20150616:
3728
3729
37301) ACPICA kernel-resident subsystem:
3731
3732Across the entire ACPICA source code base, the various macros for the C
3733library functions (such as ACPI_STRLEN, etc.) have been removed and
3734replaced by the standard C library names (strlen, etc.) The original
3735purpose for these macros is no longer applicable. This simplification
3736reduces the number of macros used in the ACPICA source code
3737significantly, improving readability and maintainability.
3738
3739Implemented support for a new ACPI table, the OSDT. This table, the
3740"override" SDT, can be loaded directly by the host OS at boot time. It
3741enables the replacement of existing namespace objects that were installed
3742via the DSDT and/or SSDTs. The primary purpose for this is to replace
3743buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
3744for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
3745Moore.
3746
3747Added support for systems with (improperly) two FACS tables -- a "32-bit"
3748table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
3749X field). This change will support both automatically. There continues to
3750be systems found with this issue. This support requires a change to the
3751AcpiSetFirmwareWakingVector interface. Also, a public global variable has
3752been added to allow the host to select which FACS is desired
3753(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
3754details Lv Zheng.
3755
3756Added a new feature to allow for systems that do not contain an FACS.
3757Although this is already supported on hardware-reduced platforms, the
3758feature has been extended for all platforms. The reasoning is that we do
3759not want to abort the entire ACPICA initialization just because the
3760system is seriously buggy and has no FACS.
3761
3762Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
3763not correctly transcribed from the ACPI specification in ACPICA version
376420150515.
3765
3766Implemented support for the _CLS object in the AcpiGetObjectInfo external
3767interface.
3768
3769Updated the definitions of the TCPA and TPM2 ACPI tables to the more
3770recent TCG ACPI Specification, December 14, 2014. Table disassembler and
3771compiler also updated. Note: The TCPA "server" table is not supported by
3772the disassembler/table-compiler at this time.
3773
3774ACPI 6.0: Added definitions for the new GIC version field in the MADT.
3775
3776Example Code and Data Size: These are the sizes for the OS-independent
3777acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3778debug version of the code includes the debug output trace mechanism and
3779has a much larger code and data size.
3780
3781  Current Release:
3782    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3783    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
3784  Previous Release:
3785    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
3786    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
3787
3788
37892) iASL Compiler/Disassembler and Tools:
3790
3791Disassembler: Fixed a problem with the new symbolic operator disassembler
3792where incorrect ASL code could be emitted in some cases for the "non-
3793commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
3794ShiftRight. The actual problem cases seem to be rather unusual in common
3795ASL code, however. David Box.
3796
3797Modified the linux version of acpidump to obtain ACPI tables from not
3798just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
3799Zheng.
3800
3801iASL: Fixed a problem where the user preprocessor output file (.i)
3802contained extra data that was not expected. The compiler was using this
3803file as a temporary file and passed through #line directives in order to
3804keep compiler error messages in sync with the input file and line number
3805across multiple include files. The (.i) is no longer a temporary file as
3806the compiler uses a new, different file for the original purpose.
3807
3808iASL: Fixed a problem where comments within the original ASL source code
3809file were not passed through to the preprocessor output file, nor any
3810listing files.
3811
3812iASL: Fixed some issues for the handling of the "#include" preprocessor
3813directive and the similar (but not the same) "Include" ASL operator.
3814
3815iASL: Add support for the new OSDT in both the disassembler and compiler.
3816
3817iASL: Fixed a problem with the constant folding support where a Buffer
3818object could be incorrectly generated (incorrectly formed) during a
3819conversion to a Store() operator.
3820
3821AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
3822description text for the _REV predefined name. _REV now permanently
3823returns 2, as per the ACPI 6.0 specification.
3824
3825Debugger: Enhanced the output of the Debug ASL object for references
3826produced by the Index operator. For Buffers and strings, only output the
3827actual byte pointed to by the index. For packages, only print the single
3828package element decoded by the index. Previously, the entire
3829buffer/string/package was emitted.
3830
3831iASL/Table-compiler: Fixed a regression where the "generic" data types
3832were no longer recognized, causing errors.
3833
3834
3835----------------------------------------
383615 May 2015. Summary of changes for version 20150515:
3837
3838This release implements most of ACPI 6.0 as described below.
3839
38401) ACPICA kernel-resident subsystem:
3841
3842Implemented runtime argument checking and return value checking for all
3843new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
3844_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
3845
3846Example Code and Data Size: These are the sizes for the OS-independent
3847acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3848debug version of the code includes the debug output trace mechanism and
3849has a much larger code and data size.
3850
3851  Current Release:
3852    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
3853    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
3854  Previous Release:
3855    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
3856    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
3857
3858
38592) iASL Compiler/Disassembler and Tools:
3860
3861iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
3862names (argument count validation and return value typechecking.)
3863
3864iASL disassembler and table compiler: implemented support for all new
3865ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
3866
3867iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
3868tables: FADT, MADT.
3869
3870iASL preprocessor: Added a new directive to enable inclusion of binary
3871blobs into ASL code. The new directive is #includebuffer. It takes a
3872binary file as input and emits a named ascii buffer object into the ASL
3873code.
3874
3875AcpiHelp: Added support for all new ACPI 6.0 predefined names.
3876
3877AcpiHelp: Added a new option, -d, to display all iASL preprocessor
3878directives.
3879
3880AcpiHelp: Added a new option, -t, to display all known/supported ACPI
3881tables.
3882
3883
3884----------------------------------------
388510 April 2015. Summary of changes for version 20150410:
3886
3887Reverted a change introduced in version 20150408 that caused
3888a regression in the disassembler where incorrect operator
3889symbols could be emitted.
3890
3891
3892----------------------------------------
389308 April 2015. Summary of changes for version 20150408:
3894
3895
38961) ACPICA kernel-resident subsystem:
3897
3898Permanently set the return value for the _REV predefined name. It now
3899returns 2 (was 5). This matches other ACPI implementations. _REV will be
3900deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
3901for ACPI 2.0 and later. It should never be used to differentiate or
3902identify operating systems.
3903
3904Added the "Windows 2015" string to the _OSI support. ACPICA will now
3905return TRUE to a query with this string.
3906
3907Fixed several issues with the local version of the printf function.
3908
3909Added the C99 compiler option (-std=c99) to the Unix makefiles.
3910
3911  Current Release:
3912    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
3913    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
3914  Previous Release:
3915    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3916    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3917
3918
39192) iASL Compiler/Disassembler and Tools:
3920
3921iASL: Implemented an enhancement to the constant folding feature to
3922transform the parse tree to a simple Store operation whenever possible:
3923    Add (2, 3, X) ==> is converted to: Store (5, X)
3924    X = 2 + 3     ==> is converted to: Store (5, X)
3925
3926Updated support for the SLIC table (Software Licensing Description Table)
3927in both the Data Table compiler and the disassembler. The SLIC table
3928support now conforms to "Microsoft Software Licensing Tables (SLIC and
3929MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
3930following the ACPI header is now defined to be "Proprietary Data", and as
3931such, can only be entered or displayed as a hex data block.
3932
3933Implemented full support for the MSDM table as described in the document
3934above. Note: The format of MSDM is similar to SLIC. Any MSDM data
3935following the ACPI header is defined to be "Proprietary Data", and can
3936only be entered or displayed as a hex data block.
3937
3938Implemented the -Pn option for the iASL Table Compiler (was only
3939implemented for the ASL compiler). This option disables the iASL
3940preprocessor.
3941
3942Disassembler: For disassembly of Data Tables, added a comment field
3943around the Ascii equivalent data that is emitted as part of the "Raw
3944Table Data" block. This prevents the iASL Preprocessor from possible
3945confusion if/when the table is compiled.
3946
3947Disassembler: Added an option (-df) to force the disassembler to assume
3948that the table being disassembled contains valid AML. This feature is
3949useful for disassembling AML files that contain ACPI signatures other
3950than DSDT or SSDT (such as OEMx or other signatures).
3951
3952Changes for the EFI version of the tools:
39531) Fixed a build error/issue
39542) Fixed a cast warning
3955
3956iASL: Fixed a path issue with the __FILE__ operator by making the
3957directory prefix optional within the internal SplitInputFilename
3958function.
3959
3960Debugger: Removed some unused global variables.
3961
3962Tests: Updated the makefile for proper generation of the AAPITS suite.
3963
3964
3965----------------------------------------
396604 February 2015. Summary of changes for version 20150204:
3967
3968ACPICA kernel-resident subsystem:
3969
3970Updated all ACPICA copyrights and signons to 2014. Added the 2014
3971copyright to all module headers and signons, including the standard Linux
3972header. This affects virtually every file in the ACPICA core subsystem,
3973iASL compiler, all ACPICA utilities, and the test suites.
3974
3975Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
3976A raw gpe handling mechanism was created to allow better handling of GPE
3977storms that aren't easily managed by the normal handler. The raw handler
3978allows disabling/renabling of the GPE so that interrupt storms can be
3979avoided in cases where events cannot be timely serviced. In this
3980scenario, handlers should use the AcpiSetGpe() API to disable/enable the
3981GPE. This API will leave the reference counts undisturbed, thereby
3982preventing unintentional clearing of the GPE when the intent in only to
3983temporarily disable it. Raw handlers allow enabling and disabling of a
3984GPE by removing GPE register locking. As such, raw handlers much provide
3985their own locks while using GPE API's to protect access to GPE data
3986structures.
3987Lv Zheng
3988
3989Events: Always modify GPE registers under the GPE lock.
3990Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
3991values. Reported as bug by joe.liu@apple.com.
3992
3993Unix makefiles: Separate option to disable optimizations and
3994_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
3995NOOPT disable option and creates a separate flag (NOFORTIFY) for this
3996purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
3997errors when building ACPICA. This allows disabling the option without
3998also having to disable optimazations.
3999David Box
4000
4001  Current Release:
4002    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
4003    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
4004
4005--
4006--------------------------------------
400707 November 2014. Summary of changes for version 20141107:
4008
4009This release is available at https://acpica.org/downloads
4010
4011This release introduces and implements language extensions to ASL that
4012provide support for symbolic ("C-style") operators and expressions. These
4013language extensions are known collectively as ASL+.
4014
4015
40161) iASL Compiler/Disassembler and Tools:
4017
4018Disassembler: Fixed a problem with disassembly of the UartSerialBus
4019macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
4020Box.
4021
4022Disassembler: Fixed the Unicode macro support to add escape sequences.
4023All non-printable ASCII values are emitted as escape sequences, as well
4024as the standard escapes for quote and backslash. Ensures that the
4025disassembled macro can be correctly recompiled.
4026
4027iASL: Added Printf/Fprintf macros for formatted output. These macros are
4028translated to existing AML Concatenate and Store operations. Printf
4029writes to the ASL Debug object. Fprintf allows the specification of an
4030ASL name as the target. Only a single format specifier is required, %o,
4031since the AML interpreter dynamically converts objects to the required
4032type. David E. Box.
4033
4034    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
4035                 (Concatenate (Concatenate (Concatenate ("", Arg0),
4036                 ": Unexpected value for "), Arg1), ", "), Arg2),
4037                 " at line "), Arg3), Debug)
4038
4039    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
4040                 Arg0, Arg1, Arg2, Arg3)
4041
4042    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
4043                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
4044
4045    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
4046
4047iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
4048ASL parse tree before the AML code is generated. This allows blocks of
4049ASL code to be removed in order to help locate and identify problem
4050devices and/or code. David E. Box.
4051
4052AcpiExec: Added support (-fi) for an optional namespace object
4053initialization file. This file specifies initial values for namespace
4054objects as necessary for debugging and testing different ASL code paths
4055that may be taken as a result of BIOS options.
4056
4057
40582) Overview of symbolic operator support for ASL (ASL+)
4059-------------------------------------------------------
4060
4061As an extension to the ASL language, iASL implements support for symbolic
4062(C-style) operators for math and logical expressions. This can greatly
4063simplify ASL code as well as improve both readability and
4064maintainability. These language extensions can exist concurrently with
4065all legacy ASL code and expressions.
4066
4067The symbolic extensions are 100% compatible with existing AML
4068interpreters, since no new AML opcodes are created. To implement the
4069extensions, the iASL compiler transforms the symbolic expressions into
4070the legacy ASL/AML equivalents at compile time.
4071
4072Full symbolic expressions are supported, along with the standard C
4073precedence and associativity rules.
4074
4075Full disassembler support for the symbolic expressions is provided, and
4076creates an automatic migration path for existing ASL code to ASL+ code
4077via the disassembly process. By default, the disassembler now emits ASL+
4078code with symbolic expressions. An option (-dl) is provided to force the
4079disassembler to emit legacy ASL code if desired.
4080
4081Below is the complete list of the currently supported symbolic operators
4082with examples. See the iASL User Guide for additional information.
4083
4084
4085ASL+ Syntax      Legacy ASL Equivalent
4086-----------      ---------------------
4087
4088    // Math operators
4089
4090Z = X + Y        Add (X, Y, Z)
4091Z = X - Y        Subtract (X, Y, Z)
4092Z = X * Y        Multiply (X, Y, Z)
4093Z = X / Y        Divide (X, Y, , Z)
4094Z = X % Y        Mod (X, Y, Z)
4095Z = X << Y       ShiftLeft (X, Y, Z)
4096Z = X >> Y       ShiftRight (X, Y, Z)
4097Z = X & Y        And (X, Y, Z)
4098Z = X | Y        Or (X, Y, Z)
4099Z = X ^ Y        Xor (X, Y, Z)
4100Z = ~X           Not (X, Z)
4101X++              Increment (X)
4102X--              Decrement (X)
4103
4104    // Logical operators
4105
4106(X == Y)         LEqual (X, Y)
4107(X != Y)         LNotEqual (X, Y)
4108(X < Y)          LLess (X, Y)
4109(X > Y)          LGreater (X, Y)
4110(X <= Y)         LLessEqual (X, Y)
4111(X >= Y)         LGreaterEqual (X, Y)
4112(X && Y)         LAnd (X, Y)
4113(X || Y)         LOr (X, Y)
4114(!X)             LNot (X)
4115
4116    // Assignment and compound assignment operations
4117
4118X = Y           Store (Y, X)
4119X += Y          Add (X, Y, X)
4120X -= Y          Subtract (X, Y, X)
4121X *= Y          Multiply (X, Y, X)
4122X /= Y          Divide (X, Y, , X)
4123X %= Y          Mod (X, Y, X)
4124X <<= Y         ShiftLeft (X, Y, X)
4125X >>= Y         ShiftRight (X, Y, X)
4126X &= Y          And (X, Y, X)
4127X |= Y          Or (X, Y, X)
4128X ^= Y          Xor (X, Y, X)
4129
4130
41313) ASL+ Examples:
4132-----------------
4133
4134Legacy ASL:
4135        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
4136            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
41370x03FB),
4138            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
4139        {
4140            And (MEMB, 0xFFFFFFF0, SRMB)
4141            Store (MEMB, Local2)
4142            Store (PDBM, Local1)
4143            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
4144            Store (SRMB, MEMB)
4145            Or (PDBM, 0x02, PDBM)
4146        }
4147
4148ASL+ version:
4149        If (((R510 & 0x03FB) == 0x02E0) ||
4150            ((R520 & 0x03FB) == 0x02E0) ||
4151            ((R530 & 0x03FB) == 0x02E0) ||
4152            ((R540 & 0x03FB) == 0x02E0))
4153        {
4154            SRMB = (MEMB & 0xFFFFFFF0)
4155            Local2 = MEMB
4156            Local1 = PDBM
4157            PDBM &= 0xFFFFFFFFFFFFFFF9
4158            MEMB = SRMB
4159            PDBM |= 0x02
4160        }
4161
4162Legacy ASL:
4163        Store (0x1234, Local1)
4164        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
4165        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
4166        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
4167        Store (Index (PKG1, 0x03), Local6)
4168        Store (Add (Local3, Local2), Debug)
4169        Add (Local1, 0x0F, Local2)
4170        Add (Local1, Multiply (Local2, Local3), Local2)
4171        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
4172
4173ASL+ version:
4174        Local1 = 0x1234
4175        Local3 = (((Local1 + TEST) + 0x20) * Local2)
4176        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
4177        Local3 = (Local1 + (TEST + (0x20 * Local2)))
4178        Local6 = Index (PKG1, 0x03)
4179        Debug = (Local3 + Local2)
4180        Local2 = (Local1 + 0x0F)
4181        Local2 = (Local1 + (Local2 * Local3))
4182        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
4183
4184
4185----------------------------------------
418626 September 2014. Summary of changes for version 20140926:
4187
41881) ACPICA kernel-resident subsystem:
4189
4190Updated the GPIO operation region handler interface (GeneralPurposeIo).
4191In order to support GPIO Connection objects with multiple pins, along
4192with the related Field objects, the following changes to the interface
4193have been made: The Address is now defined to be the offset in bits of
4194the field unit from the previous invocation of a Connection. It can be
4195viewed as a "Pin Number Index" into the connection resource descriptor.
4196The BitWidth is the exact bit width of the field. It is usually one bit,
4197but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
4198additional information and examples.
4199
4200GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
4201corresponding _Lxx/_Exx methods are disabled (they may have been enabled
4202by the firmware), so that they cannot fire until they are enabled via
4203AcpiUpdateAllGpes. Rafael J. Wysocki.
4204
4205Added a new return flag for the Event/GPE status interfaces --
4206AcpiGetEventStatus and AcpiGetGpeStatus. The new
4207ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
4208GPE currently has a handler associated with it, and can thus actually
4209affect the system. Lv Zheng.
4210
4211Example Code and Data Size: These are the sizes for the OS-independent
4212acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4213debug version of the code includes the debug output trace mechanism and
4214has a much larger code and data size.
4215
4216  Current Release:
4217    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
4218    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
4219  Previous Release:
4220    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
4221    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
4222
42232) iASL Compiler/Disassembler and Tools:
4224
4225iASL: Fixed a memory allocation/free regression introduced in 20140828
4226that could cause the compiler to crash. This was introduced inadvertently
4227during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
42281113.
4229
4230iASL: Removed two error messages that have been found to create false
4231positives, until they can be fixed and fully validated (ACPICA BZ 1112):
42321) Illegal forward reference within a method
42332) Illegal reference across two methods
4234
4235iASL: Implemented a new option (-lm) to create a hardware mapping file
4236that summarizes all GPIO, I2C, SPI, and UART connections. This option
4237works for both the compiler and disassembler. See the iASL compiler user
4238guide for additional information and examples (section 6.4.6).
4239
4240AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
4241version 2. This corrects the AE_BAD_HEADER exception seen on systems with
4242a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
4243
4244AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
4245unless STDIN is actually a terminal. Assists with batch-mode processing.
4246ACPICA BZ 1114.
4247
4248Disassembler/AcpiHelp: Added another large group of recognized _HID
4249values.
4250
4251
4252----------------------------------------
425328 August 2014. Summary of changes for version 20140828:
4254
42551) ACPICA kernel-resident subsystem:
4256
4257Fixed a problem related to the internal use of the Timer() operator where
4258a 64-bit divide could cause an attempted link to a double-precision math
4259library. This divide is not actually necessary, so the code was
4260restructured to eliminate it. Lv Zheng.
4261
4262ACPI 5.1: Added support for the runtime validation of the _DSD package
4263(similar to the iASL support).
4264
4265ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
4266SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
4267
4268Example Code and Data Size: These are the sizes for the OS-independent
4269acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4270debug version of the code includes the debug output trace mechanism and
4271has a much larger code and data size.
4272
4273  Current Release:
4274    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
4275    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
4276  Previous Release:
4277    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
4278    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
4279
42802) iASL Compiler/Disassembler and Tools:
4281
4282AcpiExec: Fixed a problem on unix systems where the original terminal
4283state was not always properly restored upon exit. Seen when using the -v
4284option. ACPICA BZ 1104.
4285
4286iASL: Fixed a problem with the validation of the ranges/length within the
4287Memory24 resource descriptor. There was a boundary condition when the
4288range was equal to the (length -1) caused by the fact that these values
4289are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
4290
4291Disassembler: Fixed a problem with the GpioInt descriptor interrupt
4292polarity
4293flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
4294is
4295now supported properly.
4296
4297ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
4298in the disassembler, data table compiler, and table template generator.
4299
4300iASL: Added a requirement for Device() objects that one of either a _HID
4301or _ADR must exist within the scope of a Device, as per the ACPI
4302specification. Remove a similar requirement that was incorrectly in place
4303for the _DSD object.
4304
4305iASL: Added error detection for illegal named references within control
4306methods that would cause runtime failures. Now trapped as errors are: 1)
4307References to objects within a non-parent control method. 2) Forward
4308references (within a method) -- for control methods, AML interpreters use
4309a one-pass parse of control methods. ACPICA BZ 1008.
4310
4311iASL: Added error checking for dependencies related to the _PSx power
4312methods. ACPICA BZ 1029.
43131) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
4314_PS3.
43152) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
4316scope.
4317
4318iASL and table compiler: Cleanup miscellaneous memory leaks by fully
4319deploying the existing object and string caches and adding new caches for
4320the table compiler.
4321
4322iASL: Split the huge parser source file into multiple subfiles to improve
4323manageability. Generation now requires the M4 macro preprocessor, which
4324is part of the Bison distribution on both unix and windows platforms.
4325
4326AcpiSrc: Fixed and removed all extraneous warnings generated during
4327entire ACPICA source code scan and/or conversion.
4328
4329
4330----------------------------------------
4331
433224 July 2014. Summary of changes for version 20140724:
4333
4334The ACPI 5.1 specification has been released and is available at:
4335http://uefi.org/specs/access
4336
4337
43380) ACPI 5.1 support in ACPICA:
4339
4340ACPI 5.1 is fully supported in ACPICA as of this release.
4341
4342New predefined names. Support includes iASL and runtime ACPICA
4343validation.
4344    _CCA (Cache Coherency Attribute).
4345    _DSD (Device-Specific Data). David Box.
4346
4347Modifications to existing ACPI tables. Support includes headers, iASL
4348Data Table compiler, disassembler, and the template generator.
4349    FADT - New fields and flags. Graeme Gregory.
4350    GTDT - One new subtable and new fields. Tomasz Nowicki.
4351    MADT - Two new subtables. Tomasz Nowicki.
4352    PCCT - One new subtable.
4353
4354Miscellaneous.
4355    New notification type for System Resource Affinity change events.
4356
4357
43581) ACPICA kernel-resident subsystem:
4359
4360Fixed a regression introduced in 20140627 where a fault can happen during
4361the deletion of Alias AML namespace objects. The problem affected both
4362the core ACPICA and the ACPICA tools including iASL and AcpiExec.
4363
4364Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
4365simple mechanism to enable wake GPEs that have no associated handler or
4366control method. Rafael Wysocki.
4367
4368Updated the AcpiEnableGpe interface to disallow the enable if there is no
4369handler or control method associated with the particular GPE. This will
4370help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
4371
4372Updated GPE handling and dispatch by disabling the GPE before clearing
4373the status bit for edge-triggered GPEs. Lv Zheng.
4374
4375Added Timer() support to the AML Debug object. The current timer value is
4376now displayed with each invocation of (Store to) the debug object to
4377enable simple generation of execution times for AML code (method
4378execution for example.) ACPICA BZ 1093.
4379
4380Example Code and Data Size: These are the sizes for the OS-independent
4381acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4382debug version of the code includes the debug output trace mechanism and
4383has a much larger code and data size.
4384
4385  Current Release:
4386    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
4387    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
4388  Previous Release:
4389    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
4390    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
4391
4392
43932) iASL Compiler/Disassembler and Tools:
4394
4395Fixed an issue with the recently added local printf implementation,
4396concerning width/precision specifiers that could cause incorrect output.
4397Lv Zheng. ACPICA BZ 1094.
4398
4399Disassembler: Added support to detect buffers that contain UUIDs and
4400disassemble them to an invocation of the ToUUID operator. Also emit
4401commented descriptions of known ACPI-related UUIDs.
4402
4403AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
4404-u. Adds three new files.
4405
4406iASL: Update table compiler and disassembler for DMAR table changes that
4407were introduced in September 2013. With assistance by David Woodhouse.
4408
4409----------------------------------------
441027 June 2014. Summary of changes for version 20140627:
4411
44121) ACPICA kernel-resident subsystem:
4413
4414Formatted Output: Implemented local versions of standard formatted output
4415utilities such as printf, etc. Over time, it has been discovered that
4416there are in fact many portability issues with printf, and the addition
4417of this feature will fix/prevent these issues once and for all. Some
4418known issues are summarized below:
4419
44201) Output of 64-bit values is not portable. For example, UINT64 is %ull
4421for the Linux kernel and is %uI64 for some MSVC versions.
44222) Invoking printf consistently in a manner that is portable across both
442332-bit and 64-bit platforms is difficult at best in many situations.
44243) The output format for pointers varies from system to system (leading
4425zeros especially), and leads to inconsistent output from ACPICA across
4426platforms.
44274) Certain platform-specific printf formats may conflict with ACPICA use.
44285) If there is no local C library available, ACPICA now has local support
4429for printf.
4430
4431-- To address these printf issues in a complete manner, ACPICA now
4432directly implements a small subset of printf format specifiers, only
4433those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
4434
4435Implemented support for ACPICA generation within the EFI environment.
4436Initially, the AcpiDump utility is supported in the UEFI shell
4437environment. Lv Zheng.
4438
4439Added a new external interface, AcpiLogError, to improve ACPICA
4440portability. This allows the host to redirect error messages from the
4441ACPICA utilities. Lv Zheng.
4442
4443Added and deployed new OSL file I/O interfaces to improve ACPICA
4444portability:
4445  AcpiOsOpenFile
4446  AcpiOsCloseFile
4447  AcpiOsReadFile
4448  AcpiOsWriteFile
4449  AcpiOsGetFileOffset
4450  AcpiOsSetFileOffset
4451There are C library implementations of these functions in the new file
4452service_layers/oslibcfs.c -- however, the functions can be implemented by
4453the local host in any way necessary. Lv Zheng.
4454
4455Implemented a mechanism to disable/enable ACPI table checksum validation
4456at runtime. This can be useful when loading tables very early during OS
4457initialization when it may not be possible to map the entire table in
4458order to compute the checksum. Lv Zheng.
4459
4460Fixed a buffer allocation issue for the Generic Serial Bus support.
4461Originally, a fixed buffer length was used. This change allows for
4462variable-length buffers based upon the protocol indicated by the field
4463access attributes. Reported by Lan Tianyu. Lv Zheng.
4464
4465Fixed a problem where an object detached from a namespace node was not
4466properly terminated/cleared and could cause a circular list problem if
4467reattached. ACPICA BZ 1063. David Box.
4468
4469Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
4470
4471Fixed a possible memory leak in an error return path within the function
4472AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
4473
4474Example Code and Data Size: These are the sizes for the OS-independent
4475acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4476debug version of the code includes the debug output trace mechanism and
4477has a much larger code and data size.
4478
4479  Current Release:
4480    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
4481    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
4482  Previous Release:
4483    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
4484    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
4485
4486
44872) iASL Compiler/Disassembler and Tools:
4488
4489Disassembler: Add dump of ASCII equivalent text within a comment at the
4490end of each line of the output for the Buffer() ASL operator.
4491
4492AcpiDump: Miscellaneous changes:
4493  Fixed repetitive table dump in -n mode.
4494  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
4495the ACPI 2.0 GUID fails.
4496
4497iASL: Fixed a problem where the compiler could fault if incorrectly given
4498an acpidump output file as input. ACPICA BZ 1088. David Box.
4499
4500AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
4501they are invoked without any arguments.
4502
4503Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
45041086. Colin Ian King.
4505
4506Disassembler: Cleaned up a block of code that extracts a parent Op
4507object. Added a comment that explains that the parent is guaranteed to be
4508valid in this case. ACPICA BZ 1069.
4509
4510
4511----------------------------------------
451224 April 2014. Summary of changes for version 20140424:
4513
45141) ACPICA kernel-resident subsystem:
4515
4516Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
4517Some of these tables are known to contain a trailing NULL entry. Lv
4518Zheng.
4519
4520Removed an extraneous error message for the case where there are a large
4521number of system GPEs (> 124). This was the "32-bit FADT register is too
4522long to convert to GAS struct" message, which is irrelevant for GPEs
4523since the GPEx_BLK_LEN fields of the FADT are always used instead of the
4524(limited capacity) GAS bit length. Also, several changes to ensure proper
4525support for GPE numbers > 255, where some "GPE number" fields were 8-bits
4526internally.
4527
4528Implemented and deployed additional configuration support for the public
4529ACPICA external interfaces. Entire classes of interfaces can now be
4530easily modified or configured out, replaced by stubbed inline functions
4531by default. Lv Zheng.
4532
4533Moved all public ACPICA runtime configuration globals to the public
4534ACPICA external interface file for convenience. Also, removed some
4535obsolete/unused globals. See the file acpixf.h. Lv Zheng.
4536
4537Documentation: Added a new section to the ACPICA reference describing the
4538maximum number of GPEs that can be supported by the FADT-defined GPEs in
4539block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
4540reference.
4541
4542Example Code and Data Size: These are the sizes for the OS-independent
4543acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4544debug version of the code includes the debug output trace mechanism and
4545has a much larger code and data size.
4546
4547  Current Release:
4548    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
4549    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
4550  Previous Release:
4551    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
4552    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
4553
4554
45552) iASL Compiler/Disassembler and Tools:
4556
4557iASL and disassembler: Add full support for the LPIT table (Low Power
4558Idle Table). Includes support in the disassembler, data table compiler,
4559and template generator.
4560
4561AcpiDump utility:
45621) Add option to force the use of the RSDT (over the XSDT).
45632) Improve validation of the RSDP signature (use 8 chars instead of 4).
4564
4565iASL: Add check for predefined packages that are too large.  For
4566predefined names that contain subpackages, check if each subpackage is
4567too large. (Check for too small already exists.)
4568
4569Debugger: Updated the GPE command (which simulates a GPE by executing the
4570GPE code paths in ACPICA). The GPE device is now optional, and defaults
4571to the GPE 0/1 FADT-defined blocks.
4572
4573Unix application OSL: Update line-editing support. Add additional error
4574checking and take care not to reset terminal attributes on exit if they
4575were never set. This should help guarantee that the terminal is always
4576left in the previous state on program exit.
4577
4578
4579----------------------------------------
458025 March 2014. Summary of changes for version 20140325:
4581
45821) ACPICA kernel-resident subsystem:
4583
4584Updated the auto-serialize feature for control methods. This feature
4585automatically serializes all methods that create named objects in order
4586to prevent runtime errors. The update adds support to ignore the
4587currently executing AML SyncLevel when invoking such a method, in order
4588to prevent disruption of any existing SyncLevel priorities that may exist
4589in the AML code. Although the use of SyncLevels is relatively rare, this
4590change fixes a regression where an AE_AML_MUTEX_ORDER exception can
4591appear on some machines starting with the 20140214 release.
4592
4593Added a new external interface to allow the host to install ACPI tables
4594very early, before the namespace is even created. AcpiInstallTable gives
4595the host additional flexibility for ACPI table management. Tables can be
4596installed directly by the host as if they had originally appeared in the
4597XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
4598(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
4599with additional internal restructuring and cleanup. See the ACPICA
4600Reference for interface details. Lv Zheng.
4601
4602Added validation of the checksum for all incoming dynamically loaded
4603tables (via external interfaces or via AML Load/LoadTable operators). Lv
4604Zheng.
4605
4606Updated the use of the AcpiOsWaitEventsComplete interface during Notify
4607and GPE handler removal. Restructured calls to eliminate possible race
4608conditions. Lv Zheng.
4609
4610Added a warning for the use/execution of the ASL/AML Unload (table)
4611operator. This will help detect and identify machines that use this
4612operator if and when it is ever used. This operator has never been seen
4613in the field and the usage model and possible side-effects of the drastic
4614runtime action of a full table removal are unknown.
4615
4616Reverted the use of #pragma push/pop which was introduced in the 20140214
4617release. It appears that push and pop are not implemented by enough
4618compilers to make the use of this feature feasible for ACPICA at this
4619time. However, these operators may be deployed in a future ACPICA
4620release.
4621
4622Added the missing EXPORT_SYMBOL macros for the install and remove SCI
4623handler interfaces.
4624
4625Source code generation:
46261) Disabled the use of the "strchr" macro for the gcc-specific
4627generation. For some versions of gcc, this macro can periodically expose
4628a compiler bug which in turn causes compile-time error(s).
46292) Added support for PPC64 compilation. Colin Ian King.
4630
4631Example Code and Data Size: These are the sizes for the OS-independent
4632acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4633debug version of the code includes the debug output trace mechanism and
4634has a much larger code and data size.
4635
4636  Current Release:
4637    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
4638    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
4639  Previous Release:
4640    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
4641    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
4642
4643
46442) iASL Compiler/Disassembler and Tools:
4645
4646Disassembler: Added several new features to improve the readability of
4647the resulting ASL code. Extra information is emitted within comment
4648fields in the ASL code:
46491) Known _HID/_CID values are decoded to descriptive text.
46502) Standard values for the Notify() operator are decoded to descriptive
4651text.
46523) Target operands are expanded to full pathnames (in a comment) when
4653possible.
4654
4655Disassembler: Miscellaneous updates for extern() handling:
46561) Abort compiler if file specified by -fe option does not exist.
46572) Silence unnecessary warnings about argument count mismatches.
46583) Update warning messages concerning unresolved method externals.
46594) Emit "UnknownObj" keyword for externals whose type cannot be
4660determined.
4661
4662AcpiHelp utility:
46631) Added the -a option to display both the ASL syntax and the AML
4664encoding for an input ASL operator. This effectively displays all known
4665information about an ASL operator with one AcpiHelp invocation.
46662) Added substring match support (similar to a wildcard) for the -i
4667(_HID/PNP IDs) option.
4668
4669iASL/Disassembler: Since this tool does not yet support execution on big-
4670endian machines, added detection of endianness and an error message if
4671execution is attempted on big-endian. Support for big-endian within iASL
4672is a feature that is on the ACPICA to-be-done list.
4673
4674AcpiBin utility:
46751) Remove option to extract binary files from an acpidump; this function
4676is made obsolete by the AcpiXtract utility.
46772) General cleanup of open files and allocated buffers.
4678
4679
4680----------------------------------------
468114 February 2014. Summary of changes for version 20140214:
4682
46831) ACPICA kernel-resident subsystem:
4684
4685Implemented a new mechanism to proactively prevent problems with ill-
4686behaved reentrant control methods that create named ACPI objects. This
4687behavior is illegal as per the ACPI specification, but is nonetheless
4688frequently seen in the field. Previously, this could lead to an
4689AE_ALREADY_EXISTS exception if the method was actually entered by more
4690than one thread. This new mechanism detects such methods at table load
4691time and marks them "serialized" to prevent reentrancy. A new global
4692option, AcpiGbl_AutoSerializeMethods, has been added to disable this
4693feature if desired. This mechanism and global option obsoletes and
4694supersedes the previous AcpiGbl_SerializeAllMethods option.
4695
4696Added the "Windows 2013" string to the _OSI support. ACPICA will now
4697respond TRUE to _OSI queries with this string. It is the stated policy of
4698ACPICA to add new strings to the _OSI support as soon as possible after
4699they are defined. See the full ACPICA _OSI policy which has been added to
4700the utilities/utosi.c file.
4701
4702Hardened/updated the _PRT return value auto-repair code:
47031) Do not abort the repair on a single subpackage failure, continue to
4704check all subpackages.
47052) Add check for the minimum subpackage length (4).
47063) Properly handle extraneous NULL package elements.
4707
4708Added support to avoid the possibility of infinite loops when traversing
4709object linked lists. Never allow an infinite loop, even in the face of
4710corrupted object lists.
4711
4712ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
4713pack(pop) directives to ensure that the ACPICA headers are independent of
4714compiler settings or other host headers.
4715
4716Example Code and Data Size: These are the sizes for the OS-independent
4717acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4718debug version of the code includes the debug output trace mechanism and
4719has a much larger code and data size.
4720
4721  Current Release:
4722    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
4723    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
4724  Previous Release:
4725    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
4726    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
4727
4728
47292) iASL Compiler/Disassembler and Tools:
4730
4731iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
4732first reserved field was incorrectly forced to have a value of zero. This
4733change correctly forces the field to have a value of one. ACPICA BZ 1081.
4734
4735Debugger: Added missing support for the "Extra" and "Data" subobjects
4736when displaying object data.
4737
4738Debugger: Added support to display entire object linked lists when
4739displaying object data.
4740
4741iASL: Removed the obsolete -g option to obtain ACPI tables from the
4742Windows registry. This feature has been superseded by the acpidump
4743utility.
4744
4745
4746----------------------------------------
474714 January 2014. Summary of changes for version 20140114:
4748
47491) ACPICA kernel-resident subsystem:
4750
4751Updated all ACPICA copyrights and signons to 2014. Added the 2014
4752copyright to all module headers and signons, including the standard Linux
4753header. This affects virtually every file in the ACPICA core subsystem,
4754iASL compiler, all ACPICA utilities, and the test suites.
4755
4756Improved parameter validation for AcpiInstallGpeBlock. Added the
4757following checks:
47581) The incoming device handle refers to type ACPI_TYPE_DEVICE.
47592) There is not already a GPE block attached to the device.
4760Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
4761device.
4762
4763Correctly support "references" in the ACPI_OBJECT. This change fixes the
4764support to allow references (namespace nodes) to be passed as arguments
4765to control methods via the evaluate object interface. This is probably
4766most useful for testing purposes, however.
4767
4768Improved support for 32/64 bit physical addresses in printf()-like
4769output. This change improves the support for physical addresses in printf
4770debug statements and other output on both 32-bit and 64-bit hosts. It
4771consistently outputs the appropriate number of bytes for each host. The
4772%p specifier is unsatisfactory since it does not emit uniform output on
4773all hosts/clib implementations (on some, leading zeros are not supported,
4774leading to difficult-to-read output).
4775
4776Example Code and Data Size: These are the sizes for the OS-independent
4777acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4778debug version of the code includes the debug output trace mechanism and
4779has a much larger code and data size.
4780
4781  Current Release:
4782    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
4783    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
4784  Previous Release:
4785    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
4786    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
4787
4788
47892) iASL Compiler/Disassembler and Tools:
4790
4791iASL: Fix a possible fault when using the Connection() operator. Fixes a
4792problem if the parent Field definition for the Connection operator refers
4793to an operation region that does not exist. ACPICA BZ 1064.
4794
4795AcpiExec: Load of local test tables is now optional. The utility has the
4796capability to load some various tables to test features of ACPICA.
4797However, there are enough of them that the output of the utility became
4798confusing. With this change, only the required local tables are displayed
4799(RSDP, XSDT, etc.) along with the actual tables loaded via the command
4800line specification. This makes the default output simler and easier to
4801understand. The -el command line option restores the original behavior
4802for testing purposes.
4803
4804AcpiExec: Added support for overlapping operation regions. This change
4805expands the simulation of operation regions by supporting regions that
4806overlap within the given address space. Supports SystemMemory and
4807SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
4808
4809AcpiExec: Added region handler support for PCI_Config and EC spaces. This
4810allows AcpiExec to simulate these address spaces, similar to the current
4811support for SystemMemory and SystemIO.
4812
4813Debugger: Added new command to read/write/compare all namespace objects.
4814The command "test objects" will exercise the entire namespace by writing
4815new values to each data object, and ensuring that the write was
4816successful. The original value is then restored and verified.
4817
4818Debugger: Added the "test predefined" command. This change makes this
4819test public and puts it under the new "test" command. The test executes
4820each and every predefined name within the current namespace.
4821
4822
4823----------------------------------------
482418 December 2013. Summary of changes for version 20131218:
4825
4826Global note: The ACPI 5.0A specification was released this month. There
4827are no changes needed for ACPICA since this release of ACPI is an
4828errata/clarification release. The specification is available at
4829acpi.info.
4830
4831
48321) ACPICA kernel-resident subsystem:
4833
4834Added validation of the XSDT root table if it is present. Some older
4835platforms contain an XSDT that is ill-formed or otherwise invalid (such
4836as containing some or all entries that are NULL pointers). This change
4837adds a new function to validate the XSDT before actually using it. If the
4838XSDT is found to be invalid, ACPICA will now automatically fall back to
4839using the RSDT instead. Original implementation by Zhao Yakui. Ported to
4840ACPICA and enhanced by Lv Zheng and Bob Moore.
4841
4842Added a runtime option to ignore the XSDT and force the use of the RSDT.
4843This change adds a runtime option that will force ACPICA to use the RSDT
4844instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
4845requires that an XSDT be used instead of the RSDT, the XSDT has been
4846found to be corrupt or ill-formed on some machines. Lv Zheng.
4847
4848Added a runtime option to favor 32-bit FADT register addresses over the
484964-bit addresses. This change adds an option to favor 32-bit FADT
4850addresses when there is a conflict between the 32-bit and 64-bit versions
4851of the same register. The default behavior is to use the 64-bit version
4852in accordance with the ACPI specification. This can now be overridden via
4853the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
4854
4855During the change above, the internal "Convert FADT" and "Verify FADT"
4856functions have been merged to simplify the code, making it easier to
4857understand and maintain. ACPICA BZ 933.
4858
4859Improve exception reporting and handling for GPE block installation.
4860Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
4861status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
4862
4863Added helper macros to extract bus/segment numbers from the HEST table.
4864This change adds two macros to extract the encoded bus and segment
4865numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
4866Betty Dall <betty.dall@hp.com>
4867
4868Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
4869by ACPICA. It is not a public macro, so it should have no effect on
4870existing OSV code. Lv Zheng.
4871
4872Example Code and Data Size: These are the sizes for the OS-independent
4873acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4874debug version of the code includes the debug output trace mechanism and
4875has a much larger code and data size.
4876
4877  Current Release:
4878    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
4879    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
4880  Previous Release:
4881    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4882    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4883
4884
48852) iASL Compiler/Disassembler and Tools:
4886
4887Disassembler: Improved pathname support for emitted External()
4888statements. This change adds full pathname support for external names
4889that have been resolved internally by the inclusion of additional ACPI
4890tables (via the iASL -e option). Without this change, the disassembler
4891can emit multiple externals for the same object, or it become confused
4892when the Scope() operator is used on an external object. Overall, greatly
4893improves the ability to actually recompile the emitted ASL code when
4894objects a referenced across multiple ACPI tables. Reported by Michael
4895Tsirkin (mst@redhat.com).
4896
4897Tests/ASLTS: Updated functional control suite to execute with no errors.
4898David Box. Fixed several errors related to the testing of the interpreter
4899slack mode. Lv Zheng.
4900
4901iASL: Added support to detect names that are declared within a control
4902method, but are unused (these are temporary names that are only valid
4903during the time the method is executing). A remark is issued for these
4904cases. ACPICA BZ 1022.
4905
4906iASL: Added full support for the DBG2 table. Adds full disassembler,
4907table compiler, and template generator support for the DBG2 table (Debug
4908Port 2 table).
4909
4910iASL: Added full support for the PCCT table, update the table definition.
4911Updates the PCCT table definition in the actbl3.h header and adds table
4912compiler and template generator support.
4913
4914iASL: Added an option to emit only error messages (no warnings/remarks).
4915The -ve option will enable only error messages, warnings and remarks are
4916suppressed. This can simplify debugging when only the errors are
4917important, such as when an ACPI table is disassembled and there are many
4918warnings and remarks -- but only the actual errors are of real interest.
4919
4920Example ACPICA code (source/tools/examples): Updated the example code so
4921that it builds to an actual working program, not just example code. Added
4922ACPI tables and execution of an example control method in the DSDT. Added
4923makefile support for Unix generation.
4924
4925
4926----------------------------------------
492715 November 2013. Summary of changes for version 20131115:
4928
4929This release is available at https://acpica.org/downloads
4930
4931
49321) ACPICA kernel-resident subsystem:
4933
4934Resource Manager: Fixed loop termination for the "get AML length"
4935function. The loop previously had an error termination on a NULL resource
4936pointer, which can never happen since the loop simply increments a valid
4937resource pointer. This fix changes the loop to terminate with an error on
4938an invalid end-of-buffer condition. The problem can be seen as an
4939infinite loop by callers to AcpiSetCurrentResources with an invalid or
4940corrupted resource descriptor, or a resource descriptor that is missing
4941an END_TAG descriptor. Reported by Dan Carpenter
4942<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
4943
4944Table unload and ACPICA termination: Delete all attached data objects
4945during namespace node deletion. This fix updates namespace node deletion
4946to delete the entire list of attached objects (attached via
4947AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
49481024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
4949
4950ACPICA termination: Added support to delete all objects attached to the
4951root namespace node. This fix deletes any and all objects that have been
4952attached to the root node via AcpiAttachData. Previously, none of these
4953objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
4954
4955Debug output: Do not emit the function nesting level for the in-kernel
4956build. The nesting level is really only useful during a single-thread
4957execution. Therefore, only enable this output for the AcpiExec utility.
4958Also, only emit the thread ID when executing under AcpiExec (Context
4959switches are still always detected and a message is emitted). ACPICA BZ
4960972.
4961
4962Example Code and Data Size: These are the sizes for the OS-independent
4963acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4964debug version of the code includes the debug output trace mechanism and
4965has a much larger code and data size.
4966
4967  Current Release:
4968    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4969    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4970  Previous Release:
4971    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4972    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4973
4974
49752) iASL Compiler/Disassembler and Tools:
4976
4977AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
4978correct portable POSIX header for terminal control functions.
4979
4980Disassembler: Fixed control method invocation issues related to the use
4981of the CondRefOf() operator. The problem is seen in the disassembly where
4982control method invocations may not be disassembled properly if the
4983control method name has been used previously as an argument to CondRefOf.
4984The solution is to not attempt to emit an external declaration for the
4985CondRefOf target (it is not necessary in the first place). This prevents
4986disassembler object type confusion. ACPICA BZ 988.
4987
4988Unix Makefiles: Added an option to disable compiler optimizations and the
4989_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
4990with optimizations (reportedly, gcc 4.4 for example). This change adds a
4991command line option for make (NOOPT) that disables all compiler
4992optimizations and the _FORTIFY_SOURCE compiler flag. The default
4993optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
49941034. Lv Zheng, Bob Moore.
4995
4996Tests/ASLTS: Added options to specify individual test cases and modes.
4997This allows testers running aslts.sh to optionally specify individual
4998test modes and test cases. Also added an option to disable the forced
4999generation of the ACPICA tools from source if desired. Lv Zheng.
5000
5001----------------------------------------
500227 September 2013. Summary of changes for version 20130927:
5003
5004This release is available at https://acpica.org/downloads
5005
5006
50071) ACPICA kernel-resident subsystem:
5008
5009Fixed a problem with store operations to reference objects. This change
5010fixes a problem where a Store operation to an ArgX object that contained
5011a
5012reference to a field object did not complete the automatic dereference
5013and
5014then write to the actual field object. Instead, the object type of the
5015field object was inadvertently changed to match the type of the source
5016operand. The new behavior will actually write to the field object (buffer
5017field or field unit), thus matching the correct ACPI-defined behavior.
5018
5019Implemented support to allow the host to redefine individual OSL
5020prototypes. This change enables the host to redefine OSL prototypes found
5021in the acpiosxf.h file. This allows the host to implement OSL interfaces
5022with a macro or inlined function. Further, it allows the host to add any
5023additional required modifiers such as __iomem, __init, __exit, etc., as
5024necessary on a per-interface basis. Enables maximum flexibility for the
5025OSL interfaces. Lv Zheng.
5026
5027Hardcoded the access width for the FADT-defined reset register. The ACPI
5028specification requires the reset register width to be 8 bits. ACPICA now
5029hardcodes the width to 8 and ignores the FADT width value. This provides
5030compatibility with other ACPI implementations that have allowed BIOS code
5031with bad register width values to go unnoticed. Matthew Garett, Bob
5032Moore,
5033Lv Zheng.
5034
5035Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
5036used
5037in the OSL header (acpiosxf). The change modifies the position of this
5038macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
5039build issues if the OSL defines the implementation of the interface to be
5040an inline stub function. Lv Zheng.
5041
5042Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
5043initialization interfaces. This change adds a new macro for the main init
5044and terminate external interfaces in order to support hosts that require
5045additional or different processing for these functions. Changed from
5046ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
5047Zheng, Bob Moore.
5048
5049Cleaned up the memory allocation macros for configurability. In the
5050common
5051case, the ACPI_ALLOCATE and related macros now resolve directly to their
5052respective AcpiOs* OSL interfaces. Two options:
50531) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
5054default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
50552) For AcpiExec (and for debugging), the macros can optionally be
5056resolved
5057to the local ACPICA interfaces that track each allocation (local tracking
5058is used to immediately detect memory leaks).
5059Lv Zheng.
5060
5061Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
5062to predefine this macro to either TRUE or FALSE during the system build.
5063
5064Replaced __FUNCTION_ with __func__ in the gcc-specific header.
5065
5066Example Code and Data Size: These are the sizes for the OS-independent
5067acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5068debug version of the code includes the debug output trace mechanism and
5069has a much larger code and data size.
5070
5071  Current Release:
5072    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
5073    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
5074  Previous Release:
5075    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
5076    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
5077
5078
50792) iASL Compiler/Disassembler and Tools:
5080
5081iASL: Implemented wildcard support for the -e option. This simplifies use
5082when there are many SSDTs that must be included to resolve external
5083method
5084declarations. ACPICA BZ 1041. Example:
5085    iasl -e ssdt*.dat -d dsdt.dat
5086
5087AcpiExec: Add history/line-editing for Unix/Linux systems. This change
5088adds a portable module that implements full history and limited line
5089editing for Unix and Linux systems. It does not use readline() due to
5090portability issues. Instead it uses the POSIX termio interface to put the
5091terminal in raw input mode so that the various special keys can be
5092trapped
5093(such as up/down-arrow for history support and left/right-arrow for line
5094editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
5095
5096AcpiXtract: Add support to handle (ignore) "empty" lines containing only
5097one or more spaces. This provides compatible with early or different
5098versions of the AcpiDump utility. ACPICA BZ 1044.
5099
5100AcpiDump: Do not ignore tables that contain only an ACPI table header.
5101Apparently, some BIOSs create SSDTs that contain an ACPI table header but
5102no other data. This change adds support to dump these tables. Any tables
5103shorter than the length of an ACPI table header remain in error (an error
5104message is emitted). Reported by Yi Li.
5105
5106Debugger: Echo actual command along with the "unknown command" message.
5107
5108----------------------------------------
510923 August 2013. Summary of changes for version 20130823:
5110
51111) ACPICA kernel-resident subsystem:
5112
5113Implemented support for host-installed System Control Interrupt (SCI)
5114handlers. Certain ACPI functionality requires the host to handle raw
5115SCIs. For example, the "SCI Doorbell" that is defined for memory power
5116state support requires the host device driver to handle SCIs to examine
5117if the doorbell has been activated. Multiple SCI handlers can be
5118installed to allow for future expansion. New external interfaces are
5119AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
5120details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
5121
5122Operation region support: Never locally free the handler "context"
5123pointer. This change removes some dangerous code that attempts to free
5124the handler context pointer in some (rare) circumstances. The owner of
5125the handler owns this pointer and the ACPICA code should never touch it.
5126Although not seen to be an issue in any kernel, it did show up as a
5127problem (fault) under AcpiExec. Also, set the internal storage field for
5128the context pointer to zero when the region is deactivated, simply for
5129sanity. David Box. ACPICA BZ 1039.
5130
5131AcpiRead: On error, do not modify the return value target location. If an
5132error happens in the middle of a split 32/32 64-bit I/O operation, do not
5133modify the target of the return value pointer. Makes the code consistent
5134with the rest of ACPICA. Bjorn Helgaas.
5135
5136Example Code and Data Size: These are the sizes for the OS-independent
5137acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5138debug version of the code includes the debug output trace mechanism and
5139has a much larger code and data size.
5140
5141  Current Release:
5142    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
5143    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
5144  Previous Release:
5145    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
5146    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
5147
5148
51492) iASL Compiler/Disassembler and Tools:
5150
5151AcpiDump: Implemented several new features and fixed some problems:
51521) Added support to dump the RSDP, RSDT, and XSDT tables.
51532) Added support for multiple table instances (SSDT, UEFI).
51543) Added option to dump "customized" (overridden) tables (-c).
51554) Fixed a problem where some table filenames were improperly
5156constructed.
51575) Improved some error messages, removed some unnecessary messages.
5158
5159iASL: Implemented additional support for disassembly of ACPI tables that
5160contain invocations of external control methods. The -fe<file> option
5161allows the import of a file that specifies the external methods along
5162with the required number of arguments for each -- allowing for the
5163correct disassembly of the table. This is a workaround for a limitation
5164of AML code where the disassembler often cannot determine the number of
5165arguments required for an external control method and generates incorrect
5166ASL code. See the iASL reference for details. ACPICA BZ 1030.
5167
5168Debugger: Implemented a new command (paths) that displays the full
5169pathnames (namepaths) and object types of all objects in the namespace.
5170This is an alternative to the namespace command.
5171
5172Debugger: Implemented a new command (sci) that invokes the SCI dispatch
5173mechanism and any installed handlers.
5174
5175iASL: Fixed a possible segfault for "too many parent prefixes" condition.
5176This can occur if there are too many parent prefixes in a namepath (for
5177example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
5178
5179Application OSLs: Set the return value for the PCI read functions. These
5180functions simply return AE_OK, but should set the return value to zero
5181also. This change implements this. ACPICA BZ 1038.
5182
5183Debugger: Prevent possible command line buffer overflow. Increase the
5184size of a couple of the debugger line buffers, and ensure that overflow
5185cannot happen. ACPICA BZ 1037.
5186
5187iASL: Changed to abort immediately on serious errors during the parsing
5188phase. Due to the nature of ASL, there is no point in attempting to
5189compile these types of errors, and they typically end up causing a
5190cascade of hundreds of errors which obscure the original problem.
5191
5192----------------------------------------
519325 July 2013. Summary of changes for version 20130725:
5194
51951) ACPICA kernel-resident subsystem:
5196
5197Fixed a problem with the DerefOf operator where references to FieldUnits
5198and BufferFields incorrectly returned the parent object, not the actual
5199value of the object. After this change, a dereference of a FieldUnit
5200reference results in a read operation on the field to get the value, and
5201likewise, the appropriate BufferField value is extracted from the target
5202buffer.
5203
5204Fixed a problem where the _WAK method could cause a fault under these
5205circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
5206method returned no value. The problem is rarely seen because most kernels
5207run ACPICA in slack mode.
5208
5209For the DerefOf operator, a fatal error now results if an attempt is made
5210to dereference a reference (created by the Index operator) to a NULL
5211package element. Provides compatibility with other ACPI implementations,
5212and this behavior will be added to a future version of the ACPI
5213specification.
5214
5215The ACPI Power Management Timer (defined in the FADT) is now optional.
5216This provides compatibility with other ACPI implementations and will
5217appear in the next version of the ACPI specification. If there is no PM
5218Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
5219zero in the FADT indicates no PM timer.
5220
5221Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
5222allows the host to globally enable/disable all vendor strings, all
5223feature strings, or both. Intended to be primarily used for debugging
5224purposes only. Lv Zheng.
5225
5226Expose the collected _OSI data to the host via a global variable. This
5227data tracks the highest level vendor ID that has been invoked by the BIOS
5228so that the host (and potentially ACPICA itself) can change behaviors
5229based upon the age of the BIOS.
5230
5231Example Code and Data Size: These are the sizes for the OS-independent
5232acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5233debug version of the code includes the debug output trace mechanism and
5234has a much larger code and data size.
5235
5236  Current Release:
5237    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
5238    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
5239  Previous Release:
5240    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
5241    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
5242
5243
52442) iASL Compiler/Disassembler and Tools:
5245
5246iASL: Created the following enhancements for the -so option (create
5247offset table):
52481)Add offsets for the last nameseg in each namepath for every supported
5249object type
52502)Add support for Processor, Device, Thermal Zone, and Scope objects
52513)Add the actual AML opcode for the parent object of every supported
5252object type
52534)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
5254
5255Disassembler: Emit all unresolved external symbols in a single block.
5256These are external references to control methods that could not be
5257resolved, and thus, the disassembler had to make a guess at the number of
5258arguments to parse.
5259
5260iASL: The argument to the -T option (create table template) is now
5261optional. If not specified, the default table is a DSDT, typically the
5262most common case.
5263
5264----------------------------------------
526526 June 2013. Summary of changes for version 20130626:
5266
52671) ACPICA kernel-resident subsystem:
5268
5269Fixed an issue with runtime repair of the _CST object. Null or invalid
5270elements were not always removed properly. Lv Zheng.
5271
5272Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
5273FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
5274the maximum number of GPEs is 1016. Use of multiple GPE block devices
5275makes the system-wide number of GPEs essentially unlimited.
5276
5277Example Code and Data Size: These are the sizes for the OS-independent
5278acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5279debug version of the code includes the debug output trace mechanism and
5280has a much larger code and data size.
5281
5282  Current Release:
5283    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
5284    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
5285  Previous Release:
5286    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
5287    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
5288
5289
52902) iASL Compiler/Disassembler and Tools:
5291
5292Portable AcpiDump: Implemented full support for the Linux and FreeBSD
5293hosts. Now supports Linux, FreeBSD, and Windows.
5294
5295Disassembler: Added some missing types for the HEST and EINJ tables: "Set
5296Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
5297
5298iASL/Preprocessor: Implemented full support for nested
5299#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
5300
5301Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
5302max. The original purpose of this constraint was to limit the amount of
5303debug output. However, the string function in question (UtPrintString) is
5304now used for the disassembler also, where 256 bytes is insufficient.
5305Reported by RehabMan@GitHub.
5306
5307iASL/DataTables: Fixed some problems and issues with compilation of DMAR
5308tables. ACPICA BZ 999. Lv Zheng.
5309
5310iASL: Fixed a couple of error exit issues that could result in a "Could
5311not delete <file>" message during ASL compilation.
5312
5313AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
5314the actual signatures for these tables are "FACP" and "APIC",
5315respectively.
5316
5317AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
5318tables are allowed to have multiple instances.
5319
5320----------------------------------------
532117 May 2013. Summary of changes for version 20130517:
5322
53231) ACPICA kernel-resident subsystem:
5324
5325Fixed a regression introduced in version 20130328 for _INI methods. This
5326change fixes a problem introduced in 20130328 where _INI methods are no
5327longer executed properly because of a memory block that was not
5328initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
5329<tomasz.nowicki@linaro.org>.
5330
5331Fixed a possible problem with the new extended sleep registers in the
5332ACPI
53335.0 FADT. Do not use these registers (even if populated) unless the HW-
5334reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
53351020. Lv Zheng.
5336
5337Implemented return value repair code for _CST predefined objects: Sort
5338the
5339list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
5340
5341Implemented a debug-only option to disable loading of SSDTs from the
5342RSDT/XSDT during ACPICA initialization. This can be useful for debugging
5343ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
5344acglobal.h - ACPICA BZ 1005. Lv Zheng.
5345
5346Fixed some issues in the ACPICA initialization and termination code:
5347Tomasz Nowicki <tomasz.nowicki@linaro.org>
53481) Clear events initialized flag upon event component termination. ACPICA
5349BZ 1013.
53502) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
53513) Delete global lock pending lock during termination. ACPICA BZ 1012.
53524) Clear debug buffer global on termination to prevent possible multiple
5353delete. ACPICA BZ 1010.
5354
5355Standardized all switch() blocks across the entire source base. After
5356many
5357years, different formatting for switch() had crept in. This change makes
5358the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
5359
5360Split some files to enhance ACPICA modularity and configurability:
53611) Split buffer dump routines into utilities/utbuffer.c
53622) Split internal error message routines into utilities/uterror.c
53633) Split table print utilities into tables/tbprint.c
53644) Split iASL command-line option processing into asloptions.c
5365
5366Makefile enhancements:
53671) Support for all new files above.
53682) Abort make on errors from any subcomponent. Chao Guan.
53693) Add build support for Apple Mac OS X. Liang Qi.
5370
5371Example Code and Data Size: These are the sizes for the OS-independent
5372acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5373debug version of the code includes the debug output trace mechanism and
5374has a much larger code and data size.
5375
5376  Current Release:
5377    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
5378    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
5379  Previous Release:
5380    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
5381    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
5382
5383
53842) iASL Compiler/Disassembler and Tools:
5385
5386New utility: Implemented an easily portable version of the acpidump
5387utility to extract ACPI tables from the system (or a file) in an ASCII
5388hex
5389dump format. The top-level code implements the various command line
5390options, file I/O, and table dump routines. To port to a new host, only
5391three functions need to be implemented to get tables -- since this
5392functionality is OS-dependent. See the tools/acpidump/apmain.c module and
5393the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
53941) The Windows version obtains the ACPI tables from the Registry.
53952) The Linux version is under development.
53963) Other hosts - If an OS-dependent module is submitted, it will be
5397distributed with ACPICA.
5398
5399iASL: Fixed a regression for -D preprocessor option (define symbol). A
5400restructuring/change to the initialization sequence caused this option to
5401no longer work properly.
5402
5403iASL: Implemented a mechanism to disable specific warnings and remarks.
5404Adds a new command line option, "-vw <messageid> as well as "#pragma
5405disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
5406
5407iASL: Fix for too-strict package object validation. The package object
5408validation for return values from the predefined names is a bit too
5409strict, it does not allow names references within the package (which will
5410be resolved at runtime.) These types of references cannot be validated at
5411compile time. This change ignores named references within package objects
5412for names that return or define static packages.
5413
5414Debugger: Fixed the 80-character command line limitation for the History
5415command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
5416
5417iASL: Added control method and package support for the -so option
5418(generates AML offset table for BIOS support.)
5419
5420iASL: issue a remark if a non-serialized method creates named objects. If
5421a thread blocks within the method for any reason, and another thread
5422enters the method, the method will fail because an attempt will be made
5423to
5424create the same (named) object twice. In this case, issue a remark that
5425the method should be marked serialized. NOTE: may become a warning later.
5426ACPICA BZ 909.
5427
5428----------------------------------------
542918 April 2013. Summary of changes for version 20130418:
5430
54311) ACPICA kernel-resident subsystem:
5432
5433Fixed a possible buffer overrun during some rare but specific field unit
5434read operations. This overrun can only happen if the DSDT version is 1 --
5435meaning that all AML integers are 32 bits -- and the field length is
5436between 33 and 55 bits long. During the read, an internal buffer object
5437is
5438created for the field unit because the field is larger than an integer
5439(32
5440bits). However, in this case, the buffer will be incorrectly written
5441beyond the end because the buffer length is less than the internal
5442minimum
5443of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
5444long, but a full 8 bytes will be written.
5445
5446Updated the Embedded Controller "orphan" _REG method support. This refers
5447to _REG methods under the EC device that have no corresponding operation
5448region. This is allowed by the ACPI specification. This update removes a
5449dependency on the existence an ECDT table. It will execute an orphan _REG
5450method as long as the operation region handler for the EC is installed at
5451the EC device node and not the namespace root. Rui Zhang (original
5452update), Bob Moore (update/integrate).
5453
5454Implemented run-time argument typechecking for all predefined ACPI names
5455(_STA, _BIF, etc.) This change performs object typechecking on all
5456incoming arguments for all predefined names executed via
5457AcpiEvaluateObject. This ensures that ACPI-related device drivers are
5458passing correct object types as well as the correct number of arguments
5459(therefore identifying any issues immediately). Also, the ASL/namespace
5460definition of the predefined name is checked against the ACPI
5461specification for the proper argument count. Adds one new file,
5462nsarguments.c
5463
5464Changed an exception code for the ASL UnLoad() operator. Changed the
5465exception code for the case where the input DdbHandle is invalid, from
5466AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
5467
5468Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
5469global makefile. The use of this flag causes compiler errors on earlier
5470versions of GCC, so it has been removed for compatibility.
5471
5472Miscellaneous cleanup:
54731) Removed some unused/obsolete macros
54742) Fixed a possible memory leak in the _OSI support
54753) Removed an unused variable in the predefined name support
54764) Windows OSL: remove obsolete reference to a memory list field
5477
5478Example Code and Data Size: These are the sizes for the OS-independent
5479acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5480debug version of the code includes the debug output trace mechanism and
5481has a much larger code and data size.
5482
5483  Current Release:
5484    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
5485    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
5486  Previous Release:
5487    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
5488    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
5489
5490
54912) iASL Compiler/Disassembler and Tools:
5492
5493AcpiExec: Added installation of a handler for the SystemCMOS address
5494space. This prevents control method abort if a method accesses this
5495space.
5496
5497AcpiExec: Added support for multiple EC devices, and now install EC
5498operation region handler(s) at the actual EC device instead of the
5499namespace root. This reflects the typical behavior of host operating
5500systems.
5501
5502AcpiExec: Updated to ensure that all operation region handlers are
5503installed before the _REG methods are executed. This prevents a _REG
5504method from aborting if it accesses an address space has no handler.
5505AcpiExec installs a handler for every possible address space.
5506
5507Debugger: Enhanced the "handlers" command to display non-root handlers.
5508This change enhances the handlers command to display handlers associated
5509with individual devices throughout the namespace, in addition to the
5510currently supported display of handlers associated with the root
5511namespace
5512node.
5513
5514ASL Test Suite: Several test suite errors have been identified and
5515resolved, reducing the total error count during execution. Chao Guan.
5516
5517----------------------------------------
551828 March 2013. Summary of changes for version 20130328:
5519
55201) ACPICA kernel-resident subsystem:
5521
5522Fixed several possible race conditions with the internal object reference
5523counting mechanism. Some of the external ACPICA interfaces update object
5524reference counts without holding the interpreter or namespace lock. This
5525change adds a spinlock to protect reference count updates on the internal
5526ACPICA objects. Reported by and with assistance from Andriy Gapon
5527(avg@FreeBSD.org).
5528
5529FADT support: Removed an extraneous warning for very large GPE register
5530sets. This change removes a size mismatch warning if the legacy length
5531field for a GPE register set is larger than the 64-bit GAS structure can
5532accommodate. GPE register sets can be larger than the 255-bit width
5533limitation of the GAS structure. Linn Crosetto (linn@hp.com).
5534
5535_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
5536return from this interface. Handles a possible timeout case if
5537ACPI_WAIT_FOREVER is modified by the host to be a value less than
5538"forever". Jung-uk Kim.
5539
5540Predefined name support: Add allowed/required argument type information
5541to
5542the master predefined info table. This change adds the infrastructure to
5543enable typechecking on incoming arguments for all predefined
5544methods/objects. It does not actually contain the code that will fully
5545utilize this information, this is still under development. Also condenses
5546some duplicate code for the predefined names into a new module,
5547utilities/utpredef.c
5548
5549Example Code and Data Size: These are the sizes for the OS-independent
5550acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5551debug version of the code includes the debug output trace mechanism and
5552has a much larger code and data size.
5553
5554  Previous Release:
5555    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
5556    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
5557  Current Release:
5558    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
5559    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
5560
5561
55622) iASL Compiler/Disassembler and Tools:
5563
5564iASL: Implemented a new option to simplify the development of ACPI-
5565related
5566BIOS code. Adds support for a new "offset table" output file. The -so
5567option will create a C table containing the AML table offsets of various
5568named objects in the namespace so that BIOS code can modify them easily
5569at
5570boot time. This can simplify BIOS runtime code by eliminating expensive
5571searches for "magic values", enhancing boot times and adding greater
5572reliability. With assistance from Lee Hamel.
5573
5574iASL: Allow additional predefined names to return zero-length packages.
5575Now, all predefined names that are defined by the ACPI specification to
5576return a "variable-length package of packages" are allowed to return a
5577zero length top-level package. This allows the BIOS to tell the host that
5578the requested feature is not supported, and supports existing BIOS/ASL
5579code and practices.
5580
5581iASL: Changed the "result not used" warning to an error. This is the case
5582where an ASL operator is effectively a NOOP because the result of the
5583operation is not stored anywhere. For example:
5584    Add (4, Local0)
5585There is no target (missing 3rd argument), nor is the function return
5586value used. This is potentially a very serious problem -- since the code
5587was probably intended to do something, but for whatever reason, the value
5588was not stored. Therefore, this issue has been upgraded from a warning to
5589an error.
5590
5591AcpiHelp: Added allowable/required argument types to the predefined names
5592info display. This feature utilizes the recent update to the predefined
5593names table (above).
5594
5595----------------------------------------
559614 February 2013. Summary of changes for version 20130214:
5597
55981) ACPICA Kernel-resident Subsystem:
5599
5600Fixed a possible regression on some hosts: Reinstated the safe return
5601macros (return_ACPI_STATUS, etc.) that ensure that the argument is
5602evaluated only once. Although these macros are not needed for the ACPICA
5603code itself, they are often used by ACPI-related host device drivers
5604where
5605the safe feature may be necessary.
5606
5607Fixed several issues related to the ACPI 5.0 reduced hardware support
5608(SOC): Now ensure that if the platform declares itself as hardware-
5609reduced
5610via the FADT, the following functions become NOOPs (and always return
5611AE_OK) because ACPI is always enabled by definition on these machines:
5612  AcpiEnable
5613  AcpiDisable
5614  AcpiHwGetMode
5615  AcpiHwSetMode
5616
5617Dynamic Object Repair: Implemented additional runtime repairs for
5618predefined name return values. Both of these repairs can simplify code in
5619the related device drivers that invoke these methods:
56201) For the _STR and _MLS names, automatically repair/convert an ASCII
5621string to a Unicode buffer.
56222) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
5623a
5624lone end tag descriptor in the following cases: A Return(0) was executed,
5625a null buffer was returned, or no object at all was returned (non-slack
5626mode only). Adds a new file, nsconvert.c
5627ACPICA BZ 998. Bob Moore, Lv Zheng.
5628
5629Resource Manager: Added additional code to prevent possible infinite
5630loops
5631while traversing corrupted or ill-formed resource template buffers. Check
5632for zero-length resource descriptors in all code that loops through
5633resource templates (the length field is used to index through the
5634template). This change also hardens the external AcpiWalkResources and
5635AcpiWalkResourceBuffer interfaces.
5636
5637Local Cache Manager: Enhanced the main data structure to eliminate an
5638unnecessary mechanism to access the next object in the list. Actually
5639provides a small performance enhancement for hosts that use the local
5640ACPICA cache manager. Jung-uk Kim.
5641
5642Example Code and Data Size: These are the sizes for the OS-independent
5643acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5644debug version of the code includes the debug output trace mechanism and
5645has a much larger code and data size.
5646
5647  Previous Release:
5648    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
5649    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
5650  Current Release:
5651    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
5652    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
5653
5654
56552) iASL Compiler/Disassembler and Tools:
5656
5657iASL/Disassembler: Fixed several issues with the definition of the ACPI
56585.0 RASF table (RAS Feature Table). This change incorporates late changes
5659that were made to the ACPI 5.0 specification.
5660
5661iASL/Disassembler: Added full support for the following new ACPI tables:
5662  1) The MTMR table (MID Timer Table)
5663  2) The VRTC table (Virtual Real Time Clock Table).
5664Includes header file, disassembler, table compiler, and template support
5665for both tables.
5666
5667iASL: Implemented compile-time validation of package objects returned by
5668predefined names. This new feature validates static package objects
5669returned by the various predefined names defined to return packages. Both
5670object types and package lengths are validated, for both parent packages
5671and sub-packages, if any. The code is similar in structure and behavior
5672to
5673the runtime repair mechanism within the AML interpreter and uses the
5674existing predefined name information table. Adds a new file, aslprepkg.c.
5675ACPICA BZ 938.
5676
5677iASL: Implemented auto-detection of binary ACPI tables for disassembly.
5678This feature detects a binary file with a valid ACPI table header and
5679invokes the disassembler automatically. Eliminates the need to
5680specifically invoke the disassembler with the -d option. ACPICA BZ 862.
5681
5682iASL/Disassembler: Added several warnings for the case where there are
5683unresolved control methods during the disassembly. This can potentially
5684cause errors when the output file is compiled, because the disassembler
5685assumes zero method arguments in these cases (it cannot determine the
5686actual number of arguments without resolution/definition of the method).
5687
5688Debugger: Added support to display all resources with a single command.
5689Invocation of the resources command with no arguments will now display
5690all
5691resources within the current namespace.
5692
5693AcpiHelp: Added descriptive text for each ACPICA exception code displayed
5694via the -e option.
5695
5696----------------------------------------
569717 January 2013. Summary of changes for version 20130117:
5698
56991) ACPICA Kernel-resident Subsystem:
5700
5701Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
5702return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
5703objects to return a package containing one integer, most BIOS code
5704returns
5705two integers and the previous code reflects that. However, we also need
5706to
5707support BIOS code that actually implements to the ACPI spec, and this
5708change reflects this.
5709
5710Fixed two issues with the ACPI_DEBUG_PRINT macros:
57111) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
5712C compilers that require this support.
57132) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
5714ACPI_DEBUG is already used by many of the various hosts.
5715
5716Updated all ACPICA copyrights and signons to 2013. Added the 2013
5717copyright to all module headers and signons, including the standard Linux
5718header. This affects virtually every file in the ACPICA core subsystem,
5719iASL compiler, all ACPICA utilities, and the test suites.
5720
5721Example Code and Data Size: These are the sizes for the OS-independent
5722acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5723debug version of the code includes the debug output trace mechanism and
5724has a much larger code and data size.
5725
5726  Previous Release:
5727    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
5728    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
5729  Current Release:
5730    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
5731    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
5732
5733
57342) iASL Compiler/Disassembler and Tools:
5735
5736Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
5737prevent a possible fault on some hosts. Some C libraries modify the arg
5738pointer parameter to vfprintf making it difficult to call it twice in the
5739AcpiOsVprintf function. Use a local buffer to workaround this issue. This
5740does not affect the Windows OSL since the Win C library does not modify
5741the arg pointer. Chao Guan, Bob Moore.
5742
5743iASL: Fixed a possible infinite loop when the maximum error count is
5744reached. If an output file other than the .AML file is specified (such as
5745a listing file), and the maximum number of errors is reached, do not
5746attempt to flush data to the output file(s) as the compiler is aborting.
5747This can cause an infinite loop as the max error count code essentially
5748keeps calling itself.
5749
5750iASL/Disassembler: Added an option (-in) to ignore NOOP
5751opcodes/operators.
5752Implemented for both the compiler and the disassembler. Often, the NOOP
5753opcode is used as padding for packages that are changed dynamically by
5754the
5755BIOS. When disassembled and recompiled, these NOOPs will cause syntax
5756errors. This option causes the disassembler to ignore all NOOP opcodes
5757(0xA3), and it also causes the compiler to ignore all ASL source code
5758NOOP
5759statements as well.
5760
5761Debugger: Enhanced the Sleep command to execute all sleep states. This
5762change allows Sleep to be invoked with no arguments and causes the
5763debugger to execute all of the sleep states, 0-5, automatically.
5764
5765----------------------------------------
576620 December 2012. Summary of changes for version 20121220:
5767
57681) ACPICA Kernel-resident Subsystem:
5769
5770Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
5771alternate entry point for AcpiWalkResources and improves the usability of
5772the resource manager by accepting as input a buffer containing the output
5773of either a _CRS, _PRS, or _AEI method. The key functionality is that the
5774input buffer is not deleted by this interface so that it can be used by
5775the host later. See the ACPICA reference for details.
5776
5777Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
5778(DSDT version < 2). The constant will be truncated and this warning
5779reflects that behavior.
5780
5781Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
5782ExtendedInterrupt, and GpioInt descriptors. This change adds support to
5783both get and set the new wake bit in these descriptors, separately from
5784the existing share bit. Reported by Aaron Lu.
5785
5786Interpreter: Fix Store() when an implicit conversion is not possible. For
5787example, in the cases such as a store of a string to an existing package
5788object, implement the store as a CopyObject(). This is a small departure
5789from the ACPI specification which states that the control method should
5790be
5791aborted in this case. However, the ASLTS suite depends on this behavior.
5792
5793Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
5794macros: check if debug output is currently enabled as soon as possible to
5795minimize performance impact if debug is in fact not enabled.
5796
5797Source code restructuring: Cleanup to improve modularity. The following
5798new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
5799psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
5800Associated makefiles and project files have been updated.
5801
5802Changed an exception code for LoadTable operator. For the case where one
5803of the input strings is too long, change the returned exception code from
5804AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
5805
5806Fixed a possible memory leak in dispatcher error path. On error, delete
5807the mutex object created during method mutex creation. Reported by
5808tim.gardner@canonical.com.
5809
5810Example Code and Data Size: These are the sizes for the OS-independent
5811acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5812debug version of the code includes the debug output trace mechanism and
5813has a much larger code and data size.
5814
5815  Previous Release:
5816    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
5817    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5818  Current Release:
5819    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
5820    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
5821
5822
58232) iASL Compiler/Disassembler and Tools:
5824
5825iASL: Disallow a method call as argument to the ObjectType ASL operator.
5826This change tracks an errata to the ACPI 5.0 document. The AML grammar
5827will not allow the interpreter to differentiate between a method and a
5828method invocation when these are used as an argument to the ObjectType
5829operator. The ACPI specification change is to disallow a method
5830invocation
5831(UserTerm) for the ObjectType operator.
5832
5833Finish support for the TPM2 and CSRT tables in the headers, table
5834compiler, and disassembler.
5835
5836Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
5837always expires immediately if the semaphore is not available. The
5838original
5839code was using a relative-time timeout, but sem_timedwait requires the
5840use
5841of an absolute time.
5842
5843iASL: Added a remark if the Timer() operator is used within a 32-bit
5844table. This operator returns a 64-bit time value that will be truncated
5845within a 32-bit table.
5846
5847iASL Source code restructuring: Cleanup to improve modularity. The
5848following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
5849aslmethod.c, and aslfileio.c. Associated makefiles and project files have
5850been updated.
5851
5852
5853----------------------------------------
585414 November 2012. Summary of changes for version 20121114:
5855
58561) ACPICA Kernel-resident Subsystem:
5857
5858Implemented a performance enhancement for ACPI/AML Package objects. This
5859change greatly increases the performance of Package objects within the
5860interpreter. It changes the processing of reference counts for packages
5861by
5862optimizing for the most common case where the package sub-objects are
5863either Integers, Strings, or Buffers. Increases the overall performance
5864of
5865the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
58662X.)
5867Chao Guan. ACPICA BZ 943.
5868
5869Implemented and deployed common macros to extract flag bits from resource
5870descriptors. Improves readability and maintainability of the code. Fixes
5871a
5872problem with the UART serial bus descriptor for the number of data bits
5873flags (was incorrectly 2 bits, should be 3).
5874
5875Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
5876of the macros and changed the SETx macros to the style of (destination,
5877source). Also added ACPI_CASTx companion macros. Lv Zheng.
5878
5879Example Code and Data Size: These are the sizes for the OS-independent
5880acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5881debug version of the code includes the debug output trace mechanism and
5882has a much larger code and data size.
5883
5884  Previous Release:
5885    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
5886    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5887  Current Release:
5888    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
5889    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5890
5891
58922) iASL Compiler/Disassembler and Tools:
5893
5894Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
5895adds the ShareAndWake and ExclusiveAndWake flags which were added to the
5896Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
5897
5898Disassembler: Fixed a problem with external declaration generation. Fixes
5899a problem where an incorrect pathname could be generated for an external
5900declaration if the original reference to the object includes leading
5901carats (^). ACPICA BZ 984.
5902
5903Debugger: Completed a major update for the Disassemble<method> command.
5904This command was out-of-date and did not properly disassemble control
5905methods that had any reasonable complexity. This fix brings the command
5906up
5907to the same level as the rest of the disassembler. Adds one new file,
5908dmdeferred.c, which is existing code that is now common with the main
5909disassembler and the debugger disassemble command. ACPICA MZ 978.
5910
5911iASL: Moved the parser entry prototype to avoid a duplicate declaration.
5912Newer versions of Bison emit this prototype, so moved the prototype out
5913of
5914the iASL header to where it is actually used in order to avoid a
5915duplicate
5916declaration.
5917
5918iASL/Tools: Standardized use of the stream I/O functions:
5919  1) Ensure check for I/O error after every fopen/fread/fwrite
5920  2) Ensure proper order of size/count arguments for fread/fwrite
5921  3) Use test of (Actual != Requested) after all fwrite, and most fread
5922  4) Standardize I/O error messages
5923Improves reliability and maintainability of the code. Bob Moore, Lv
5924Zheng.
5925ACPICA BZ 981.
5926
5927Disassembler: Prevent duplicate External() statements. During generation
5928of external statements, detect similar pathnames that are actually
5929duplicates such as these:
5930  External (\ABCD)
5931  External (ABCD)
5932Remove all leading '\' characters from pathnames during the external
5933statement generation so that duplicates will be detected and tossed.
5934ACPICA BZ 985.
5935
5936Tools: Replace low-level I/O with stream I/O functions. Replace
5937open/read/write/close with the stream I/O equivalents
5938fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
5939Moore.
5940
5941AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
5942name header so that AcpiXtract recognizes the output file/table.
5943
5944iASL: Remove obsolete -2 option flag. Originally intended to force the
5945compiler/disassembler into an ACPI 2.0 mode, this was never implemented
5946and the entire concept is now obsolete.
5947
5948----------------------------------------
594918 October 2012. Summary of changes for version 20121018:
5950
5951
59521) ACPICA Kernel-resident Subsystem:
5953
5954Updated support for the ACPI 5.0 MPST table. Fixes some problems
5955introduced by late changes to the table as it was added to the ACPI 5.0
5956specification. Includes header, disassembler, and data table compiler
5957support as well as a new version of the MPST template.
5958
5959AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
59605.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
5961methods: _HID, _CID, and _UID.
5962
5963Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
5964ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
5965name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
5966names for their various drivers. Affects the AcpiGetObjectInfo external
5967interface, and other internal interfaces as well.
5968
5969Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
5970This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
5971on machines that support non-aligned transfers. Optimizes for this case
5972rather than using a strncpy. With assistance from Zheng Lv.
5973
5974Resource Manager: Small fix for buffer size calculation. Fixed a one byte
5975error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
5976
5977Added a new debug print message for AML mutex objects that are force-
5978released. At control method termination, any currently acquired mutex
5979objects are force-released. Adds a new debug-only message for each one
5980that is released.
5981
5982Audited/updated all ACPICA return macros and the function debug depth
5983counter: 1) Ensure that all functions that use the various TRACE macros
5984also use the appropriate ACPICA return macros. 2) Ensure that all normal
5985return statements surround the return expression (value) with parens to
5986ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
5987Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
5988
5989Global source code changes/maintenance: All extra lines at the start and
5990end of each source file have been removed for consistency. Also, within
5991comments, all new sentences start with a single space instead of a double
5992space, again for consistency across the code base.
5993
5994Example Code and Data Size: These are the sizes for the OS-independent
5995acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5996debug version of the code includes the debug output trace mechanism and
5997has a much larger code and data size.
5998
5999  Previous Release:
6000    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
6001    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
6002  Current Release:
6003    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
6004    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
6005
6006
60072) iASL Compiler/Disassembler and Tools:
6008
6009AcpiExec: Improved the algorithm used for memory leak/corruption
6010detection. Added some intelligence to the code that maintains the global
6011list of allocated memory. The list is now ordered by allocated memory
6012address, significantly improving performance. When running AcpiExec on
6013the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
6014on the platform and/or the environment. Note, this performance
6015enhancement affects the AcpiExec utility only, not the kernel-resident
6016ACPICA code.
6017
6018Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
6019the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
6020incorrect table offset reported for invalid opcodes. Report the original
602132-bit value for bad ACPI_NAMEs (as well as the repaired name.)
6022
6023Disassembler: Enhanced the -vt option to emit the binary table data in
6024hex format to assist with debugging.
6025
6026Fixed a potential filename buffer overflow in osunixdir.c. Increased the
6027size of file structure. Colin Ian King.
6028
6029----------------------------------------
603013 September 2012. Summary of changes for version 20120913:
6031
6032
60331) ACPICA Kernel-resident Subsystem:
6034
6035ACPI 5.0: Added two new notify types for the Hardware Error Notification
6036Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
6037and
6038MCE(6).
6039
6040Table Manager: Merged/removed duplicate code in the root table resize
6041functions. One function is external, the other is internal. Lv Zheng,
6042ACPICA
6043BZ 846.
6044
6045Makefiles: Completely removed the obsolete "Linux" makefiles under
6046acpica/generate/linux. These makefiles are obsolete and have been
6047replaced
6048by
6049the generic unix makefiles under acpica/generate/unix.
6050
6051Makefiles: Ensure that binary files always copied properly. Minor rule
6052change
6053to ensure that the final binary output files are always copied up to the
6054appropriate binary directory (bin32 or bin64.)
6055
6056Example Code and Data Size: These are the sizes for the OS-independent
6057acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6058debug
6059version of the code includes the debug output trace mechanism and has a
6060much
6061larger code and data size.
6062
6063  Previous Release:
6064    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
6065    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
6066  Current Release:
6067    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
6068    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
6069
6070
60712) iASL Compiler/Disassembler and Tools:
6072
6073Disassembler: Fixed a possible fault during the disassembly of resource
6074descriptors when a second parse is required because of the invocation of
6075external control methods within the table. With assistance from
6076adq@lidskialf.net. ACPICA BZ 976.
6077
6078iASL: Fixed a namepath optimization problem. An error can occur if the
6079parse
6080node that contains the namepath to be optimized does not have a parent
6081node
6082that is a named object. This change fixes the problem.
6083
6084iASL: Fixed a regression where the AML file is not deleted on errors. The
6085AML
6086output file should be deleted if there are any errors during the
6087compiler.
6088The
6089only exception is if the -f (force output) option is used. ACPICA BZ 974.
6090
6091iASL: Added a feature to automatically increase internal line buffer
6092sizes.
6093Via realloc(), automatically increase the internal line buffer sizes as
6094necessary to support very long source code lines. The current version of
6095the
6096preprocessor requires a buffer long enough to contain full source code
6097lines.
6098This change increases the line buffer(s) if the input lines go beyond the
6099current buffer size. This eliminates errors that occurred when a source
6100code
6101line was longer than the buffer.
6102
6103iASL: Fixed a problem with constant folding in method declarations. The
6104SyncLevel term is a ByteConstExpr, and incorrect code would be generated
6105if a
6106Type3 opcode was used.
6107
6108Debugger: Improved command help support. For incorrect argument count,
6109display
6110full help for the command. For help command itself, allow an argument to
6111specify a command.
6112
6113Test Suites: Several bug fixes for the ASLTS suite reduces the number of
6114errors during execution of the suite. Guan Chao.
6115
6116----------------------------------------
611716 August 2012. Summary of changes for version 20120816:
6118
6119
61201) ACPICA Kernel-resident Subsystem:
6121
6122Removed all use of the deprecated _GTS and _BFS predefined methods. The
6123_GTS
6124(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
6125deprecated and will probably be removed from the ACPI specification.
6126Windows
6127does not invoke them, and reportedly never will. The final nail in the
6128coffin
6129is that the ACPI specification states that these methods must be run with
6130interrupts off, which is not going to happen in a kernel interpreter.
6131Note:
6132Linux has removed all use of the methods also. It was discovered that
6133invoking these functions caused failures on some machines, probably
6134because
6135they were never tested since Windows does not call them. Affects two
6136external
6137interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
6138ACPICA BZ 969.
6139
6140Implemented support for complex bit-packed buffers returned from the _PLD
6141(Physical Location of Device) predefined method. Adds a new external
6142interface, AcpiDecodePldBuffer that parses the buffer into a more usable
6143C
6144structure. Note: C Bitfields cannot be used for this type of predefined
6145structure since the memory layout of individual bitfields is not defined
6146by
6147the C language. In addition, there are endian concerns where a compiler
6148will
6149change the bitfield ordering based on the machine type. The new ACPICA
6150interface eliminates these issues, and should be called after _PLD is
6151executed. ACPICA BZ 954.
6152
6153Implemented a change to allow a scope change to root (via "Scope (\)")
6154during
6155execution of module-level ASL code (code that is executed at table load
6156time.) Lin Ming.
6157
6158Added the Windows8/Server2012 string for the _OSI method. This change
6159adds
6160a
6161new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
61622012.
6163
6164Added header support for the new ACPI tables DBG2 (Debug Port Table Type
61652)
6166and CSRT (Core System Resource Table).
6167
6168Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
6169names. This simplifies access to the buffers returned by these predefined
6170names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
6171
6172GPE support: Removed an extraneous parameter from the various low-level
6173internal GPE functions. Tang Feng.
6174
6175Removed the linux makefiles from the unix packages. The generate/linux
6176makefiles are obsolete and have been removed from the unix tarball
6177release
6178packages. The replacement makefiles are under generate/unix, and there is
6179a
6180top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
6181
6182Updates for Unix makefiles:
61831) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
61842) Update linker flags (move to end of command line) for AcpiExec
6185utility.
6186Guan Chao.
6187
6188Split ACPICA initialization functions to new file, utxfinit.c. Split from
6189utxface.c to improve modularity and reduce file size.
6190
6191Example Code and Data Size: These are the sizes for the OS-independent
6192acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6193debug version of the code includes the debug output trace mechanism and
6194has a
6195much larger code and data size.
6196
6197  Previous Release:
6198    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
6199    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
6200  Current Release:
6201    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
6202    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
6203
6204
62052) iASL Compiler/Disassembler and Tools:
6206
6207iASL: Fixed a problem with constant folding for fixed-length constant
6208expressions. The constant-folding code was not being invoked for constant
6209expressions that allow the use of type 3/4/5 opcodes to generate
6210constants
6211for expressions such as ByteConstExpr, WordConstExpr, etc. This could
6212result
6213in the generation of invalid AML bytecode. ACPICA BZ 970.
6214
6215iASL: Fixed a generation issue on newer versions of Bison. Newer versions
6216apparently automatically emit some of the necessary externals. This
6217change
6218handles these versions in order to eliminate generation warnings.
6219
6220Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
6221
6222Disassembler: Add support to decode _PLD buffers. The decoded buffer
6223appears
6224within comments in the output file.
6225
6226Debugger: Fixed a regression with the "Threads" command where
6227AE_BAD_PARAMETER was always returned.
6228
6229----------------------------------------
623011 July 2012. Summary of changes for version 20120711:
6231
62321) ACPICA Kernel-resident Subsystem:
6233
6234Fixed a possible fault in the return package object repair code. Fixes a
6235problem that can occur when a lone package object is wrapped with an
6236outer
6237package object in order to force conformance to the ACPI specification.
6238Can
6239affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
6240_DLM,
6241_CSD, _PSD, _TSD.
6242
6243Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
6244PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
6245ARB_DIS bit must be implemented in the host-dependent C3 processor power
6246state
6247support. Note, ARB_DIS is obsolete and only applies to older chipsets,
6248both
6249Intel and other vendors. (for Intel: ICH4-M and earlier)
6250
6251This change removes the code to disable/enable bus master arbitration
6252during
6253suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
6254causes
6255resume problems on some machines. The change has been in use for over
6256seven
6257years within Linux.
6258
6259Implemented two new external interfaces to support host-directed dynamic
6260ACPI
6261table load and unload. They are intended to simplify the host
6262implementation
6263of hot-plug support:
6264  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
6265  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
6266table.
6267See the ACPICA reference for additional details. Adds one new file,
6268components/tables/tbxfload.c
6269
6270Implemented and deployed two new interfaces for errors and warnings that
6271are
6272known to be caused by BIOS/firmware issues:
6273  AcpiBiosError: Prints "ACPI Firmware Error" message.
6274  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
6275Deployed these new interfaces in the ACPICA Table Manager code for ACPI
6276table
6277and FADT errors. Additional deployment to be completed as appropriate in
6278the
6279future. The associated conditional macros are ACPI_BIOS_ERROR and
6280ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
6281ACPICA
6282BZ
6283843.
6284
6285Implicit notify support: ensure that no memory allocation occurs within a
6286critical region. This fix moves a memory allocation outside of the time
6287that a
6288spinlock is held. Fixes issues on systems that do not allow this
6289behavior.
6290Jung-uk Kim.
6291
6292Split exception code utilities and tables into a new file,
6293utilities/utexcep.c
6294
6295Example Code and Data Size: These are the sizes for the OS-independent
6296acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6297debug
6298version of the code includes the debug output trace mechanism and has a
6299much
6300larger code and data size.
6301
6302  Previous Release:
6303    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
6304    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
6305  Current Release:
6306    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
6307    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
6308
6309
63102) iASL Compiler/Disassembler and Tools:
6311
6312iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
6313of
63140. Jung-uk Kim.
6315
6316Debugger: Enhanced the "tables" command to emit additional information
6317about
6318the current set of ACPI tables, including the owner ID and flags decode.
6319
6320Debugger: Reimplemented the "unload" command to use the new
6321AcpiUnloadParentTable external interface. This command was disable
6322previously
6323due to need for an unload interface.
6324
6325AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
6326option
6327will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
6328
6329----------------------------------------
633020 June 2012. Summary of changes for version 20120620:
6331
6332
63331) ACPICA Kernel-resident Subsystem:
6334
6335Implemented support to expand the "implicit notify" feature to allow
6336multiple
6337devices to be notified by a single GPE. This feature automatically
6338generates a
6339runtime device notification in the absence of a BIOS-provided GPE control
6340method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
6341notify is
6342provided by ACPICA for Windows compatibility, and is a workaround for
6343BIOS
6344AML
6345code errors. See the description of the AcpiSetupGpeForWake interface in
6346the
6347APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
6348
6349Changed some comments and internal function names to simplify and ensure
6350correctness of the Linux code translation. No functional changes.
6351
6352Example Code and Data Size: These are the sizes for the OS-independent
6353acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6354debug
6355version of the code includes the debug output trace mechanism and has a
6356much
6357larger code and data size.
6358
6359  Previous Release:
6360    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
6361    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
6362  Current Release:
6363    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
6364    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
6365
6366
63672) iASL Compiler/Disassembler and Tools:
6368
6369Disassembler: Added support to emit short, commented descriptions for the
6370ACPI
6371predefined names in order to improve the readability of the disassembled
6372output. ACPICA BZ 959. Changes include:
6373  1) Emit descriptions for all standard predefined names (_INI, _STA,
6374_PRW,
6375etc.)
6376  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
6377  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
6378etc.)
6379
6380AcpiSrc: Fixed several long-standing Linux code translation issues.
6381Argument
6382descriptions in function headers are now translated properly to lower
6383case
6384and
6385underscores. ACPICA BZ 961. Also fixes translation problems such as
6386these:
6387(old -> new)
6388  i_aSL -> iASL
6389  00-7_f -> 00-7F
6390  16_k -> 16K
6391  local_fADT -> local_FADT
6392  execute_oSI -> execute_OSI
6393
6394iASL: Fixed a problem where null bytes were inadvertently emitted into
6395some
6396listing files.
6397
6398iASL: Added the existing debug options to the standard help screen. There
6399are
6400no longer two different help screens. ACPICA BZ 957.
6401
6402AcpiHelp: Fixed some typos in the various predefined name descriptions.
6403Also
6404expand some of the descriptions where appropriate.
6405
6406iASL: Fixed the -ot option (display compile times/statistics). Was not
6407working
6408properly for standard output; only worked for the debug file case.
6409
6410----------------------------------------
641118 May 2012. Summary of changes for version 20120518:
6412
6413
64141) ACPICA Core Subsystem:
6415
6416Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
6417defined
6418to block until asynchronous events such as notifies and GPEs have
6419completed.
6420Within ACPICA, it is only called before a notify or GPE handler is
6421removed/uninstalled. It also may be useful for the host OS within related
6422drivers such as the Embedded Controller driver. See the ACPICA reference
6423for
6424additional information. ACPICA BZ 868.
6425
6426ACPI Tables: Added a new error message for a possible overflow failure
6427during
6428the conversion of FADT 32-bit legacy register addresses to internal
6429common
643064-
6431bit GAS structure representation. The GAS has a one-byte "bit length"
6432field,
6433thus limiting the register length to 255 bits. ACPICA BZ 953.
6434
6435Example Code and Data Size: These are the sizes for the OS-independent
6436acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6437debug
6438version of the code includes the debug output trace mechanism and has a
6439much
6440larger code and data size.
6441
6442  Previous Release:
6443    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6444    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
6445  Current Release:
6446    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
6447    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
6448
6449
64502) iASL Compiler/Disassembler and Tools:
6451
6452iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
6453macro.
6454This keyword was added late in the ACPI 5.0 release cycle and was not
6455implemented until now.
6456
6457Disassembler: Added support for Operation Region externals. Adds missing
6458support for operation regions that are defined in another table, and
6459referenced locally via a Field or BankField ASL operator. Now generates
6460the
6461correct External statement.
6462
6463Disassembler: Several additional fixes for the External() statement
6464generation
6465related to some ASL operators. Also, order the External() statements
6466alphabetically in the disassembler output. Fixes the External()
6467generation
6468for
6469the Create* field, Alias, and Scope operators:
6470 1) Create* buffer field operators - fix type mismatch warning on
6471disassembly
6472 2) Alias - implement missing External support
6473 3) Scope - fix to make sure all necessary externals are emitted.
6474
6475iASL: Improved pathname support. For include files, merge the prefix
6476pathname
6477with the file pathname and eliminate unnecessary components. Convert
6478backslashes in all pathnames to forward slashes, for readability. Include
6479file
6480pathname changes affect both #include and Include() type operators.
6481
6482iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
6483end
6484of a valid line by inserting a newline and then returning the EOF during
6485the
6486next call to GetNextLine. Prevents the line from being ignored due to EOF
6487condition.
6488
6489iASL: Implemented some changes to enhance the IDE support (-vi option.)
6490Error
6491and Warning messages are now correctly recognized for both the source
6492code
6493browser and the global error and warning counts.
6494
6495----------------------------------------
649620 April 2012. Summary of changes for version 20120420:
6497
6498
64991) ACPICA Core Subsystem:
6500
6501Implemented support for multiple notify handlers. This change adds
6502support
6503to
6504allow multiple system and device notify handlers on Device, Thermal Zone,
6505and
6506Processor objects. This can simplify the host OS notification
6507implementation.
6508Also re-worked and restructured the entire notify support code to
6509simplify
6510handler installation, handler removal, notify event queuing, and notify
6511dispatch to handler(s). Note: there can still only be two global notify
6512handlers - one for system notifies and one for device notifies. There are
6513no
6514changes to the existing handler install/remove interfaces. Lin Ming, Bob
6515Moore, Rafael Wysocki.
6516
6517Fixed a regression in the package repair code where the object reference
6518count was calculated incorrectly. Regression was introduced in the commit
6519"Support to add Package wrappers".
6520
6521Fixed a couple possible memory leaks in the AML parser, in the error
6522recovery
6523path. Jesper Juhl, Lin Ming.
6524
6525Example Code and Data Size: These are the sizes for the OS-independent
6526acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6527debug version of the code includes the debug output trace mechanism and
6528has a
6529much larger code and data size.
6530
6531  Previous Release:
6532    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6533    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6534  Current Release:
6535    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6536    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
6537
6538
65392) iASL Compiler/Disassembler and Tools:
6540
6541iASL: Fixed a problem with the resource descriptor support where the
6542length
6543of the StartDependentFn and StartDependentFnNoPrio descriptors were not
6544included in cumulative descriptor offset, resulting in incorrect values
6545for
6546resource tags within resource descriptors appearing after a
6547StartDependent*
6548descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
6549
6550iASL and Preprocessor: Implemented full support for the #line directive
6551to
6552correctly track original source file line numbers through the .i
6553preprocessor
6554output file - for error and warning messages.
6555
6556iASL: Expand the allowable byte constants for address space IDs.
6557Previously,
6558the allowable range was 0x80-0xFF (user-defined spaces), now the range is
65590x0A-0xFF to allow for custom and new IDs without changing the compiler.
6560
6561iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
6562
6563iASL: Add option to completely disable the preprocessor (-Pn).
6564
6565iASL: Now emit all error/warning messages to standard error (stderr) by
6566default (instead of the previous stdout).
6567
6568ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
6569Update
6570for resource descriptor offset fix above. Update/cleanup error output
6571routines. Enable and send iASL errors/warnings to an error logfile
6572(error.txt). Send all other iASL output to a logfile (compiler.txt).
6573Fixed
6574several extraneous "unrecognized operator" messages.
6575
6576----------------------------------------
657720 March 2012. Summary of changes for version 20120320:
6578
6579
65801) ACPICA Core Subsystem:
6581
6582Enhanced the sleep/wake interfaces to optionally execute the _GTS method
6583(Going To Sleep) and the _BFS method (Back From Sleep). Windows
6584apparently
6585does not execute these methods, and therefore these methods are often
6586untested. It has been seen on some systems where the execution of these
6587methods causes errors and also prevents the machine from entering S5. It
6588is
6589therefore suggested that host operating systems do not execute these
6590methods
6591by default. In the future, perhaps these methods can be optionally
6592executed
6593based on the age of the system and/or what is the newest version of
6594Windows
6595that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
6596and
6597AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
6598Ming.
6599
6600Fixed a problem where the length of the local/common FADT was set too
6601early.
6602The local FADT table length cannot be set to the common length until the
6603original length has been examined. There is code that checks the table
6604length
6605and sets various fields appropriately. This can affect older machines
6606with
6607early FADT versions. For example, this can cause inadvertent writes to
6608the
6609CST_CNT register. Julian Anastasov.
6610
6611Fixed a mapping issue related to a physical table override. Use the
6612deferred
6613mapping mechanism for tables loaded via the physical override OSL
6614interface.
6615This allows for early mapping before the virtual memory manager is
6616available.
6617Thomas Renninger, Bob Moore.
6618
6619Enhanced the automatic return-object repair code: Repair a common problem
6620with
6621predefined methods that are defined to return a variable-length Package
6622of
6623sub-objects. If there is only one sub-object, some BIOS ASL code
6624mistakenly
6625simply returns the single object instead of a Package with one sub-
6626object.
6627This new support will repair this error by wrapping a Package object
6628around
6629the original object, creating the correct and expected Package with one
6630sub-
6631object. Names that can be repaired in this manner include: _ALR, _CSD,
6632_HPX,
6633_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
6634939.
6635
6636Changed the exception code returned for invalid ACPI paths passed as
6637parameters to external interfaces such as AcpiEvaluateObject. Was
6638AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
6639
6640Example Code and Data Size: These are the sizes for the OS-independent
6641acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6642debug
6643version of the code includes the debug output trace mechanism and has a
6644much
6645larger code and data size.
6646
6647  Previous Release:
6648    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
6649    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6650  Current Release:
6651    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6652    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6653
6654
66552) iASL Compiler/Disassembler and Tools:
6656
6657iASL: Added the infrastructure and initial implementation of a integrated
6658C-
6659like preprocessor. This will simplify BIOS development process by
6660eliminating
6661the need for a separate preprocessing step during builds. On Windows, it
6662also
6663eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
6664features including full #define() macro support are still under
6665development.
6666These preprocessor directives are supported:
6667    #define
6668    #elif
6669    #else
6670    #endif
6671    #error
6672    #if
6673    #ifdef
6674    #ifndef
6675    #include
6676    #pragma message
6677    #undef
6678    #warning
6679In addition, these new command line options are supported:
6680    -D <symbol> Define symbol for preprocessor use
6681    -li         Create preprocessed output file (*.i)
6682    -P          Preprocess only and create preprocessor output file (*.i)
6683
6684Table Compiler: Fixed a problem where the equals operator within an
6685expression
6686did not work properly.
6687
6688Updated iASL to use the current versions of Bison/Flex. Updated the
6689Windows
6690project file to invoke these tools from the standard location. ACPICA BZ
6691904.
6692Versions supported:
6693    Flex for Windows:  V2.5.4
6694    Bison for Windows: V2.4.1
6695
6696----------------------------------------
669715 February 2012. Summary of changes for version 20120215:
6698
6699
67001) ACPICA Core Subsystem:
6701
6702There have been some major changes to the sleep/wake support code, as
6703described below (a - e).
6704
6705a) The AcpiLeaveSleepState has been split into two interfaces, similar to
6706AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
6707AcpiLeaveSleepStatePrep. This allows the host to perform actions between
6708the
6709time the _BFS method is called and the _WAK method is called. NOTE: all
6710hosts
6711must update their wake/resume code or else sleep/wake will not work
6712properly.
6713Rafael Wysocki.
6714
6715b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
6716_WAK
6717method. Some machines require that the GPEs are enabled before the _WAK
6718method
6719is executed. Thomas Renninger.
6720
6721c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
6722bit.
6723Some BIOS code assumes that WAK_STS will be cleared on resume and use it
6724to
6725determine whether the system is rebooting or resuming. Matthew Garrett.
6726
6727d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
6728Sleep) to
6729match the ACPI specification requirement. Rafael Wysocki.
6730
6731e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
6732registers within the V5 FADT. This support adds two new files:
6733hardware/hwesleep.c implements the support for the new registers. Moved
6734all
6735sleep/wake external interfaces to hardware/hwxfsleep.c.
6736
6737
6738Added a new OSL interface for ACPI table overrides,
6739AcpiOsPhysicalTableOverride. This interface allows the host to override a
6740table via a physical address, instead of the logical address required by
6741AcpiOsTableOverride. This simplifies the host implementation. Initial
6742implementation by Thomas Renninger. The ACPICA implementation creates a
6743single
6744shared function for table overrides that attempts both a logical and a
6745physical override.
6746
6747Expanded the OSL memory read/write interfaces to 64-bit data
6748(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
6749transfer support for GAS register structures passed to AcpiRead and
6750AcpiWrite.
6751
6752Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
6753custom
6754build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
6755model.
6756See the ACPICA reference for details. ACPICA BZ 942. This option removes
6757about
675810% of the code and 5% of the static data, and the following hardware
6759ACPI
6760features become unavailable:
6761    PM Event and Control registers
6762    SCI interrupt (and handler)
6763    Fixed Events
6764    General Purpose Events (GPEs)
6765    Global Lock
6766    ACPI PM timer
6767    FACS table (Waking vectors and Global Lock)
6768
6769Updated the unix tarball directory structure to match the ACPICA git
6770source
6771tree. This ensures that the generic unix makefiles work properly (in
6772generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
6773867.
6774
6775Updated the return value of the _REV predefined method to integer value 5
6776to
6777reflect ACPI 5.0 support.
6778
6779Moved the external ACPI PM timer interface prototypes to the public
6780acpixf.h
6781file where they belong.
6782
6783Example Code and Data Size: These are the sizes for the OS-independent
6784acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6785debug
6786version of the code includes the debug output trace mechanism and has a
6787much
6788larger code and data size.
6789
6790  Previous Release:
6791    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
6792    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
6793  Current Release:
6794    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
6795    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6796
6797
67982) iASL Compiler/Disassembler and Tools:
6799
6800Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
6801descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
6802incorrectly displayed.
6803
6804AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
6805specification.
6806
6807----------------------------------------
680811 January 2012. Summary of changes for version 20120111:
6809
6810
68111) ACPICA Core Subsystem:
6812
6813Implemented a new mechanism to allow host device drivers to check for
6814address
6815range conflicts with ACPI Operation Regions. Both SystemMemory and
6816SystemIO
6817address spaces are supported. A new external interface,
6818AcpiCheckAddressRange,
6819allows drivers to check an address range against the ACPI namespace. See
6820the
6821ACPICA reference for additional details. Adds one new file,
6822utilities/utaddress.c. Lin Ming, Bob Moore.
6823
6824Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
6825Control
6826and
6827Status registers, update the ACPI 5.0 flags, and update internal data
6828structures to handle an FADT larger than 256 bytes. The size of the ACPI
68295.0
6830FADT is 268 bytes.
6831
6832Updated all ACPICA copyrights and signons to 2012. Added the 2012
6833copyright to
6834all module headers and signons, including the standard Linux header. This
6835affects virtually every file in the ACPICA core subsystem, iASL compiler,
6836and
6837all ACPICA utilities.
6838
6839Example Code and Data Size: These are the sizes for the OS-independent
6840acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6841debug
6842version of the code includes the debug output trace mechanism and has a
6843much
6844larger code and data size.
6845
6846  Previous Release:
6847    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
6848    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
6849  Current Release:
6850    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
6851    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
6852
6853
68542) iASL Compiler/Disassembler and Tools:
6855
6856Disassembler: fixed a problem with the automatic resource tag generation
6857support. Fixes a problem where the resource tags are inadvertently not
6858constructed if the table being disassembled contains external references
6859to
6860control methods. Moved the actual construction of the tags to after the
6861final
6862namespace is constructed (after 2nd parse is invoked due to external
6863control
6864method references.) ACPICA BZ 941.
6865
6866Table Compiler: Make all "generic" operators caseless. These are the
6867operators
6868like UINT8, String, etc. Making these caseless improves ease-of-use.
6869ACPICA BZ
6870934.
6871
6872----------------------------------------
687323 November 2011. Summary of changes for version 20111123:
6874
68750) ACPI 5.0 Support:
6876
6877This release contains full support for the ACPI 5.0 specification, as
6878summarized below.
6879
6880Reduced Hardware Support:
6881-------------------------
6882
6883This support allows for ACPI systems without the usual ACPI hardware.
6884This
6885support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
6886will
6887not attempt to initialize or use any of the usual ACPI hardware. Note,
6888when
6889this flag is set, all of the following ACPI hardware is assumed to be not
6890present and is not initialized or accessed:
6891
6892    General Purpose Events (GPEs)
6893    Fixed Events (PM1a/PM1b and PM Control)
6894    Power Management Timer and Console Buttons (power/sleep)
6895    Real-time Clock Alarm
6896    Global Lock
6897    System Control Interrupt (SCI)
6898    The FACS is assumed to be non-existent
6899
6900ACPI Tables:
6901------------
6902
6903All new tables and updates to existing tables are fully supported in the
6904ACPICA headers (for use by device drivers), the disassembler, and the
6905iASL
6906Data Table Compiler. ACPI 5.0 defines these new tables:
6907
6908    BGRT        /* Boot Graphics Resource Table */
6909    DRTM        /* Dynamic Root of Trust for Measurement table */
6910    FPDT        /* Firmware Performance Data Table */
6911    GTDT        /* Generic Timer Description Table */
6912    MPST        /* Memory Power State Table */
6913    PCCT        /* Platform Communications Channel Table */
6914    PMTT        /* Platform Memory Topology Table */
6915    RASF        /* RAS Feature table */
6916
6917Operation Regions/SpaceIDs:
6918---------------------------
6919
6920All new operation regions are fully supported by the iASL compiler, the
6921disassembler, and the ACPICA runtime code (for dispatch to region
6922handlers.)
6923The new operation region Space IDs are:
6924
6925    GeneralPurposeIo
6926    GenericSerialBus
6927
6928Resource Descriptors:
6929---------------------
6930
6931All new ASL resource descriptors are fully supported by the iASL
6932compiler,
6933the
6934ASL/AML disassembler, and the ACPICA runtime Resource Manager code
6935(including
6936all new predefined resource tags). New descriptors are:
6937
6938    FixedDma
6939    GpioIo
6940    GpioInt
6941    I2cSerialBus
6942    SpiSerialBus
6943    UartSerialBus
6944
6945ASL/AML Operators, New and Modified:
6946------------------------------------
6947
6948One new operator is added, the Connection operator, which is used to
6949associate
6950a GeneralPurposeIo or GenericSerialBus resource descriptor with
6951individual
6952field objects within an operation region. Several new protocols are
6953associated
6954with the AccessAs operator. All are fully supported by the iASL compiler,
6955disassembler, and runtime ACPICA AML interpreter:
6956
6957    Connection                      // Declare Field Connection
6958attributes
6959    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
6960    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
6961Protocol
6962    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
6963    RawDataBuffer                       // Data type for Vendor Data
6964fields
6965
6966Predefined ASL/AML Objects:
6967---------------------------
6968
6969All new predefined objects/control-methods are supported by the iASL
6970compiler
6971and the ACPICA runtime validation/repair (arguments and return values.)
6972New
6973predefined names include the following:
6974
6975Standard Predefined Names (Objects or Control Methods):
6976    _AEI, _CLS, _CPC, _CWS, _DEP,
6977    _DLM, _EVT, _GCP, _CRT, _GWS,
6978    _HRV, _PRE, _PSE, _SRT, _SUB.
6979
6980Resource Tags (Names used to access individual fields within resource
6981descriptors):
6982    _DBT, _DPL, _DRS, _END, _FLC,
6983    _IOR, _LIN, _MOD, _PAR, _PHA,
6984    _PIN, _PPI, _POL, _RXL, _SLV,
6985    _SPE, _STB, _TXL, _VEN.
6986
6987ACPICA External Interfaces:
6988---------------------------
6989
6990Several new interfaces have been defined for use by ACPI-related device
6991drivers and other host OS services:
6992
6993AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
6994to
6995acquire and release AML mutexes that are defined in the DSDT/SSDT tables
6996provided by the BIOS. They are intended to be used in conjunction with
6997the
6998ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
6999mutual exclusion with the AML code/interpreter.
7000
7001AcpiGetEventResources: Returns the (formatted) resource descriptors as
7002defined
7003by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
7004provides
7005resource descriptors associated with hardware-reduced platform events,
7006similar
7007to the AcpiGetCurrentResources interface.
7008
7009Operation Region Handlers: For General Purpose IO and Generic Serial Bus
7010operation regions, information about the Connection() object and any
7011optional
7012length information is passed to the region handler within the Context
7013parameter.
7014
7015AcpiBufferToResource: This interface converts a raw AML buffer containing
7016a
7017resource template or resource descriptor to the ACPI_RESOURCE internal
7018format
7019suitable for use by device drivers. Can be used by an operation region
7020handler
7021to convert the Connection() buffer object into a ACPI_RESOURCE.
7022
7023Miscellaneous/Tools/TestSuites:
7024-------------------------------
7025
7026Support for extended _HID names (Four alpha characters instead of three).
7027Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
7028Support for ACPI 5.0 features in the ASLTS test suite.
7029Fully updated documentation (ACPICA and iASL reference documents.)
7030
7031ACPI Table Definition Language:
7032-------------------------------
7033
7034Support for this language was implemented and released as a subsystem of
7035the
7036iASL compiler in 2010. (See the iASL compiler User Guide.)
7037
7038
7039Non-ACPI 5.0 changes for this release:
7040--------------------------------------
7041
70421) ACPICA Core Subsystem:
7043
7044Fix a problem with operation region declarations where a failure can
7045occur
7046if
7047the region name and an argument that evaluates to an object (such as the
7048region address) are in different namespace scopes. Lin Ming, ACPICA BZ
7049937.
7050
7051Do not abort an ACPI table load if an invalid space ID is found within.
7052This
7053will be caught later if the offending method is executed. ACPICA BZ 925.
7054
7055Fixed an issue with the FFixedHW space ID where the ID was not always
7056recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
7057
7058Fixed a problem with the 32-bit generation of the unix-specific OSL
7059(osunixxf.c). Lin Ming, ACPICA BZ 936.
7060
7061Several changes made to enable generation with the GCC 4.6 compiler.
7062ACPICA BZ
7063935.
7064
7065New error messages: Unsupported I/O requests (not 8/16/32 bit), and
7066Index/Bank
7067field registers out-of-range.
7068
70692) iASL Compiler/Disassembler and Tools:
7070
7071iASL: Implemented the __PATH__ operator, which returns the full pathname
7072of
7073the current source file.
7074
7075AcpiHelp: Automatically display expanded keyword information for all ASL
7076operators.
7077
7078Debugger: Add "Template" command to disassemble/dump resource template
7079buffers.
7080
7081Added a new master script to generate and execute the ASLTS test suite.
7082Automatically handles 32- and 64-bit generation. See tests/aslts.sh
7083
7084iASL: Fix problem with listing generation during processing of the
7085Switch()
7086operator where AML listing was disabled until the entire Switch block was
7087completed.
7088
7089iASL: Improve support for semicolon statement terminators. Fix "invalid
7090character" message for some cases when the semicolon is used. Semicolons
7091are
7092now allowed after every <Term> grammar element. ACPICA BZ 927.
7093
7094iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
7095923.
7096
7097Disassembler: Fix problem with disassembly of the DataTableRegion
7098operator
7099where an inadvertent "Unhandled deferred opcode" message could be
7100generated.
7101
71023) Example Code and Data Size
7103
7104These are the sizes for the OS-independent acpica.lib produced by the
7105Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
7106includes the debug output trace mechanism and has a much larger code and
7107data
7108size.
7109
7110  Previous Release:
7111    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7112    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7113  Current Release:
7114    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
7115    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
7116
7117----------------------------------------
711822 September 2011. Summary of changes for version 20110922:
7119
71200) ACPI 5.0 News:
7121
7122Support for ACPI 5.0 in ACPICA has been underway for several months and
7123will
7124be released at the same time that ACPI 5.0 is officially released.
7125
7126The ACPI 5.0 specification is on track for release in the next few
7127months.
7128
71291) ACPICA Core Subsystem:
7130
7131Fixed a problem where the maximum sleep time for the Sleep() operator was
7132intended to be limited to two seconds, but was inadvertently limited to
713320
7134seconds instead.
7135
7136Linux and Unix makefiles: Added header file dependencies to ensure
7137correct
7138generation of ACPICA core code and utilities. Also simplified the
7139makefiles
7140considerably through the use of the vpath variable to specify search
7141paths.
7142ACPICA BZ 924.
7143
71442) iASL Compiler/Disassembler and Tools:
7145
7146iASL: Implemented support to check the access length for all fields
7147created to
7148access named Resource Descriptor fields. For example, if a resource field
7149is
7150defined to be two bits, a warning is issued if a CreateXxxxField() is
7151used
7152with an incorrect bit length. This is implemented for all current
7153resource
7154descriptor names. ACPICA BZ 930.
7155
7156Disassembler: Fixed a byte ordering problem with the output of 24-bit and
715756-
7158bit integers.
7159
7160iASL: Fixed a couple of issues associated with variable-length package
7161objects. 1) properly handle constants like One, Ones, Zero -- do not make
7162a
7163VAR_PACKAGE when these are used as a package length. 2) Allow the
7164VAR_PACKAGE
7165opcode (in addition to PACKAGE) when validating object types for
7166predefined
7167names.
7168
7169iASL: Emit statistics for all output files (instead of just the ASL input
7170and
7171AML output). Includes listings, hex files, etc.
7172
7173iASL: Added -G option to the table compiler to allow the compilation of
7174custom
7175ACPI tables. The only part of a table that is required is the standard
717636-
7177byte
7178ACPI header.
7179
7180AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
7181headers),
7182which also adds correct 64-bit support. Also, now all output filenames
7183are
7184completely lower case.
7185
7186AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
7187loading table files. A warning is issued for any such tables. The only
7188exception is an FADT. This also fixes a possible fault when attempting to
7189load
7190non-AML tables. ACPICA BZ 932.
7191
7192AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
7193a
7194missing table terminator could cause a fault when using the -p option.
7195
7196AcpiSrc: Fixed a possible divide-by-zero fault when generating file
7197statistics.
7198
71993) Example Code and Data Size
7200
7201These are the sizes for the OS-independent acpica.lib produced by the
7202Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
7203includes the debug output trace mechanism and has a much larger code and
7204data
7205size.
7206
7207  Previous Release (VC 9.0):
7208    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7209    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7210  Current Release (VC 9.0):
7211    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7212    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7213
7214
7215----------------------------------------
721623 June 2011. Summary of changes for version 20110623:
7217
72181) ACPI CA Core Subsystem:
7219
7220Updated the predefined name repair mechanism to not attempt repair of a
7221_TSS
7222return object if a _PSS object is present. We can only sort the _TSS
7223return
7224package if there is no _PSS within the same scope. This is because if
7225_PSS
7226is
7227present, the ACPI specification dictates that the _TSS Power Dissipation
7228field
7229is to be ignored, and therefore some BIOSs leave garbage values in the
7230_TSS
7231Power field(s). In this case, it is best to just return the _TSS package
7232as-
7233is. Reported by, and fixed with assistance from Fenghua Yu.
7234
7235Added an option to globally disable the control method return value
7236validation
7237and repair. This runtime option can be used to disable return value
7238repair
7239if
7240this is causing a problem on a particular machine. Also added an option
7241to
7242AcpiExec (-dr) to set this disable flag.
7243
7244All makefiles and project files: Major changes to improve generation of
7245ACPICA
7246tools. ACPICA BZ 912:
7247    Reduce default optimization levels to improve compatibility
7248    For Linux, add strict-aliasing=0 for gcc 4
7249    Cleanup and simplify use of command line defines
7250    Cleanup multithread library support
7251    Improve usage messages
7252
7253Linux-specific header: update handling of THREAD_ID and pthread. For the
725432-
7255bit case, improve casting to eliminate possible warnings, especially with
7256the
7257acpica tools.
7258
7259Example Code and Data Size: These are the sizes for the OS-independent
7260acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7261debug
7262version of the code includes the debug output trace mechanism and has a
7263much
7264larger code and data size.
7265
7266  Previous Release (VC 9.0):
7267    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
7268    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7269  Current Release (VC 9.0):
7270    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7271    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7272
72732) iASL Compiler/Disassembler and Tools:
7274
7275With this release, a new utility named "acpihelp" has been added to the
7276ACPICA
7277package. This utility summarizes the ACPI specification chapters for the
7278ASL
7279and AML languages. It generates under Linux/Unix as well as Windows, and
7280provides the following functionality:
7281    Find/display ASL operator(s) -- with description and syntax.
7282    Find/display ASL keyword(s) -- with exact spelling and descriptions.
7283    Find/display ACPI predefined name(s) -- with description, number
7284        of arguments, and the return value data type.
7285    Find/display AML opcode name(s) -- with opcode, arguments, and
7286grammar.
7287    Decode/display AML opcode -- with opcode name, arguments, and
7288grammar.
7289
7290Service Layers: Make multi-thread support configurable. Conditionally
7291compile
7292the multi-thread support so that threading libraries will not be linked
7293if
7294not
7295necessary. The only tool that requires multi-thread support is AcpiExec.
7296
7297iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
7298of
7299Bison appear to want the interface to yyerror to be a const char * (or at
7300least this is a problem when generating iASL on some systems.) ACPICA BZ
7301923
7302Pierre Lejeune.
7303
7304Tools: Fix for systems where O_BINARY is not defined. Only used for
7305Windows
7306versions of the tools.
7307
7308----------------------------------------
730927 May 2011. Summary of changes for version 20110527:
7310
73111) ACPI CA Core Subsystem:
7312
7313ASL Load() operator: Reinstate most restrictions on the incoming ACPI
7314table
7315signature. Now, only allow SSDT, OEMx, and a null signature. History:
7316    1) Originally, we checked the table signature for "SSDT" or "PSDT".
7317       (PSDT is now obsolete.)
7318    2) We added support for OEMx tables, signature "OEM" plus a fourth
7319       "don't care" character.
7320    3) Valid tables were encountered with a null signature, so we just
7321       gave up on validating the signature, (05/2008).
7322    4) We encountered non-AML tables such as the MADT, which caused
7323       interpreter errors and kernel faults. So now, we once again allow
7324       only SSDT, OEMx, and now, also a null signature. (05/2011).
7325
7326Added the missing _TDL predefined name to the global name list in order
7327to
7328enable validation. Affects both the core ACPICA code and the iASL
7329compiler.
7330
7331Example Code and Data Size: These are the sizes for the OS-independent
7332acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7333debug
7334version of the code includes the debug output trace mechanism and has a
7335much
7336larger code and data size.
7337
7338  Previous Release (VC 9.0):
7339    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
7340    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
7341  Current Release (VC 9.0):
7342    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
7343    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7344
73452) iASL Compiler/Disassembler and Tools:
7346
7347Debugger/AcpiExec: Implemented support for "complex" method arguments on
7348the
7349debugger command line. This adds support beyond simple integers --
7350including
7351Strings, Buffers, and Packages. Includes support for nested packages.
7352Increased the default command line buffer size to accommodate these
7353arguments.
7354See the ACPICA reference for details and syntax. ACPICA BZ 917.
7355
7356Debugger/AcpiExec: Implemented support for "default" method arguments for
7357the
7358Execute/Debug command. Now, the debugger will always invoke a control
7359method
7360with the required number of arguments -- even if the command line
7361specifies
7362none or insufficient arguments. It uses default integer values for any
7363missing
7364arguments. Also fixes a bug where only six method arguments maximum were
7365supported instead of the required seven.
7366
7367Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
7368and
7369also return status in order to prevent buffer overruns. See the ACPICA
7370reference for details and syntax. ACPICA BZ 921
7371
7372iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
7373makefiles to simplify support for the two different but similar parser
7374generators, bison and yacc.
7375
7376Updated the generic unix makefile for gcc 4. The default gcc version is
7377now
7378expected to be 4 or greater, since options specific to gcc 4 are used.
7379
7380----------------------------------------
738113 April 2011. Summary of changes for version 20110413:
7382
73831) ACPI CA Core Subsystem:
7384
7385Implemented support to execute a so-called "orphan" _REG method under the
7386EC
7387device. This change will force the execution of a _REG method underneath
7388the
7389EC
7390device even if there is no corresponding operation region of type
7391EmbeddedControl. Fixes a problem seen on some machines and apparently is
7392compatible with Windows behavior. ACPICA BZ 875.
7393
7394Added more predefined methods that are eligible for automatic NULL
7395package
7396element removal. This change adds another group of predefined names to
7397the
7398list
7399of names that can be repaired by having NULL package elements dynamically
7400removed. This group are those methods that return a single variable-
7401length
7402package containing simple data types such as integers, buffers, strings.
7403This
7404includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
7405_PSL,
7406_Sx,
7407and _TZD. ACPICA BZ 914.
7408
7409Split and segregated all internal global lock functions to a new file,
7410evglock.c.
7411
7412Updated internal address SpaceID for DataTable regions. Moved this
7413internal
7414space
7415id in preparation for ACPI 5.0 changes that will include some new space
7416IDs.
7417This
7418change should not affect user/host code.
7419
7420Example Code and Data Size: These are the sizes for the OS-independent
7421acpica.lib
7422produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
7423version of
7424the code includes the debug output trace mechanism and has a much larger
7425code
7426and
7427data size.
7428
7429  Previous Release (VC 9.0):
7430    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
7431    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
7432  Current Release (VC 9.0):
7433    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
7434    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
7435
74362) iASL Compiler/Disassembler and Tools:
7437
7438iASL/DTC: Major update for new grammar features. Allow generic data types
7439in
7440custom ACPI tables. Field names are now optional. Any line can be split
7441to
7442multiple lines using the continuation char (\). Large buffers now use
7443line-
7444continuation character(s) and no colon on the continuation lines. See the
7445grammar
7446update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
7447Moore.
7448
7449iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
7450statements.
7451Since the parser stuffs a "zero" as the return value for these statements
7452(due
7453to
7454the underlying AML grammar), they were seen as "return with value" by the
7455iASL
7456semantic checking. They are now seen correctly as "null" return
7457statements.
7458
7459iASL: Check if a_REG declaration has a corresponding Operation Region.
7460Adds a
7461check for each _REG to ensure that there is in fact a corresponding
7462operation
7463region declaration in the same scope. If not, the _REG method is not very
7464useful
7465since it probably won't be executed. ACPICA BZ 915.
7466
7467iASL/DTC: Finish support for expression evaluation. Added a new
7468expression
7469parser
7470that implements c-style operator precedence and parenthesization. ACPICA
7471bugzilla
7472908.
7473
7474Disassembler/DTC: Remove support for () and <> style comments in data
7475tables.
7476Now
7477that DTC has full expression support, we don't want to have comment
7478strings
7479that
7480start with a parentheses or a less-than symbol. Now, only the standard /*
7481and
7482//
7483comments are supported, as well as the bracket [] comments.
7484
7485AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
7486"unusual"
7487headers in the acpidump file. Update the header validation to support
7488these
7489tables. Problem introduced in previous AcpiXtract version in the change
7490to
7491support "wrong checksum" error messages emitted by acpidump utility.
7492
7493iASL: Add a * option to generate all template files (as a synonym for
7494ALL)
7495as
7496in
7497"iasl -T *" or "iasl -T ALL".
7498
7499iASL/DTC: Do not abort compiler on fatal errors. We do not want to
7500completely
7501abort the compiler on "fatal" errors, simply should abort the current
7502compile.
7503This allows multiple compiles with a single (possibly wildcard) compiler
7504invocation.
7505
7506----------------------------------------
750716 March 2011. Summary of changes for version 20110316:
7508
75091) ACPI CA Core Subsystem:
7510
7511Fixed a problem caused by a _PRW method appearing at the namespace root
7512scope
7513during the setup of wake GPEs. A fault could occur if a _PRW directly
7514under
7515the
7516root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
7517
7518Implemented support for "spurious" Global Lock interrupts. On some
7519systems, a
7520global lock interrupt can occur without the pending flag being set. Upon
7521a
7522GL
7523interrupt, we now ensure that a thread is actually waiting for the lock
7524before
7525signaling GL availability. Rafael Wysocki, Bob Moore.
7526
7527Example Code and Data Size: These are the sizes for the OS-independent
7528acpica.lib
7529produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
7530version of
7531the code includes the debug output trace mechanism and has a much larger
7532code
7533and
7534data size.
7535
7536  Previous Release (VC 9.0):
7537    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7538    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7539  Current Release (VC 9.0):
7540    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
7541    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
7542
75432) iASL Compiler/Disassembler and Tools:
7544
7545Implemented full support for the "SLIC" ACPI table. Includes support in
7546the
7547header files, disassembler, table compiler, and template generator. Bob
7548Moore,
7549Lin Ming.
7550
7551AcpiXtract: Correctly handle embedded comments and messages from
7552AcpiDump.
7553Apparently some or all versions of acpidump will occasionally emit a
7554comment
7555like
7556"Wrong checksum", etc., into the dump file. This was causing problems for
7557AcpiXtract. ACPICA BZ 905.
7558
7559iASL: Fix the Linux makefile by removing an inadvertent double file
7560inclusion.
7561ACPICA BZ 913.
7562
7563AcpiExec: Update installation of operation region handlers. Install one
7564handler
7565for a user-defined address space. This is used by the ASL test suite
7566(ASLTS).
7567
7568----------------------------------------
756911 February 2011. Summary of changes for version 20110211:
7570
75711) ACPI CA Core Subsystem:
7572
7573Added a mechanism to defer _REG methods for some early-installed
7574handlers.
7575Most user handlers should be installed before call to
7576AcpiEnableSubsystem.
7577However, Event handlers and region handlers should be installed after
7578AcpiInitializeObjects. Override handlers for the "default" regions should
7579be
7580installed early, however. This change executes all _REG methods for the
7581default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
7582chicken/egg issues between them. ACPICA BZ 848.
7583
7584Implemented an optimization for GPE detection. This optimization will
7585simply
7586ignore GPE registers that contain no enabled GPEs -- there is no need to
7587read the register since this information is available internally. This
7588becomes more important on machines with a large GPE space. ACPICA
7589bugzilla
7590884. Lin Ming. Suggestion from Joe Liu.
7591
7592Removed all use of the highly unreliable FADT revision field. The
7593revision
7594number in the FADT has been found to be completely unreliable and cannot
7595be
7596trusted. Only the actual table length can be used to infer the version.
7597This
7598change updates the ACPICA core and the disassembler so that both no
7599longer
7600even look at the FADT version and instead depend solely upon the FADT
7601length.
7602
7603Fix an unresolved name issue for the no-debug and no-error-message source
7604generation cases. The _AcpiModuleName was left undefined in these cases,
7605but
7606it is actually needed as a parameter to some interfaces. Define
7607_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
7608
7609Split several large files (makefiles and project files updated)
7610  utglobal.c   -> utdecode.c
7611  dbcomds.c    -> dbmethod.c dbnames.c
7612  dsopcode.c   -> dsargs.c dscontrol.c
7613  dsload.c     -> dsload2.c
7614  aslanalyze.c -> aslbtypes.c aslwalks.c
7615
7616Example Code and Data Size: These are the sizes for the OS-independent
7617acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7618debug version of the code includes the debug output trace mechanism and
7619has
7620a much larger code and data size.
7621
7622  Previous Release (VC 9.0):
7623    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7624    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7625  Current Release (VC 9.0):
7626    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7627    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7628
76292) iASL Compiler/Disassembler and Tools:
7630
7631iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
7632These are useful C-style macros with the standard definitions. ACPICA
7633bugzilla 898.
7634
7635iASL/DTC: Added support for integer expressions and labels. Support for
7636full
7637expressions for all integer fields in all ACPI tables. Support for labels
7638in
7639"generic" portions of tables such as UEFI. See the iASL reference manual.
7640
7641Debugger: Added a command to display the status of global handlers. The
7642"handlers" command will display op region, fixed event, and miscellaneous
7643global handlers. installation status -- and for op regions, whether
7644default
7645or user-installed handler will be used.
7646
7647iASL: Warn if reserved method incorrectly returns a value. Many
7648predefined
7649names are defined such that they do not return a value. If implemented as
7650a
7651method, issue a warning if such a name explicitly returns a value. ACPICA
7652Bugzilla 855.
7653
7654iASL: Added detection of GPE method name conflicts. Detects a conflict
7655where
7656there are two GPE methods of the form _Lxy and _Exy in the same scope.
7657(For
7658example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
7659
7660iASL/DTC: Fixed a couple input scanner issues with comments and line
7661numbers. Comment remover could get confused and miss a comment ending.
7662Fixed
7663a problem with line counter maintenance.
7664
7665iASL/DTC: Reduced the severity of some errors from fatal to error. There
7666is
7667no need to abort on simple errors within a field definition.
7668
7669Debugger: Simplified the output of the help command. All help output now
7670in
7671a single screen, instead of help subcommands. ACPICA Bugzilla 897.
7672
7673----------------------------------------
767412 January 2011. Summary of changes for version 20110112:
7675
76761) ACPI CA Core Subsystem:
7677
7678Fixed a race condition between method execution and namespace walks that
7679can
7680possibly cause a fault. The problem was apparently introduced in version
768120100528 as a result of a performance optimization that reduces the
7682number
7683of
7684namespace walks upon method exit by using the delete_namespace_subtree
7685function instead of the delete_namespace_by_owner function used
7686previously.
7687Bug is a missing namespace lock in the delete_namespace_subtree function.
7688dana.myers@oracle.com
7689
7690Fixed several issues and a possible fault with the automatic "serialized"
7691method support. History: This support changes a method to "serialized" on
7692the
7693fly if the method generates an AE_ALREADY_EXISTS error, indicating the
7694possibility that it cannot handle reentrancy. This fix repairs a couple
7695of
7696issues seen in the field, especially on machines with many cores:
7697
7698    1) Delete method children only upon the exit of the last thread,
7699       so as to not delete objects out from under other running threads
7700      (and possibly causing a fault.)
7701    2) Set the "serialized" bit for the method only upon the exit of the
7702       Last thread, so as to not cause deadlock when running threads
7703       attempt to exit.
7704    3) Cleanup the use of the AML "MethodFlags" and internal method flags
7705       so that there is no longer any confusion between the two.
7706
7707    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
7708
7709Debugger: Now lock the namespace for duration of a namespace dump.
7710Prevents
7711issues if the namespace is changing dynamically underneath the debugger.
7712Especially affects temporary namespace nodes, since the debugger displays
7713these also.
7714
7715Updated the ordering of include files. The ACPICA headers should appear
7716before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
7717set
7718any necessary compiler-specific defines, etc. Affects the ACPI-related
7719tools
7720and utilities.
7721
7722Updated all ACPICA copyrights and signons to 2011. Added the 2011
7723copyright
7724to all module headers and signons, including the Linux header. This
7725affects
7726virtually every file in the ACPICA core subsystem, iASL compiler, and all
7727utilities.
7728
7729Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
7730project files for VC++ 6.0 are now obsolete. New project files can be
7731found
7732under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
7733details.
7734
7735Example Code and Data Size: These are the sizes for the OS-independent
7736acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7737debug version of the code includes the debug output trace mechanism and
7738has a
7739much larger code and data size.
7740
7741  Previous Release (VC 6.0):
7742    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
7743    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
7744  Current Release (VC 9.0):
7745    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7746    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7747
77482) iASL Compiler/Disassembler and Tools:
7749
7750iASL: Added generic data types to the Data Table compiler. Add "generic"
7751data
7752types such as UINT32, String, Unicode, etc., to simplify the generation
7753of
7754platform-defined tables such as UEFI. Lin Ming.
7755
7756iASL: Added listing support for the Data Table Compiler. Adds listing
7757support
7758(-l) to display actual binary output for each line of input code.
7759
7760----------------------------------------
776109 December 2010. Summary of changes for version 20101209:
7762
77631) ACPI CA Core Subsystem:
7764
7765Completed the major overhaul of the GPE support code that was begun in
7766July
77672010. Major features include: removal of _PRW execution in ACPICA (host
7768executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
7769changes to existing interfaces, simplification of GPE handler operation,
7770and
7771a handful of new interfaces:
7772
7773    AcpiUpdateAllGpes
7774    AcpiFinishGpe
7775    AcpiSetupGpeForWake
7776    AcpiSetGpeWakeMask
7777    One new file, evxfgpe.c to consolidate all external GPE interfaces.
7778
7779See the ACPICA Programmer Reference for full details and programming
7780information. See the new section 4.4 "General Purpose Event (GPE)
7781Support"
7782for a full overview, and section 8.7 "ACPI General Purpose Event
7783Management"
7784for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
7785Ming,
7786Bob Moore, Rafael Wysocki.
7787
7788Implemented a new GPE feature for Windows compatibility, the "Implicit
7789Wake
7790GPE Notify". This feature will automatically issue a Notify(2) on a
7791device
7792when a Wake GPE is received if there is no corresponding GPE method or
7793handler. ACPICA BZ 870.
7794
7795Fixed a problem with the Scope() operator during table parse and load
7796phase.
7797During load phase (table load or method execution), the scope operator
7798should
7799not enter the target into the namespace. Instead, it should open a new
7800scope
7801at the target location. Linux BZ 19462, ACPICA BZ 882.
7802
7803Example Code and Data Size: These are the sizes for the OS-independent
7804acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7805debug version of the code includes the debug output trace mechanism and
7806has a
7807much larger code and data size.
7808
7809  Previous Release:
7810    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
7811    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
7812  Current Release:
7813    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7814    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7815
78162) iASL Compiler/Disassembler and Tools:
7817
7818iASL: Relax the alphanumeric restriction on _CID strings. These strings
7819are
7820"bus-specific" per the ACPI specification, and therefore any characters
7821are
7822acceptable. The only checks that can be performed are for a null string
7823and
7824perhaps for a leading asterisk. ACPICA BZ 886.
7825
7826iASL: Fixed a problem where a syntax error that caused a premature EOF
7827condition on the source file emitted a very confusing error message. The
7828premature EOF is now detected correctly. ACPICA BZ 891.
7829
7830Disassembler: Decode the AccessSize within a Generic Address Structure
7831(byte
7832access, word access, etc.) Note, this field does not allow arbitrary bit
7833access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
7834
7835New: AcpiNames utility - Example namespace dump utility. Shows an example
7836of
7837ACPICA configuration for a minimal namespace dump utility. Uses table and
7838namespace managers, but no AML interpreter. Does not add any
7839functionality
7840over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
7841partition and configure ACPICA. ACPICA BZ 883.
7842
7843AML Debugger: Increased the debugger buffer size for method return
7844objects.
7845Was 4K, increased to 16K. Also enhanced error messages for debugger
7846method
7847execution, including the buffer overflow case.
7848
7849----------------------------------------
785013 October 2010. Summary of changes for version 20101013:
7851
78521) ACPI CA Core Subsystem:
7853
7854Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
7855now
7856clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
7857HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
7858
7859Changed the type of the predefined namespace object _TZ from ThermalZone
7860to
7861Device. This was found to be confusing to the host software that
7862processes
7863the various thermal zones, since _TZ is not really a ThermalZone.
7864However,
7865a
7866Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
7867Zhang.
7868
7869Added Windows Vista SP2 to the list of supported _OSI strings. The actual
7870string is "Windows 2006 SP2".
7871
7872Eliminated duplicate code in AcpiUtExecute* functions. Now that the
7873nsrepair
7874code automatically repairs _HID-related strings, this type of code is no
7875longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
7876878.
7877
7878Example Code and Data Size: These are the sizes for the OS-independent
7879acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7880debug version of the code includes the debug output trace mechanism and
7881has a
7882much larger code and data size.
7883
7884  Previous Release:
7885    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7886    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7887  Current Release:
7888    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7889    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7890
78912) iASL Compiler/Disassembler and Tools:
7892
7893iASL: Implemented additional compile-time validation for _HID strings.
7894The
7895non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
7896length
7897of
7898the string must be exactly seven or eight characters. For both _HID and
7899_CID
7900strings, all characters must be alphanumeric. ACPICA BZ 874.
7901
7902iASL: Allow certain "null" resource descriptors. Some BIOS code creates
7903descriptors that are mostly or all zeros, with the expectation that they
7904will
7905be filled in at runtime. iASL now allows this as long as there is a
7906"resource
7907tag" (name) associated with the descriptor, which gives the ASL a handle
7908needed to modify the descriptor. ACPICA BZ 873.
7909
7910Added single-thread support to the generic Unix application OSL.
7911Primarily
7912for iASL support, this change removes the use of semaphores in the
7913single-
7914threaded ACPICA tools/applications - increasing performance. The
7915_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
7916option. ACPICA BZ 879.
7917
7918AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
7919support
7920for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
7921
7922iASL: Moved all compiler messages to a new file, aslmessages.h.
7923
7924----------------------------------------
792515 September 2010. Summary of changes for version 20100915:
7926
79271) ACPI CA Core Subsystem:
7928
7929Removed the AcpiOsDerivePciId OSL interface. The various host
7930implementations
7931of this function were not OS-dependent and are now obsolete and can be
7932removed from all host OSLs. This function has been replaced by
7933AcpiHwDerivePciId, which is now part of the ACPICA core code.
7934AcpiHwDerivePciId has been implemented without recursion. Adds one new
7935module, hwpci.c. ACPICA BZ 857.
7936
7937Implemented a dynamic repair for _HID and _CID strings. The following
7938problems are now repaired at runtime: 1) Remove a leading asterisk in the
7939string, and 2) the entire string is uppercased. Both repairs are in
7940accordance with the ACPI specification and will simplify host driver
7941code.
7942ACPICA BZ 871.
7943
7944The ACPI_THREAD_ID type is no longer configurable, internally it is now
7945always UINT64. This simplifies the ACPICA code, especially any printf
7946output.
7947UINT64 is the only common data type for all thread_id types across all
7948operating systems. It is now up to the host OSL to cast the native
7949thread_id
7950type to UINT64 before returning the value to ACPICA (via
7951AcpiOsGetThreadId).
7952Lin Ming, Bob Moore.
7953
7954Added the ACPI_INLINE type to enhance the ACPICA configuration. The
7955"inline"
7956keyword is not standard across compilers, and this type allows inline to
7957be
7958configured on a per-compiler basis. Lin Ming.
7959
7960Made the system global AcpiGbl_SystemAwakeAndRunning publicly
7961available.
7962Added an extern for this boolean in acpixf.h. Some hosts utilize this
7963value
7964during suspend/restore operations. ACPICA BZ 869.
7965
7966All code that implements error/warning messages with the "ACPI:" prefix
7967has
7968been moved to a new module, utxferror.c.
7969
7970The UINT64_OVERLAY was moved to utmath.c, which is the only module where
7971it
7972is used. ACPICA BZ 829. Lin Ming, Bob Moore.
7973
7974Example Code and Data Size: These are the sizes for the OS-independent
7975acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7976debug version of the code includes the debug output trace mechanism and
7977has a
7978much larger code and data size.
7979
7980  Previous Release:
7981    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
7982    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
7983  Current Release:
7984    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7985    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7986
79872) iASL Compiler/Disassembler and Tools:
7988
7989iASL/Disassembler: Write ACPI errors to stderr instead of the output
7990file.
7991This keeps the output files free of random error messages that may
7992originate
7993from within the namespace/interpreter code. Used this opportunity to
7994merge
7995all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
7996866. Lin Ming, Bob Moore.
7997
7998Tools: update some printfs for ansi warnings on size_t. Handle width
7999change
8000of size_t on 32-bit versus 64-bit generations. Lin Ming.
8001
8002----------------------------------------
800306 August 2010. Summary of changes for version 20100806:
8004
80051) ACPI CA Core Subsystem:
8006
8007Designed and implemented a new host interface to the _OSI support code.
8008This
8009will allow the host to dynamically add or remove multiple _OSI strings,
8010as
8011well as install an optional handler that is called for each _OSI
8012invocation.
8013Also added a new AML debugger command, 'osi' to display and modify the
8014global
8015_OSI string table, and test support in the AcpiExec utility. See the
8016ACPICA
8017reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
8018New Functions:
8019    AcpiInstallInterface - Add an _OSI string.
8020    AcpiRemoveInterface - Delete an _OSI string.
8021    AcpiInstallInterfaceHandler - Install optional _OSI handler.
8022Obsolete Functions:
8023    AcpiOsValidateInterface - no longer used.
8024New Files:
8025    source/components/utilities/utosi.c
8026
8027Re-introduced the support to enable multi-byte transfers for Embedded
8028Controller (EC) operation regions. A reported problem was found to be a
8029bug
8030in the host OS, not in the multi-byte support. Previously, the maximum
8031data
8032size passed to the EC operation region handler was a single byte. There
8033are
8034often EC Fields larger than one byte that need to be transferred, and it
8035is
8036useful for the EC driver to lock these as a single transaction. This
8037change
8038enables single transfers larger than 8 bits. This effectively changes the
8039access to the EC space from ByteAcc to AnyAcc, and will probably require
8040changes to the host OS Embedded Controller driver to enable 16/32/64/256-
8041bit
8042transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
8043
8044Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
8045prototype in acpiosxf.h had the output value pointer as a (void *).
8046It should be a (UINT64 *). This may affect some host OSL code.
8047
8048Fixed a couple problems with the recently modified Linux makefiles for
8049iASL
8050and AcpiExec. These new makefiles place the generated object files in the
8051local directory so that there can be no collisions between the files that
8052are
8053shared between them that are compiled with different options.
8054
8055Example Code and Data Size: These are the sizes for the OS-independent
8056acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8057debug version of the code includes the debug output trace mechanism and
8058has a
8059much larger code and data size.
8060
8061  Previous Release:
8062    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8063    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
8064  Current Release:
8065    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
8066    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
8067
80682) iASL Compiler/Disassembler and Tools:
8069
8070iASL/Disassembler: Added a new option (-da, "disassemble all") to load
8071the
8072namespace from and disassemble an entire group of AML files. Useful for
8073loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
8074and
8075disassembling with one simple command. ACPICA BZ 865. Lin Ming.
8076
8077iASL: Allow multiple invocations of -e option. This change allows
8078multiple
8079uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
8080834.
8081Lin Ming.
8082
8083----------------------------------------
808402 July 2010. Summary of changes for version 20100702:
8085
80861) ACPI CA Core Subsystem:
8087
8088Implemented several updates to the recently added GPE reference count
8089support. The model for "wake" GPEs is changing to give the host OS
8090complete
8091control of these GPEs. Eventually, the ACPICA core will not execute any
8092_PRW
8093methods, since the host already must execute them. Also, additional
8094changes
8095were made to help ensure that the reference counts are kept in proper
8096synchronization with reality. Rafael J. Wysocki.
8097
80981) Ensure that GPEs are not enabled twice during initialization.
80992) Ensure that GPE enable masks stay in sync with the reference count.
81003) Do not inadvertently enable GPEs when writing GPE registers.
81014) Remove the internal wake reference counter and add new AcpiGpeWakeup
8102interface. This interface will set or clear individual GPEs for wakeup.
81035) Remove GpeType argument from AcpiEnable and AcpiDisable. These
8104interfaces
8105are now used for "runtime" GPEs only.
8106
8107Changed the behavior of the GPE install/remove handler interfaces. The
8108GPE
8109is
8110no longer disabled during this process, as it was found to cause problems
8111on
8112some machines. Rafael J. Wysocki.
8113
8114Reverted a change introduced in version 20100528 to enable Embedded
8115Controller multi-byte transfers. This change was found to cause problems
8116with
8117Index Fields and possibly Bank Fields. It will be reintroduced when these
8118problems have been resolved.
8119
8120Fixed a problem with references to Alias objects within Package Objects.
8121A
8122reference to an Alias within the definition of a Package was not always
8123resolved properly. Aliases to objects like Processors, Thermal zones,
8124etc.
8125were resolved to the actual object instead of a reference to the object
8126as
8127it
8128should be. Package objects are only allowed to contain integer, string,
8129buffer, package, and reference objects. Redhat bugzilla 608648.
8130
8131Example Code and Data Size: These are the sizes for the OS-independent
8132acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8133debug version of the code includes the debug output trace mechanism and
8134has a
8135much larger code and data size.
8136
8137  Previous Release:
8138    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8139    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
8140  Current Release:
8141    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8142    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
8143
81442) iASL Compiler/Disassembler and Tools:
8145
8146iASL: Implemented a new compiler subsystem to allow definition and
8147compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
8148These
8149are called "ACPI Data Tables", and the new compiler is the "Data Table
8150Compiler". This compiler is intended to simplify the existing error-prone
8151process of creating these tables for the BIOS, as well as allowing the
8152disassembly, modification, recompilation, and override of existing ACPI
8153data
8154tables. See the iASL User Guide for detailed information.
8155
8156iASL: Implemented a new Template Generator option in support of the new
8157Data
8158Table Compiler. This option will create examples of all known ACPI tables
8159that can be used as the basis for table development. See the iASL
8160documentation and the -T option.
8161
8162Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
8163Descriptor Table).
8164
8165Updated the Linux makefiles for iASL and AcpiExec to place the generated
8166object files in the local directory so that there can be no collisions
8167between the shared files between them that are generated with different
8168options.
8169
8170Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
8171Use
8172the #define __APPLE__ to enable this support.
8173
8174----------------------------------------
817528 May 2010. Summary of changes for version 20100528:
8176
8177Note: The ACPI 4.0a specification was released on April 5, 2010 and is
8178available at www.acpi.info. This is primarily an errata release.
8179
81801) ACPI CA Core Subsystem:
8181
8182Undefined ACPI tables: We are looking for the definitions for the
8183following
8184ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
8185
8186Implemented support to enable multi-byte transfers for Embedded
8187Controller
8188(EC) operation regions. Previously, the maximum data size passed to the
8189EC
8190operation region handler was a single byte. There are often EC Fields
8191larger
8192than one byte that need to be transferred, and it is useful for the EC
8193driver
8194to lock these as a single transaction. This change enables single
8195transfers
8196larger than 8 bits. This effectively changes the access to the EC space
8197from
8198ByteAcc to AnyAcc, and will probably require changes to the host OS
8199Embedded
8200Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
8201bit
8202transfers. Alexey Starikovskiy, Lin Ming
8203
8204Implemented a performance enhancement for namespace search and access.
8205This
8206change enhances the performance of namespace searches and walks by adding
8207a
8208backpointer to the parent in each namespace node. On large namespaces,
8209this
8210change can improve overall ACPI performance by up to 9X. Adding a pointer
8211to
8212each namespace node increases the overall size of the internal namespace
8213by
8214about 5%, since each namespace entry usually consists of both a namespace
8215node and an ACPI operand object. However, this is the first growth of the
8216namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
8217
8218Implemented a performance optimization that reduces the number of
8219namespace
8220walks. On control method exit, only walk the namespace if the method is
8221known
8222to have created namespace objects outside of its local scope. Previously,
8223the
8224entire namespace was traversed on each control method exit. This change
8225can
8226improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
8227Moore.
8228
8229Added support to truncate I/O addresses to 16 bits for Windows
8230compatibility.
8231Some ASL code has been seen in the field that inadvertently has bits set
8232above bit 15. This feature is optional and is enabled if the BIOS
8233requests
8234any Windows OSI strings. It can also be enabled by the host OS. Matthew
8235Garrett, Bob Moore.
8236
8237Added support to limit the maximum time for the ASL Sleep() operator. To
8238prevent accidental deep sleeps, limit the maximum time that Sleep() will
8239actually sleep. Configurable, the default maximum is two seconds. ACPICA
8240bugzilla 854.
8241
8242Added run-time validation support for the _WDG and_WED Microsoft
8243predefined
8244methods. These objects are defined by "Windows Instrumentation", and are
8245not
8246part of the ACPI spec. ACPICA BZ 860.
8247
8248Expanded all statistic counters used during namespace and device
8249initialization from 16 to 32 bits in order to support very large
8250namespaces.
8251
8252Replaced all instances of %d in printf format specifiers with %u since
8253nearly
8254all integers in ACPICA are unsigned.
8255
8256Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
8257returned
8258as AE_NO_HANDLER.
8259
8260Example Code and Data Size: These are the sizes for the OS-independent
8261acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8262debug version of the code includes the debug output trace mechanism and
8263has a
8264much larger code and data size.
8265
8266  Previous Release:
8267    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
8268    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
8269  Current Release:
8270    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8271    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
8272
82732) iASL Compiler/Disassembler and Tools:
8274
8275iASL: Added compiler support for the _WDG and_WED Microsoft predefined
8276methods. These objects are defined by "Windows Instrumentation", and are
8277not
8278part of the ACPI spec. ACPICA BZ 860.
8279
8280AcpiExec: added option to disable the memory tracking mechanism. The -dt
8281option will disable the tracking mechanism, which improves performance
8282considerably.
8283
8284AcpiExec: Restructured the command line options into -d (disable) and -e
8285(enable) options.
8286
8287----------------------------------------
828828 April 2010. Summary of changes for version 20100428:
8289
82901) ACPI CA Core Subsystem:
8291
8292Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
8293including FADT-based and GPE Block Devices, execute any _PRW methods in
8294the
8295new table, and process any _Lxx/_Exx GPE methods in the new table. Any
8296runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
8297immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
8298Devices. Provides compatibility with other ACPI implementations. Two new
8299files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
8300Moore.
8301
8302Fixed a regression introduced in version 20100331 within the table
8303manager
8304where initial table loading could fail. This was introduced in the fix
8305for
8306AcpiReallocateRootTable. Also, renamed some of fields in the table
8307manager
8308data structures to clarify their meaning and use.
8309
8310Fixed a possible allocation overrun during internal object copy in
8311AcpiUtCopySimpleObject. The original code did not correctly handle the
8312case
8313where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
8314847.
8315
8316Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
8317possible access beyond end-of-allocation. Also, now fully validate
8318descriptor
8319(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
8320
8321Example Code and Data Size: These are the sizes for the OS-independent
8322acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8323debug version of the code includes the debug output trace mechanism and
8324has a
8325much larger code and data size.
8326
8327  Previous Release:
8328    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
8329    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
8330  Current Release:
8331    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
8332    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
8333
83342) iASL Compiler/Disassembler and Tools:
8335
8336iASL: Implemented Min/Max/Len/Gran validation for address resource
8337descriptors. This change implements validation for the address fields
8338that
8339are common to all address-type resource descriptors. These checks are
8340implemented: Checks for valid Min/Max, length within the Min/Max window,
8341valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
8342per
8343table 6-40 in the ACPI 4.0a specification. Also split the large
8344aslrestype1.c
8345and aslrestype2.c files into five new files. ACPICA BZ 840.
8346
8347iASL: Added support for the _Wxx predefined names. This support was
8348missing
8349and these names were not recognized by the compiler as valid predefined
8350names. ACPICA BZ 851.
8351
8352iASL: Added an error for all predefined names that are defined to return
8353no
8354value and thus must be implemented as Control Methods. These include all
8355of
8356the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
8357names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
8358
8359iASL: Implemented the -ts option to emit hex AML data in ASL format, as
8360an
8361ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
8362be
8363dynamically loaded via the Load() operator. Also cleaned up output for
8364the
8365-
8366ta and -tc options. ACPICA BZ 853.
8367
8368Tests: Added a new file with examples of extended iASL error checking.
8369Demonstrates the advanced error checking ability of the iASL compiler.
8370Available at tests/misc/badcode.asl.
8371
8372----------------------------------------
837331 March 2010. Summary of changes for version 20100331:
8374
83751) ACPI CA Core Subsystem:
8376
8377Completed a major update for the GPE support in order to improve support
8378for
8379shared GPEs and to simplify both host OS and ACPICA code. Added a
8380reference
8381count mechanism to support shared GPEs that require multiple device
8382drivers.
8383Several external interfaces have changed. One external interface has been
8384removed. One new external interface was added. Most of the GPE external
8385interfaces now use the GPE spinlock instead of the events mutex (and the
8386Flags parameter for many GPE interfaces has been removed.) See the
8387updated
8388ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
8389Rafael
8390Wysocki. ACPICA BZ 831.
8391
8392Changed:
8393    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
8394Removed:
8395    AcpiSetGpeType
8396New:
8397    AcpiSetGpe
8398
8399Implemented write support for DataTable operation regions. These regions
8400are
8401defined via the DataTableRegion() operator. Previously, only read support
8402was
8403implemented. The ACPI specification allows DataTableRegions to be
8404read/write,
8405however.
8406
8407Implemented a new subsystem option to force a copy of the DSDT to local
8408memory. Optionally copy the entire DSDT to local memory (instead of
8409simply
8410mapping it.) There are some (albeit very rare) BIOSs that corrupt or
8411replace
8412the original DSDT, creating the need for this option. Default is FALSE,
8413do
8414not copy the DSDT.
8415
8416Implemented detection of a corrupted or replaced DSDT. This change adds
8417support to detect a DSDT that has been corrupted and/or replaced from
8418outside
8419the OS (by firmware). This is typically catastrophic for the system, but
8420has
8421been seen on some machines. Once this problem has been detected, the DSDT
8422copy option can be enabled via system configuration. Lin Ming, Bob Moore.
8423
8424Fixed two problems with AcpiReallocateRootTable during the root table
8425copy.
8426When copying the root table to the new allocation, the length used was
8427incorrect. The new size was used instead of the current table size,
8428meaning
8429too much data was copied. Also, the count of available slots for ACPI
8430tables
8431was not set correctly. Alexey Starikovskiy, Bob Moore.
8432
8433Example Code and Data Size: These are the sizes for the OS-independent
8434acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8435debug version of the code includes the debug output trace mechanism and
8436has a
8437much larger code and data size.
8438
8439  Previous Release:
8440    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
8441    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
8442  Current Release:
8443    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
8444    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
8445
84462) iASL Compiler/Disassembler and Tools:
8447
8448iASL: Implement limited typechecking for values returned from predefined
8449control methods. The type of any returned static (unnamed) object is now
8450validated. For example, Return(1). ACPICA BZ 786.
8451
8452iASL: Fixed a predefined name object verification regression. Fixes a
8453problem
8454introduced in version 20100304. An error is incorrectly generated if a
8455predefined name is declared as a static named object with a value defined
8456using the keywords "Zero", "One", or "Ones". Lin Ming.
8457
8458iASL: Added Windows 7 support for the -g option (get local ACPI tables)
8459by
8460reducing the requested registry access rights. ACPICA BZ 842.
8461
8462Disassembler: fixed a possible fault when generating External()
8463statements.
8464Introduced in commit ae7d6fd: Properly handle externals with parent-
8465prefix
8466(carat). Fixes a string length allocation calculation. Lin Ming.
8467
8468----------------------------------------
846904 March 2010. Summary of changes for version 20100304:
8470
84711) ACPI CA Core Subsystem:
8472
8473Fixed a possible problem with the AML Mutex handling function
8474AcpiExReleaseMutex where the function could fault under the very rare
8475condition when the interpreter has blocked, the interpreter lock is
8476released,
8477the interpreter is then reentered via the same thread, and attempts to
8478acquire an AML mutex that was previously acquired. FreeBSD report 140979.
8479Lin
8480Ming.
8481
8482Implemented additional configuration support for the AML "Debug Object".
8483Output from the debug object can now be enabled via a global variable,
8484AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
8485debugging.
8486This debug output is now available in the release version of ACPICA
8487instead
8488of just the debug version. Also, the entire debug output module can now
8489be
8490configured out of the ACPICA build if desired. One new file added,
8491executer/exdebug.c. Lin Ming, Bob Moore.
8492
8493Added header support for the ACPI MCHI table (Management Controller Host
8494Interface Table). This table was added in ACPI 4.0, but the defining
8495document
8496has only recently become available.
8497
8498Standardized output of integer values for ACPICA warnings/errors. Always
8499use
85000x prefix for hex output, always use %u for unsigned integer decimal
8501output.
8502Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
8503400
8504invocations.) These invocations were converted from the original
8505ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
8506
8507Example Code and Data Size: These are the sizes for the OS-independent
8508acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8509debug version of the code includes the debug output trace mechanism and
8510has a
8511much larger code and data size.
8512
8513  Previous Release:
8514    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
8515    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
8516  Current Release:
8517    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
8518    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
8519
85202) iASL Compiler/Disassembler and Tools:
8521
8522iASL: Implemented typechecking support for static (non-control method)
8523predefined named objects that are declared with the Name() operator. For
8524example, the type of this object is now validated to be of type Integer:
8525Name(_BBN, 1). This change migrates the compiler to using the core
8526predefined
8527name table instead of maintaining a local version. Added a new file,
8528aslpredef.c. ACPICA BZ 832.
8529
8530Disassembler: Added support for the ACPI 4.0 MCHI table.
8531
8532----------------------------------------
853321 January 2010. Summary of changes for version 20100121:
8534
85351) ACPI CA Core Subsystem:
8536
8537Added the 2010 copyright to all module headers and signons. This affects
8538virtually every file in the ACPICA core subsystem, the iASL compiler, the
8539tools/utilities, and the test suites.
8540
8541Implemented a change to the AcpiGetDevices interface to eliminate
8542unnecessary
8543invocations of the _STA method. In the case where a specific _HID is
8544requested, do not run _STA until a _HID match is found. This eliminates
8545potentially dozens of _STA calls during a search for a particular
8546device/HID,
8547which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
8548
8549Implemented an additional repair for predefined method return values.
8550Attempt
8551to repair unexpected NULL elements within returned Package objects.
8552Create
8553an
8554Integer of value zero, a NULL String, or a zero-length Buffer as
8555appropriate.
8556ACPICA BZ 818. Lin Ming, Bob Moore.
8557
8558Removed the obsolete ACPI_INTEGER data type. This type was introduced as
8559the
8560code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
8561(with
856264-bit AML integers). It is now obsolete and this change removes it from
8563the
8564ACPICA code base, replaced by UINT64. The original typedef has been
8565retained
8566for now for compatibility with existing device driver code. ACPICA BZ
8567824.
8568
8569Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
8570in
8571the parse tree object.
8572
8573Added additional warning options for the gcc-4 generation. Updated the
8574source
8575accordingly. This includes some code restructuring to eliminate
8576unreachable
8577code, elimination of some gotos, elimination of unused return values,
8578some
8579additional casting, and removal of redundant declarations.
8580
8581Example Code and Data Size: These are the sizes for the OS-independent
8582acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8583debug version of the code includes the debug output trace mechanism and
8584has a
8585much larger code and data size.
8586
8587  Previous Release:
8588    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
8589    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
8590  Current Release:
8591    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
8592    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
8593
85942) iASL Compiler/Disassembler and Tools:
8595
8596No functional changes for this release.
8597
8598----------------------------------------
859914 December 2009. Summary of changes for version 20091214:
8600
86011) ACPI CA Core Subsystem:
8602
8603Enhanced automatic data type conversions for predefined name repairs.
8604This
8605change expands the automatic repairs/conversions for predefined name
8606return
8607values to make Integers, Strings, and Buffers fully interchangeable.
8608Also,
8609a
8610Buffer can be converted to a Package of Integers if necessary. The
8611nsrepair.c
8612module was completely restructured. Lin Ming, Bob Moore.
8613
8614Implemented automatic removal of null package elements during predefined
8615name
8616repairs. This change will automatically remove embedded and trailing NULL
8617package elements from returned package objects that are defined to
8618contain
8619a
8620variable number of sub-packages. The driver is then presented with a
8621package
8622with no null elements to deal with. ACPICA BZ 819.
8623
8624Implemented a repair for the predefined _FDE and _GTM names. The expected
8625return value for both names is a Buffer of 5 DWORDs. This repair fixes
8626two
8627possible problems (both seen in the field), where a package of integers
8628is
8629returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
8630Kim.
8631
8632Implemented additional module-level code support. This change will
8633properly
8634execute module-level code that is not at the root of the namespace (under
8635a
8636Device object, etc.). Now executes the code within the current scope
8637instead
8638of the root. ACPICA BZ 762. Lin Ming.
8639
8640Fixed possible mutex acquisition errors when running _REG methods. Fixes
8641a
8642problem where mutex errors can occur when running a _REG method that is
8643in
8644the same scope as a method-defined operation region or an operation
8645region
8646under a module-level IF block. This type of code is rare, so the problem
8647has
8648not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
8649
8650Fixed a possible memory leak during module-level code execution. An
8651object
8652could be leaked for each block of executed module-level code if the
8653interpreter slack mode is enabled This change deletes any implicitly
8654returned
8655object from the module-level code block. Lin Ming.
8656
8657Removed messages for successful predefined repair(s). The repair
8658mechanism
8659was considered too wordy. Now, messages are only unconditionally emitted
8660if
8661the return object cannot be repaired. Existing messages for successful
8662repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
8663827.
8664
8665Example Code and Data Size: These are the sizes for the OS-independent
8666acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8667debug version of the code includes the debug output trace mechanism and
8668has a
8669much larger code and data size.
8670
8671  Previous Release:
8672    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
8673    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
8674  Current Release:
8675    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
8676    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
8677
86782) iASL Compiler/Disassembler and Tools:
8679
8680iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
8681files
8682were no longer automatically removed at the termination of the compile.
8683
8684acpiexec: Implemented the -f option to specify default region fill value.
8685This option specifies the value used to initialize buffers that simulate
8686operation regions. Default value is zero. Useful for debugging problems
8687that
8688depend on a specific initial value for a region or field.
8689
8690----------------------------------------
869112 November 2009. Summary of changes for version 20091112:
8692
86931) ACPI CA Core Subsystem:
8694
8695Implemented a post-order callback to AcpiWalkNamespace. The existing
8696interface only has a pre-order callback. This change adds an additional
8697parameter for a post-order callback which will be more useful for bus
8698scans.
8699ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
8700
8701Modified the behavior of the operation region memory mapping cache for
8702SystemMemory. Ensure that the memory mappings created for operation
8703regions
8704do not cross 4K page boundaries. Crossing a page boundary while mapping
8705regions can cause kernel warnings on some hosts if the pages have
8706different
8707attributes. Such regions are probably BIOS bugs, and this is the
8708workaround.
8709Linux BZ 14445. Lin Ming.
8710
8711Implemented an automatic repair for predefined methods that must return
8712sorted lists. This change will repair (by sorting) packages returned by
8713_ALR,
8714_PSS, and _TSS. Drivers can now assume that the packages are correctly
8715sorted
8716and do not contain NULL package elements. Adds one new file,
8717namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
8718
8719Fixed a possible fault during predefined name validation if a return
8720Package
8721object contains NULL elements. Also adds a warning if a NULL element is
8722followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
8723may
8724include repair or removal of all such NULL elements where possible.
8725
8726Implemented additional module-level executable AML code support. This
8727change
8728will execute module-level code that is not at the root of the namespace
8729(under a Device object, etc.) at table load time. Module-level executable
8730AML
8731code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
8732
8733Implemented a new internal function to create Integer objects. This
8734function
8735simplifies miscellaneous object creation code. ACPICA BZ 823.
8736
8737Reduced the severity of predefined repair messages, Warning to Info.
8738Since
8739the object was successfully repaired, a warning is too severe. Reduced to
8740an
8741info message for now. These messages may eventually be changed to debug-
8742only.
8743ACPICA BZ 812.
8744
8745Example Code and Data Size: These are the sizes for the OS-independent
8746acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8747debug version of the code includes the debug output trace mechanism and
8748has a
8749much larger code and data size.
8750
8751  Previous Release:
8752    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
8753    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
8754  Current Release:
8755    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
8756    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
8757
87582) iASL Compiler/Disassembler and Tools:
8759
8760iASL: Implemented Switch() with While(1) so that Break works correctly.
8761This
8762change correctly implements the Switch operator with a surrounding
8763While(1)
8764so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
8765
8766iASL: Added a message if a package initializer list is shorter than
8767package
8768length. Adds a new remark for a Package() declaration if an initializer
8769list
8770exists, but is shorter than the declared length of the package. Although
8771technically legal, this is probably a coding error and it is seen in the
8772field. ACPICA BZ 815. Lin Ming, Bob Moore.
8773
8774iASL: Fixed a problem where the compiler could fault after the maximum
8775number
8776of errors was reached (200).
8777
8778acpixtract: Fixed a possible warning for pointer cast if the compiler
8779warning
8780level set very high.
8781
8782----------------------------------------
878313 October 2009. Summary of changes for version 20091013:
8784
87851) ACPI CA Core Subsystem:
8786
8787Fixed a problem where an Operation Region _REG method could be executed
8788more
8789than once. If a custom address space handler is installed by the host
8790before
8791the "initialize operation regions" phase of the ACPICA initialization,
8792any
8793_REG methods for that address space could be executed twice. This change
8794fixes the problem. ACPICA BZ 427. Lin Ming.
8795
8796Fixed a possible memory leak for the Scope() ASL operator. When the exact
8797invocation of "Scope(\)" is executed (change scope to root), one internal
8798operand object was leaked. Lin Ming.
8799
8800Implemented a run-time repair for the _MAT predefined method. If the _MAT
8801return value is defined as a Field object in the AML, and the field
8802size is less than or equal to the default width of an integer (32 or
880364),_MAT
8804can incorrectly return an Integer instead of a Buffer. ACPICA now
8805automatically repairs this problem. ACPICA BZ 810.
8806
8807Implemented a run-time repair for the _BIF and _BIX predefined methods.
8808The
8809"OEM Information" field is often incorrectly returned as an Integer with
8810value zero if the field is not supported by the platform. This is due to
8811an
8812ambiguity in the ACPI specification. The field should always be a string.
8813ACPICA now automatically repairs this problem by returning a NULL string
8814within the returned Package. ACPICA BZ 807.
8815
8816Example Code and Data Size: These are the sizes for the OS-independent
8817acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8818debug version of the code includes the debug output trace mechanism and
8819has a
8820much larger code and data size.
8821
8822  Previous Release:
8823    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
8824    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
8825  Current Release:
8826    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
8827    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
8828
88292) iASL Compiler/Disassembler and Tools:
8830
8831Disassembler: Fixed a problem where references to external symbols that
8832contained one or more parent-prefixes (carats) were not handled
8833correctly,
8834possibly causing a fault. ACPICA BZ 806. Lin Ming.
8835
8836Disassembler: Restructured the code so that all functions that handle
8837external symbols are in a single module. One new file is added,
8838common/dmextern.c.
8839
8840AML Debugger: Added a max count argument for the Batch command (which
8841executes multiple predefined methods within the namespace.)
8842
8843iASL: Updated the compiler documentation (User Reference.) Available at
8844http://www.acpica.org/documentation/. ACPICA BZ 750.
8845
8846AcpiXtract: Updated for Lint and other formatting changes. Close all open
8847files.
8848
8849----------------------------------------
885003 September 2009. Summary of changes for version 20090903:
8851
88521) ACPI CA Core Subsystem:
8853
8854For Windows Vista compatibility, added the automatic execution of an _INI
8855method located at the namespace root (\_INI). This method is executed at
8856table load time. This support is in addition to the automatic execution
8857of
8858\_SB._INI. Lin Ming.
8859
8860Fixed a possible memory leak in the interpreter for AML package objects
8861if
8862the package initializer list is longer than the defined size of the
8863package.
8864This apparently can only happen if the BIOS changes the package size on
8865the
8866fly (seen in a _PSS object), as ASL compilers do not allow this. The
8867interpreter will truncate the package to the defined size (and issue an
8868error
8869message), but previously could leave the extra objects undeleted if they
8870were
8871pre-created during the argument processing (such is the case if the
8872package
8873consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
8874
8875Fixed a problem seen when a Buffer or String is stored to itself via ASL.
8876This has been reported in the field. Previously, ACPICA would zero out
8877the
8878buffer/string. Now, the operation is treated as a noop. Provides Windows
8879compatibility. ACPICA BZ 803. Lin Ming.
8880
8881Removed an extraneous error message for ASL constructs of the form
8882Store(LocalX,LocalX) when LocalX is uninitialized. These curious
8883statements
8884are seen in many BIOSs and are once again treated as NOOPs and no error
8885is
8886emitted when they are encountered. ACPICA BZ 785.
8887
8888Fixed an extraneous warning message if a _DSM reserved method returns a
8889Package object. _DSM can return any type of object, so validation on the
8890return type cannot be performed. ACPICA BZ 802.
8891
8892Example Code and Data Size: These are the sizes for the OS-independent
8893acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8894debug version of the code includes the debug output trace mechanism and
8895has a
8896much larger code and data size.
8897
8898  Previous Release:
8899    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
8900    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
8901  Current Release:
8902    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
8903    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
8904
89052) iASL Compiler/Disassembler and Tools:
8906
8907iASL: Fixed a problem with the use of the Alias operator and Resource
8908Templates. The correct alias is now constructed and no error is emitted.
8909ACPICA BZ 738.
8910
8911iASL: Implemented the -I option to specify additional search directories
8912for
8913include files. Allows multiple additional search paths for include files.
8914Directories are searched in the order specified on the command line
8915(after
8916the local directory is searched.) ACPICA BZ 800.
8917
8918iASL: Fixed a problem where the full pathname for include files was not
8919emitted for warnings/errors. This caused the IDE support to not work
8920properly. ACPICA BZ 765.
8921
8922iASL: Implemented the -@ option to specify a Windows-style response file
8923containing additional command line options. ACPICA BZ 801.
8924
8925AcpiExec: Added support to load multiple AML files simultaneously (such
8926as
8927a
8928DSDT and multiple SSDTs). Also added support for wildcards within the AML
8929pathname. These features allow all machine tables to be easily loaded and
8930debugged together. ACPICA BZ 804.
8931
8932Disassembler: Added missing support for disassembly of HEST table Error
8933Bank
8934subtables.
8935
8936----------------------------------------
893730 July 2009. Summary of changes for version 20090730:
8938
8939The ACPI 4.0 implementation for ACPICA is complete with this release.
8940
89411) ACPI CA Core Subsystem:
8942
8943ACPI 4.0: Added header file support for all new and changed ACPI tables.
8944Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
8945new
8946for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
8947BERT,
8948EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
8949There
8950have been some ACPI 4.0 changes to other existing tables. Split the large
8951actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
8952
8953ACPI 4.0: Implemented predefined name validation for all new names. There
8954are
895531 new names in ACPI 4.0. The predefined validation module was split into
8956two
8957files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
8958
8959Implemented support for so-called "module-level executable code". This is
8960executable AML code that exists outside of any control method and is
8961intended
8962to be executed at table load time. Although illegal since ACPI 2.0, this
8963type
8964of code still exists and is apparently still being created. Blocks of
8965this
8966code are now detected and executed as intended. Currently, the code
8967blocks
8968must exist under either an If, Else, or While construct; these are the
8969typical cases seen in the field. ACPICA BZ 762. Lin Ming.
8970
8971Implemented an automatic dynamic repair for predefined names that return
8972nested Package objects. This applies to predefined names that are defined
8973to
8974return a variable-length Package of sub-packages. If the number of sub-
8975packages is one, BIOS code is occasionally seen that creates a simple
8976single
8977package with no sub-packages. This code attempts to fix the problem by
8978wrapping a new package object around the existing package. These methods
8979can
8980be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
8981BZ
8982790.
8983
8984Fixed a regression introduced in 20090625 for the AcpiGetDevices
8985interface.
8986The _HID/_CID matching was broken and no longer matched IDs correctly.
8987ACPICA
8988BZ 793.
8989
8990Fixed a problem with AcpiReset where the reset would silently fail if the
8991register was one of the protected I/O ports. AcpiReset now bypasses the
8992port
8993validation mechanism. This may eventually be driven into the
8994AcpiRead/Write
8995interfaces.
8996
8997Fixed a regression related to the recent update of the AcpiRead/Write
8998interfaces. A sleep/suspend could fail if the optional PM2 Control
8999register
9000does not exist during an attempt to write the Bus Master Arbitration bit.
9001(However, some hosts already delete the code that writes this bit, and
9002the
9003code may in fact be obsolete at this date.) ACPICA BZ 799.
9004
9005Fixed a problem where AcpiTerminate could fault if inadvertently called
9006twice
9007in succession. ACPICA BZ 795.
9008
9009Example Code and Data Size: These are the sizes for the OS-independent
9010acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9011debug version of the code includes the debug output trace mechanism and
9012has a
9013much larger code and data size.
9014
9015  Previous Release:
9016    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
9017    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
9018  Current Release:
9019    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
9020    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
9021
90222) iASL Compiler/Disassembler and Tools:
9023
9024ACPI 4.0: Implemented disassembler support for all new ACPI tables and
9025changes to existing tables. ACPICA BZ 775.
9026
9027----------------------------------------
902825 June 2009. Summary of changes for version 20090625:
9029
9030The ACPI 4.0 Specification was released on June 16 and is available at
9031www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
9032continue for the next few releases.
9033
90341) ACPI CA Core Subsystem:
9035
9036ACPI 4.0: Implemented interpreter support for the IPMI operation region
9037address space. Includes support for bi-directional data buffers and an
9038IPMI
9039address space handler (to be installed by an IPMI device driver.) ACPICA
9040BZ
9041773. Lin Ming.
9042
9043ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
9044Includes
9045support in both the header files and the disassembler.
9046
9047Completed a major update for the AcpiGetObjectInfo external interface.
9048Changes include:
9049 - Support for variable, unlimited length HID, UID, and CID strings.
9050 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
9051etc.)
9052 - Call the _SxW power methods on behalf of a device object.
9053 - Determine if a device is a PCI root bridge.
9054 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
9055These changes will require an update to all callers of this interface.
9056See
9057the updated ACPICA Programmer Reference for details. One new source file
9058has
9059been added - utilities/utids.c. ACPICA BZ 368, 780.
9060
9061Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
9062transfers. The Value parameter has been extended from 32 bits to 64 bits
9063in
9064order to support new ACPI 4.0 tables. These changes will require an
9065update
9066to
9067all callers of these interfaces. See the ACPICA Programmer Reference for
9068details. ACPICA BZ 768.
9069
9070Fixed several problems with AcpiAttachData. The handler was not invoked
9071when
9072the host node was deleted. The data sub-object was not automatically
9073deleted
9074when the host node was deleted. The interface to the handler had an
9075unused
9076parameter, this was removed. ACPICA BZ 778.
9077
9078Enhanced the function that dumps ACPI table headers. All non-printable
9079characters in the string fields are now replaced with '?' (Signature,
9080OemId,
9081OemTableId, and CompilerId.) ACPI tables with non-printable characters in
9082these fields are occasionally seen in the field. ACPICA BZ 788.
9083
9084Fixed a problem with predefined method repair code where the code that
9085attempts to repair/convert an object of incorrect type is only executed
9086on
9087the first time the predefined method is called. The mechanism that
9088disables
9089warnings on subsequent calls was interfering with the repair mechanism.
9090ACPICA BZ 781.
9091
9092Fixed a possible memory leak in the predefined validation/repair code
9093when
9094a
9095buffer is automatically converted to an expected string object.
9096
9097Removed obsolete 16-bit files from the distribution and from the current
9098git
9099tree head. ACPICA BZ 776.
9100
9101Example Code and Data Size: These are the sizes for the OS-independent
9102acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9103debug version of the code includes the debug output trace mechanism and
9104has a
9105much larger code and data size.
9106
9107  Previous Release:
9108    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
9109    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
9110  Current Release:
9111    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
9112    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
9113
91142) iASL Compiler/Disassembler and Tools:
9115
9116ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
9117operation region keyword. ACPICA BZ 771, 772. Lin Ming.
9118
9119ACPI 4.0: iASL - implemented compile-time validation support for all new
9120predefined names and control methods (31 total). ACPICA BZ 769.
9121
9122----------------------------------------
912321 May 2009. Summary of changes for version 20090521:
9124
91251) ACPI CA Core Subsystem:
9126
9127Disabled the preservation of the SCI enable bit in the PM1 control
9128register.
9129The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
9130to
9131be
9132a "preserved" bit - "OSPM always preserves this bit position", section
91334.7.3.2.1. However, some machines fail if this bit is in fact preserved
9134because the bit needs to be explicitly set by the OS as a workaround. No
9135machines fail if the bit is not preserved. Therefore, ACPICA no longer
9136attempts to preserve this bit.
9137
9138Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
9139incorrectly formed _PRT package could cause a fault. Added validation to
9140ensure that each package element is actually a sub-package.
9141
9142Implemented a new interface to install or override a single control
9143method,
9144AcpiInstallMethod. This interface is useful when debugging in order to
9145repair
9146an existing method or to install a missing method without having to
9147override
9148the entire ACPI table. See the ACPICA Programmer Reference for use and
9149examples. Lin Ming, Bob Moore.
9150
9151Fixed several reference count issues with the DdbHandle object that is
9152created from a Load or LoadTable operator. Prevent premature deletion of
9153the
9154object. Also, mark the object as invalid once the table has been
9155unloaded.
9156This is needed because the handle itself may not be deleted after the
9157table
9158unload, depending on whether it has been stored in a named object by the
9159caller. Lin Ming.
9160
9161Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
9162mutexes of the same sync level are acquired but then not released in
9163strict
9164opposite order, the internally maintained Current Sync Level becomes
9165confused
9166and can cause subsequent execution errors. ACPICA BZ 471.
9167
9168Changed the allowable release order for ASL mutex objects. The ACPI 4.0
9169specification has been changed to make the SyncLevel for mutex objects
9170more
9171useful. When releasing a mutex, the SyncLevel of the mutex must now be
9172the
9173same as the current sync level. This makes more sense than the previous
9174rule
9175(SyncLevel less than or equal). This change updates the code to match the
9176specification.
9177
9178Fixed a problem with the local version of the AcpiOsPurgeCache function.
9179The
9180(local) cache must be locked during all cache object deletions. Andrew
9181Baumann.
9182
9183Updated the Load operator to use operation region interfaces. This
9184replaces
9185direct memory mapping with region access calls. Now, all region accesses
9186go
9187through the installed region handler as they should.
9188
9189Simplified and optimized the NsGetNextNode function. Reduced parameter
9190count
9191and reduced code for this frequently used function.
9192
9193Example Code and Data Size: These are the sizes for the OS-independent
9194acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9195debug version of the code includes the debug output trace mechanism and
9196has a
9197much larger code and data size.
9198
9199  Previous Release:
9200    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
9201    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
9202  Current Release:
9203    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
9204    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
9205
92062) iASL Compiler/Disassembler and Tools:
9207
9208Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
9209problems
9210with sub-table disassembly and handling invalid sub-tables. Attempt
9211recovery
9212after an invalid sub-table ID.
9213
9214----------------------------------------
921522 April 2009. Summary of changes for version 20090422:
9216
92171) ACPI CA Core Subsystem:
9218
9219Fixed a compatibility issue with the recently released I/O port
9220protection
9221mechanism. For windows compatibility, 1) On a port protection violation,
9222simply ignore the request and do not return an exception (allow the
9223control
9224method to continue execution.) 2) If only part of the request overlaps a
9225protected port, read/write the individual ports that are not protected.
9226Linux
9227BZ 13036. Lin Ming
9228
9229Enhanced the execution of the ASL/AML BreakPoint operator so that it
9230actually
9231breaks into the AML debugger if the debugger is present. This matches the
9232ACPI-defined behavior.
9233
9234Fixed several possible warnings related to the use of the configurable
9235ACPI_THREAD_ID. This type can now be configured as either an integer or a
9236pointer with no warnings. Also fixes several warnings in printf-like
9237statements for the 64-bit build when the type is configured as a pointer.
9238ACPICA BZ 766, 767.
9239
9240Fixed a number of possible warnings when compiling with gcc 4+ (depending
9241on
9242warning options.) Examples include printf formats, aliasing, unused
9243globals,
9244missing prototypes, missing switch default statements, use of non-ANSI
9245library functions, use of non-ANSI constructs. See generate/unix/Makefile
9246for
9247a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
9248
9249Example Code and Data Size: These are the sizes for the OS-independent
9250acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9251debug version of the code includes the debug output trace mechanism and
9252has a
9253much larger code and data size.
9254
9255  Previous Release:
9256    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
9257    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
9258  Current Release:
9259    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
9260    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
9261
92622) iASL Compiler/Disassembler and Tools:
9263
9264iASL: Fixed a generation warning from Bison 2.3 and fixed several
9265warnings
9266on
9267the 64-bit build.
9268
9269iASL: Fixed a problem where the Unix/Linux versions of the compiler could
9270not
9271correctly digest Windows/DOS formatted files (with CR/LF).
9272
9273iASL: Added a new option for "quiet mode" (-va) that produces only the
9274compilation summary, not individual errors and warnings. Useful for large
9275batch compilations.
9276
9277AcpiExec: Implemented a new option (-z) to enable a forced
9278semaphore/mutex
9279timeout that can be used to detect hang conditions during execution of
9280AML
9281code (includes both internal semaphores and AML-defined mutexes and
9282events.)
9283
9284Added new makefiles for the generation of acpica in a generic unix-like
9285environment. These makefiles are intended to generate the acpica tools
9286and
9287utilities from the original acpica git source tree structure.
9288
9289Test Suites: Updated and cleaned up the documentation files. Updated the
9290copyrights to 2009, affecting all source files. Use the new version of
9291iASL
9292with quiet mode. Increased the number of available semaphores in the
9293Windows
9294OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
9295added
9296an alternate implementation of the semaphore timeout to allow aslts to
9297execute fully on Cygwin.
9298
9299----------------------------------------
930020 March 2009. Summary of changes for version 20090320:
9301
93021) ACPI CA Core Subsystem:
9303
9304Fixed a possible race condition between AcpiWalkNamespace and dynamic
9305table
9306unloads. Added a reader/writer locking mechanism to allow multiple
9307concurrent
9308namespace walks (readers), but block a dynamic table unload until it can
9309gain
9310exclusive write access to the namespace. This fixes a problem where a
9311table
9312unload could (possibly catastrophically) delete the portion of the
9313namespace
9314that is currently being examined by a walk. Adds a new file, utlock.c,
9315that
9316implements the reader/writer lock mechanism. ACPICA BZ 749.
9317
9318Fixed a regression introduced in version 20090220 where a change to the
9319FADT
9320handling could cause the ACPICA subsystem to access non-existent I/O
9321ports.
9322
9323Modified the handling of FADT register and table (FACS/DSDT) addresses.
9324The
9325FADT can contain both 32-bit and 64-bit versions of these addresses.
9326Previously, the 64-bit versions were favored, meaning that if both 32 and
932764
9328versions were valid, but not equal, the 64-bit version was used. This was
9329found to cause some machines to fail. Now, in this case, the 32-bit
9330version
9331is used instead. This now matches the Windows behavior.
9332
9333Implemented a new mechanism to protect certain I/O ports. Provides
9334Microsoft
9335compatibility and protects the standard PC I/O ports from access via AML
9336code. Adds a new file, hwvalid.c
9337
9338Fixed a possible extraneous warning message from the FADT support. The
9339message warns of a 32/64 length mismatch between the legacy and GAS
9340definitions for a register.
9341
9342Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
9343is
9344made obsolete by the port protection mechanism above. It was previously
9345used
9346to validate the entire address range of an operation region, which could
9347be
9348incorrect if the range included illegal ports, but fields within the
9349operation region did not actually access those ports. Validation is now
9350performed on a per-field basis instead of the entire region.
9351
9352Modified the handling of the PM1 Status Register ignored bit (bit 11.)
9353Ignored bits must be "preserved" according to the ACPI spec. Usually,
9354this
9355means a read/modify/write when writing to the register. However, for
9356status
9357registers, writing a one means clear the event. Writing a zero means
9358preserve
9359the event (do not clear.) This behavior is clarified in the ACPI 4.0
9360spec,
9361and the ACPICA code now simply always writes a zero to the ignored bit.
9362
9363Modified the handling of ignored bits for the PM1 A/B Control Registers.
9364As
9365per the ACPI specification, for the control registers, preserve
9366(read/modify/write) all bits that are defined as either reserved or
9367ignored.
9368
9369Updated the handling of write-only bits in the PM1 A/B Control Registers.
9370When reading the register, zero the write-only bits as per the ACPI spec.
9371ACPICA BZ 443. Lin Ming.
9372
9373Removed "Linux" from the list of supported _OSI strings. Linux no longer
9374wants to reply true to this request. The Windows strings are the only
9375paths
9376through the AML that are tested and known to work properly.
9377
9378  Previous Release:
9379    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
9380    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
9381  Current Release:
9382    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
9383    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
9384
93852) iASL Compiler/Disassembler and Tools:
9386
9387Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
9388and
9389aetables.c
9390
9391----------------------------------------
939220 February 2009. Summary of changes for version 20090220:
9393
93941) ACPI CA Core Subsystem:
9395
9396Optimized the ACPI register locking. Removed locking for reads from the
9397ACPI
9398bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
9399is
9400not required when reading the single-bit registers. The
9401AcpiGetRegisterUnlocked function is no longer needed and has been
9402removed.
9403This will improve performance for reads on these registers. ACPICA BZ
9404760.
9405
9406Fixed the parameter validation for AcpiRead/Write. Now return
9407AE_BAD_PARAMETER if the input register pointer is null, and
9408AE_BAD_ADDRESS
9409if
9410the register has an address of zero. Previously, these cases simply
9411returned
9412AE_OK. For optional registers such as PM1B status/enable/control, the
9413caller
9414should check for a valid register address before calling. ACPICA BZ 748.
9415
9416Renamed the external ACPI bit register access functions. Renamed
9417AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
9418functions. The new names are AcpiReadBitRegister and
9419AcpiWriteBitRegister.
9420Also, restructured the code for these functions by simplifying the code
9421path
9422and condensing duplicate code to reduce code size.
9423
9424Added new functions to transparently handle the possibly split PM1 A/B
9425registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
9426functions
9427now handle the split registers for PM1 Status, Enable, and Control.
9428ACPICA
9429BZ
9430746.
9431
9432Added a function to handle the PM1 control registers,
9433AcpiHwWritePm1Control.
9434This function writes both of the PM1 control registers (A/B). These
9435registers
9436are different than the PM1 A/B status and enable registers in that
9437different
9438values can be written to the A/B registers. Most notably, the SLP_TYP
9439bits
9440can be different, as per the values returned from the _Sx predefined
9441methods.
9442
9443Removed an extra register write within AcpiHwClearAcpiStatus. This
9444function
9445was writing an optional PM1B status register twice. The existing call to
9446the
9447low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
9448A/B
9449register. ACPICA BZ 751.
9450
9451Split out the PM1 Status registers from the FADT. Added new globals for
9452these
9453registers (A/B), similar to the way the PM1 Enable registers are handled.
9454Instead of overloading the FADT Event Register blocks. This makes the
9455code
9456clearer and less prone to error.
9457
9458Fixed the warning message for when the platform contains too many ACPI
9459tables
9460for the default size of the global root table data structure. The
9461calculation
9462for the truncation value was incorrect.
9463
9464Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
9465obsolete macro, since it is now a simple reference to ->common.type.
9466There
9467were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
9468
9469Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
9470TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
9471simply SLEEP_TYPE. ACPICA BZ 754.
9472
9473Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
9474function is only needed on 64-bit host operating systems and is thus not
9475included for 32-bit hosts.
9476
9477Debug output: print the input and result for invocations of the _OSI
9478reserved
9479control method via the ACPI_LV_INFO debug level. Also, reduced some of
9480the
9481verbosity of this debug level. Len Brown.
9482
9483Example Code and Data Size: These are the sizes for the OS-independent
9484acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9485debug version of the code includes the debug output trace mechanism and
9486has a
9487much larger code and data size.
9488
9489  Previous Release:
9490    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
9491    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
9492  Current Release:
9493    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
9494    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
9495
94962) iASL Compiler/Disassembler and Tools:
9497
9498Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
9499various legal performance profiles.
9500
9501----------------------------------------
950223 January 2009. Summary of changes for version 20090123:
9503
95041) ACPI CA Core Subsystem:
9505
9506Added the 2009 copyright to all module headers and signons. This affects
9507virtually every file in the ACPICA core subsystem, the iASL compiler, and
9508the tools/utilities.
9509
9510Implemented a change to allow the host to override any ACPI table,
9511including
9512dynamically loaded tables. Previously, only the DSDT could be replaced by
9513the
9514host. With this change, the AcpiOsTableOverride interface is called for
9515each
9516table found in the RSDT/XSDT during ACPICA initialization, and also
9517whenever
9518a table is dynamically loaded via the AML Load operator.
9519
9520Updated FADT flag definitions, especially the Boot Architecture flags.
9521
9522Debugger: For the Find command, automatically pad the input ACPI name
9523with
9524underscores if the name is shorter than 4 characters. This enables a
9525match
9526with the actual namespace entry which is itself padded with underscores.
9527
9528Example Code and Data Size: These are the sizes for the OS-independent
9529acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9530debug version of the code includes the debug output trace mechanism and
9531has a
9532much larger code and data size.
9533
9534  Previous Release:
9535    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
9536    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
9537  Current Release:
9538    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
9539    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
9540
95412) iASL Compiler/Disassembler and Tools:
9542
9543Fix build error under Bison-2.4.
9544
9545Disassembler: Enhanced FADT support. Added decoding of the Boot
9546Architecture
9547flags. Now decode all flags, regardless of the FADT version. Flag output
9548includes the FADT version which first defined each flag.
9549
9550The iASL -g option now dumps the RSDT to a file (in addition to the FADT
9551and
9552DSDT). Windows only.
9553
9554----------------------------------------
955504 December 2008. Summary of changes for version 20081204:
9556
95571) ACPI CA Core Subsystem:
9558
9559The ACPICA Programmer Reference has been completely updated and revamped
9560for
9561this release. This includes updates to the external interfaces, OSL
9562interfaces, the overview sections, and the debugger reference.
9563
9564Several new ACPICA interfaces have been implemented and documented in the
9565programmer reference:
9566AcpiReset - Writes the reset value to the FADT-defined reset register.
9567AcpiDisableAllGpes - Disable all available GPEs.
9568AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
9569AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
9570AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
9571AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
9572AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
9573
9574Most of the public ACPI hardware-related interfaces have been moved to a
9575new
9576file, components/hardware/hwxface.c
9577
9578Enhanced the FADT parsing and low-level ACPI register access: The ACPI
9579register lengths within the FADT are now used, and the low level ACPI
9580register access no longer hardcodes the ACPI register lengths. Given that
9581there may be some risk in actually trusting the FADT register lengths, a
9582run-
9583time option was added to fall back to the default hardcoded lengths if
9584the
9585FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
9586option is set to true for now, and a warning is issued if a suspicious
9587FADT
9588register length is overridden with the default value.
9589
9590Fixed a reference count issue in NsRepairObject. This problem was
9591introduced
9592in version 20081031 as part of a fix to repair Buffer objects within
9593Packages. Lin Ming.
9594
9595Added semaphore support to the Linux/Unix application OS-services layer
9596(OSL). ACPICA BZ 448. Lin Ming.
9597
9598Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
9599will
9600be implemented in the OSL, or will binary semaphores be used instead.
9601
9602Example Code and Data Size: These are the sizes for the OS-independent
9603acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9604debug version of the code includes the debug output trace mechanism and
9605has a
9606much larger code and data size.
9607
9608  Previous Release:
9609    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
9610    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
9611  Current Release:
9612    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
9613    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
9614
96152) iASL Compiler/Disassembler and Tools:
9616
9617iASL: Completed the '-e' option to include additional ACPI tables in
9618order
9619to
9620aid with disassembly and External statement generation. ACPICA BZ 742.
9621Lin
9622Ming.
9623
9624iASL: Removed the "named object in while loop" error. The compiler cannot
9625determine how many times a loop will execute. ACPICA BZ 730.
9626
9627Disassembler: Implemented support for FADT revision 2 (MS extension).
9628ACPICA
9629BZ 743.
9630
9631Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
9632MCFG).
9633
9634----------------------------------------
963531 October 2008. Summary of changes for version 20081031:
9636
96371) ACPI CA Core Subsystem:
9638
9639Restructured the ACPICA header files into public/private. acpi.h now
9640includes
9641only the "public" acpica headers. All other acpica headers are "private"
9642and
9643should not be included by acpica users. One new file, accommon.h is used
9644to
9645include the commonly used private headers for acpica code generation.
9646Future
9647plans include moving all private headers to a new subdirectory.
9648
9649Implemented an automatic Buffer->String return value conversion for
9650predefined ACPI methods. For these methods (such as _BIF), added
9651automatic
9652conversion for return objects that are required to be a String, but a
9653Buffer
9654was found instead. This can happen when reading string battery data from
9655an
9656operation region, because it used to be difficult to convert the data
9657from
9658buffer to string from within the ASL. Ensures that the host OS is
9659provided
9660with a valid null-terminated string. Linux BZ 11822.
9661
9662Updated the FACS waking vector interfaces. Split
9663AcpiSetFirmwareWakingVector
9664into two: one for the 32-bit vector, another for the 64-bit vector. This
9665is
9666required because the host OS must setup the wake much differently for
9667each
9668vector (real vs. protected mode, etc.) and the interface itself should
9669not
9670be
9671deciding which vector to use. Also, eliminated the
9672GetFirmwareWakingVector
9673interface, as it served no purpose (only the firmware reads the vector,
9674OS
9675only writes the vector.) ACPICA BZ 731.
9676
9677Implemented a mechanism to escape infinite AML While() loops. Added a
9678loop
9679counter to force exit from AML While loops if the count becomes too
9680large.
9681This can occur in poorly written AML when the hardware does not respond
9682within a while loop and the loop does not implement a timeout. The
9683maximum
9684loop count is configurable. A new exception code is returned when a loop
9685is
9686broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
9687
9688Optimized the execution of AML While loops. Previously, a control state
9689object was allocated and freed for each execution of the loop. The
9690optimization is to simply reuse the control state for each iteration.
9691This
9692speeds up the raw loop execution time by about 5%.
9693
9694Enhanced the implicit return mechanism. For Windows compatibility, return
9695an
9696implicit integer of value zero for methods that contain no executable
9697code.
9698Such methods are seen in the field as stubs (presumably), and can cause
9699drivers to fail if they expect a return value. Lin Ming.
9700
9701Allow multiple backslashes as root prefixes in namepaths. In a fully
9702qualified namepath, allow multiple backslash prefixes. This can happen
9703(and
9704is seen in the field) because of the use of a double-backslash in strings
9705(since backslash is the escape character) causing confusion. ACPICA BZ
9706739
9707Lin Ming.
9708
9709Emit a warning if two different FACS or DSDT tables are discovered in the
9710FADT. Checks if there are two valid but different addresses for the FACS
9711and
9712DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
9713
9714Consolidated the method argument count validation code. Merged the code
9715that
9716validates control method argument counts into the predefined validation
9717module. Eliminates possible multiple warnings for incorrect argument
9718counts.
9719
9720Implemented ACPICA example code. Includes code for ACPICA initialization,
9721handler installation, and calling a control method. Available at
9722source/tools/examples.
9723
9724Added a global pointer for FACS table to simplify internal FACS access.
9725Use
9726the global pointer instead of using AcpiGetTableByIndex for each FACS
9727access.
9728This simplifies the code for the Global Lock and the Firmware Waking
9729Vector(s).
9730
9731Example Code and Data Size: These are the sizes for the OS-independent
9732acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9733debug version of the code includes the debug output trace mechanism and
9734has a
9735much larger code and data size.
9736
9737  Previous Release:
9738    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
9739    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
9740  Current Release:
9741    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
9742    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
9743
97442) iASL Compiler/Disassembler and Tools:
9745
9746iASL: Improved disassembly of external method calls. Added the -e option
9747to
9748allow the inclusion of additional ACPI tables to help with the
9749disassembly
9750of
9751method invocations and the generation of external declarations during the
9752disassembly. Certain external method invocations cannot be disassembled
9753properly without the actual declaration of the method. Use the -e option
9754to
9755include the table where the external method(s) are actually declared.
9756Most
9757useful for disassembling SSDTs that make method calls back to the master
9758DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
9759-d
9760-e dsdt.aml ssdt1.aml
9761
9762iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
9763problem where the use of an alias within a namepath would result in a not
9764found error or cause the compiler to fault. Also now allows forward
9765references from the Alias operator itself. ACPICA BZ 738.
9766
9767----------------------------------------
976826 September 2008. Summary of changes for version 20080926:
9769
97701) ACPI CA Core Subsystem:
9771
9772Designed and implemented a mechanism to validate predefined ACPI methods
9773and
9774objects. This code validates the predefined ACPI objects (objects whose
9775names
9776start with underscore) that appear in the namespace, at the time they are
9777evaluated. The argument count and the type of the returned object are
9778validated against the ACPI specification. The purpose of this validation
9779is
9780to detect problems with the BIOS-implemented predefined ACPI objects
9781before
9782the results are returned to the ACPI-related drivers. Future enhancements
9783may
9784include actual repair of incorrect return objects where possible. Two new
9785files are nspredef.c and acpredef.h.
9786
9787Fixed a fault in the AML parser if a memory allocation fails during the
9788Op
9789completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
9790
9791Fixed an issue with implicit return compatibility. This change improves
9792the
9793implicit return mechanism to be more compatible with the MS interpreter.
9794Lin
9795Ming, ACPICA BZ 349.
9796
9797Implemented support for zero-length buffer-to-string conversions. Allow
9798zero
9799length strings during interpreter buffer-to-string conversions. For
9800example,
9801during the ToDecimalString and ToHexString operators, as well as implicit
9802conversions. Fiodor Suietov, ACPICA BZ 585.
9803
9804Fixed two possible memory leaks in the error exit paths of
9805AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
9806are
9807similar in that they use a stack of state objects in order to eliminate
9808recursion. The stack must be fully unwound and deallocated if an error
9809occurs. Lin Ming. ACPICA BZ 383.
9810
9811Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
9812global
9813ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
9814Moore ACPICA BZ 442.
9815
9816Removed the obsolete version number in module headers. Removed the
9817"$Revision" number that appeared in each module header. This version
9818number
9819was useful under SourceSafe and CVS, but has no meaning under git. It is
9820not
9821only incorrect, it could also be misleading.
9822
9823Example Code and Data Size: These are the sizes for the OS-independent
9824acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9825debug version of the code includes the debug output trace mechanism and
9826has a
9827much larger code and data size.
9828
9829  Previous Release:
9830    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9831    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
9832  Current Release:
9833    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
9834    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
9835
9836----------------------------------------
983729 August 2008. Summary of changes for version 20080829:
9838
98391) ACPI CA Core Subsystem:
9840
9841Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
9842Reference. Changes include the elimination of cheating on the Object
9843field
9844for the DdbHandle subtype, addition of a reference class field to
9845differentiate the various reference types (instead of an AML opcode), and
9846the
9847cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
9848
9849Reduce an error to a warning for an incorrect method argument count.
9850Previously aborted with an error if too few arguments were passed to a
9851control method via the external ACPICA interface. Now issue a warning
9852instead
9853and continue. Handles the case where the method inadvertently declares
9854too
9855many arguments, but does not actually use the extra ones. Applies mainly
9856to
9857the predefined methods. Lin Ming. Linux BZ 11032.
9858
9859Disallow the evaluation of named object types with no intrinsic value.
9860Return
9861AE_TYPE for objects that have no value and therefore evaluation is
9862undefined:
9863Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
9864of
9865these types were allowed, but an exception would be generated at some
9866point
9867during the evaluation. Now, the error is generated up front.
9868
9869Fixed a possible memory leak in the AcpiNsGetExternalPathname function
9870(nsnames.c). Fixes a leak in the error exit path.
9871
9872Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
9873debug
9874levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
9875ACPI_EXCEPTION
9876interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
9877ACPI_LV_EVENTS.
9878
9879Removed obsolete and/or unused exception codes from the acexcep.h header.
9880There is the possibility that certain device drivers may be affected if
9881they
9882use any of these exceptions.
9883
9884The ACPICA documentation has been added to the public git source tree,
9885under
9886acpica/documents. Included are the ACPICA programmer reference, the iASL
9887compiler reference, and the changes.txt release logfile.
9888
9889Example Code and Data Size: These are the sizes for the OS-independent
9890acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9891debug version of the code includes the debug output trace mechanism and
9892has a
9893much larger code and data size.
9894
9895  Previous Release:
9896    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9897    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
9898  Current Release:
9899    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9900    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
9901
99022) iASL Compiler/Disassembler and Tools:
9903
9904Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
9905defines _SCP with 3 arguments. Previous versions defined it with only 1
9906argument. iASL now allows both definitions.
9907
9908iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
9909zero-
9910length subtables when disassembling ACPI tables. Also fixed a couple of
9911errors where a full 16-bit table type field was not extracted from the
9912input
9913properly.
9914
9915acpisrc: Improve comment counting mechanism for generating source code
9916statistics. Count first and last lines of multi-line comments as
9917whitespace,
9918not comment lines. Handle Linux legal header in addition to standard
9919acpica
9920header.
9921
9922----------------------------------------
9923
992429 July 2008. Summary of changes for version 20080729:
9925
99261) ACPI CA Core Subsystem:
9927
9928Fix a possible deadlock in the GPE dispatch. Remove call to
9929AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
9930attempt
9931to acquire the GPE lock but can deadlock since the GPE lock is already
9932held
9933at dispatch time. This code was introduced in version 20060831 as a
9934response
9935to Linux BZ 6881 and has since been removed from Linux.
9936
9937Add a function to dereference returned reference objects. Examines the
9938return
9939object from a call to AcpiEvaluateObject. Any Index or RefOf references
9940are
9941automatically dereferenced in an attempt to return something useful
9942(these
9943reference types cannot be converted into an external ACPI_OBJECT.)
9944Provides
9945MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
9946
9947x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
9948subtables for the MADT and one new subtable for the SRAT. Includes
9949disassembler and AcpiSrc support. Data from the Intel 64 Architecture
9950x2APIC
9951Specification, June 2008.
9952
9953Additional error checking for pathname utilities. Add error check after
9954all
9955calls to AcpiNsGetPathnameLength. Add status return from
9956AcpiNsBuildExternalPath and check after all calls. Add parameter
9957validation
9958to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
9959
9960Return status from the global init function AcpiUtGlobalInitialize. This
9961is
9962used by both the kernel subsystem and the utilities such as iASL
9963compiler.
9964The function could possibly fail when the caches are initialized. Yang
9965Yi.
9966
9967Add a function to decode reference object types to strings. Created for
9968improved error messages.
9969
9970Improve object conversion error messages. Better error messages during
9971object
9972conversion from internal to the external ACPI_OBJECT. Used for external
9973calls
9974to AcpiEvaluateObject.
9975
9976Example Code and Data Size: These are the sizes for the OS-independent
9977acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9978debug version of the code includes the debug output trace mechanism and
9979has a
9980much larger code and data size.
9981
9982  Previous Release:
9983    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
9984    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
9985  Current Release:
9986    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9987    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
9988
99892) iASL Compiler/Disassembler and Tools:
9990
9991Debugger: fix a possible hang when evaluating non-methods. Fixes a
9992problem
9993introduced in version 20080701. If the object being evaluated (via
9994execute
9995command) is not a method, the debugger can hang while trying to obtain
9996non-
9997existent parameters.
9998
9999iASL: relax error for using reserved "_T_x" identifiers. These names can
10000appear in a disassembled ASL file if they were emitted by the original
10001compiler. Instead of issuing an error or warning and forcing the user to
10002manually change these names, issue a remark instead.
10003
10004iASL: error if named object created in while loop. Emit an error if any
10005named
10006object is created within a While loop. If allowed, this code will
10007generate
10008a
10009run-time error on the second iteration of the loop when an attempt is
10010made
10011to
10012create the same named object twice. ACPICA bugzilla 730.
10013
10014iASL: Support absolute pathnames for include files. Add support for
10015absolute
10016pathnames within the Include operator. previously, only relative
10017pathnames
10018were supported.
10019
10020iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
10021Descriptor.
10022The ACPI spec requires one interrupt minimum. BZ 423
10023
10024iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
10025Handles the case for the Interrupt Resource Descriptor where
10026the ResourceSource argument is omitted but ResourceSourceIndex
10027is present. Now leave room for the Index. BZ 426
10028
10029iASL: Prevent error message if CondRefOf target does not exist. Fixes
10030cases
10031where an error message is emitted if the target does not exist. BZ 516
10032
10033iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
10034(get ACPI tables on Windows). This was apparently broken in version
1003520070919.
10036
10037AcpiXtract: Handle EOF while extracting data. Correctly handle the case
10038where
10039the EOF happens immediately after the last table in the input file. Print
10040completion message. Previously, no message was displayed in this case.
10041
10042----------------------------------------
1004301 July 2008. Summary of changes for version 20080701:
10044
100450) Git source tree / acpica.org
10046
10047Fixed a problem where a git-clone from http would not transfer the entire
10048source tree.
10049
100501) ACPI CA Core Subsystem:
10051
10052Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
10053enable bit. Now performs a read-change-write of the enable register
10054instead
10055of simply writing out the cached enable mask. This will prevent
10056inadvertent
10057enabling of GPEs if a rogue GPE is received during initialization (before
10058GPE
10059handlers are installed.)
10060
10061Implemented a copy for dynamically loaded tables. Previously, dynamically
10062loaded tables were simply mapped - but on some machines this memory is
10063corrupted after suspend. Now copy the table to a local buffer. For the
10064OpRegion case, added checksum verify. Use the table length from the table
10065header, not the region length. For the Buffer case, use the table length
10066also. Dennis Noordsij, Bob Moore. BZ 10734
10067
10068Fixed a problem where the same ACPI table could not be dynamically loaded
10069and
10070unloaded more than once. Without this change, a table cannot be loaded
10071again
10072once it has been loaded/unloaded one time. The current mechanism does not
10073unregister a table upon an unload. During a load, if the same table is
10074found,
10075this no longer returns an exception. BZ 722
10076
10077Fixed a problem where the wrong descriptor length was calculated for the
10078EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
10079EndTag
10080are calculated as 12 bytes long, but the actual length in the internal
10081descriptor is 16 because of the round-up to 8 on the 64-bit build.
10082Reported
10083by Linn Crosetto. BZ 728
10084
10085Fixed a possible memory leak in the Unload operator. The DdbHandle
10086returned
10087by Load() did not have its reference count decremented during unload,
10088leading
10089to a memory leak. Lin Ming. BZ 727
10090
10091Fixed a possible memory leak when deleting thermal/processor objects. Any
10092associated notify handlers (and objects) were not being deleted. Fiodor
10093Suietov. BZ 506
10094
10095Fixed the ordering of the ASCII names in the global mutex table to match
10096the
10097actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
10098only.
10099Vegard Nossum. BZ 726
10100
10101Enhanced the AcpiGetObjectInfo interface to return the number of required
10102arguments if the object is a control method. Added this call to the
10103debugger
10104so the proper number of default arguments are passed to a method. This
10105prevents a warning when executing methods from AcpiExec.
10106
10107Added a check for an invalid handle in AcpiGetObjectInfo. Return
10108AE_BAD_PARAMETER if input handle is invalid. BZ 474
10109
10110Fixed an extraneous warning from exconfig.c on the 64-bit build.
10111
10112Example Code and Data Size: These are the sizes for the OS-independent
10113acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10114debug version of the code includes the debug output trace mechanism and
10115has a
10116much larger code and data size.
10117
10118  Previous Release:
10119    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
10120    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
10121  Current Release:
10122    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
10123    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
10124
101252) iASL Compiler/Disassembler and Tools:
10126
10127iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
10128resource descriptor names.
10129
10130iASL: Detect invalid ASCII characters in input (windows version). Removed
10131the
10132"-CF" flag from the flex compile, enables correct detection of non-ASCII
10133characters in the input. BZ 441
10134
10135iASL: Eliminate warning when result of LoadTable is not used. Eliminate
10136the
10137"result of operation not used" warning when the DDB handle returned from
10138LoadTable is not used. The warning is not needed. BZ 590
10139
10140AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
10141method
10142to
10143pass address of table to the AML. Added option to disable OpRegion
10144simulation
10145to allow creation of an OpRegion with a real address that was passed to
10146_CFG.
10147All of this allows testing of the Load and Unload operators from
10148AcpiExec.
10149
10150Debugger: update tables command for unloaded tables. Handle unloaded
10151tables
10152and use the standard table header output routine.
10153
10154----------------------------------------
1015509 June 2008. Summary of changes for version 20080609:
10156
101571) ACPI CA Core Subsystem:
10158
10159Implemented a workaround for reversed _PRT entries. A significant number
10160of
10161BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
10162change dynamically detects and repairs this problem. Provides
10163compatibility
10164with MS ACPI. BZ 6859
10165
10166Simplified the internal ACPI hardware interfaces to eliminate the locking
10167flag parameter from Register Read/Write. Added a new external interface,
10168AcpiGetRegisterUnlocked.
10169
10170Fixed a problem where the invocation of a GPE control method could hang.
10171This
10172was a regression introduced in 20080514. The new method argument count
10173validation mechanism can enter an infinite loop when a GPE method is
10174dispatched. Problem fixed by removing the obsolete code that passed GPE
10175block
10176information to the notify handler via the control method parameter
10177pointer.
10178
10179Fixed a problem where the _SST execution status was incorrectly returned
10180to
10181the caller of AcpiEnterSleepStatePrep. This was a regression introduced
10182in
1018320080514. _SST is optional and a NOT_FOUND exception should never be
10184returned. BZ 716
10185
10186Fixed a problem where a deleted object could be accessed from within the
10187AML
10188parser. This was a regression introduced in version 20080123 as a fix for
10189the
10190Unload operator. Lin Ming. BZ 10669
10191
10192Cleaned up the debug operand dump mechanism. Eliminated unnecessary
10193operands
10194and eliminated the use of a negative index in a loop. Operands are now
10195displayed in the correct order, not backwards. This also fixes a
10196regression
10197introduced in 20080514 on 64-bit systems where the elimination of
10198ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
10199715
10200
10201Fixed a possible memory leak in EvPciConfigRegionSetup where the error
10202exit
10203path did not delete a locally allocated structure.
10204
10205Updated definitions for the DMAR and SRAT tables to synchronize with the
10206current specifications. Includes disassembler support.
10207
10208Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
10209loop termination value was used. Loop terminated on iteration early,
10210missing
10211one mutex. Linn Crosetto
10212
10213Example Code and Data Size: These are the sizes for the OS-independent
10214acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10215debug version of the code includes the debug output trace mechanism and
10216has a
10217much larger code and data size.
10218
10219  Previous Release:
10220    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
10221    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
10222  Current Release:
10223    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
10224    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
10225
102262) iASL Compiler/Disassembler and Tools:
10227
10228Disassembler: Implemented support for EisaId() within _CID objects. Now
10229disassemble integer _CID objects back to EisaId invocations, including
10230multiple integers within _CID packages. Includes single-step support for
10231debugger also.
10232
10233Disassembler: Added support for DMAR and SRAT table definition changes.
10234
10235----------------------------------------
1023614 May 2008. Summary of changes for version 20080514:
10237
102381) ACPI CA Core Subsystem:
10239
10240Fixed a problem where GPEs were enabled too early during the ACPICA
10241initialization. This could lead to "handler not installed" errors on some
10242machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
10243This
10244ensures that all operation regions and devices throughout the namespace
10245have
10246been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
10247
10248Implemented a change to the enter sleep code. Moved execution of the _GTS
10249method to just before setting sleep enable bit. The execution was moved
10250from
10251AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
10252immediately before the SLP_EN bit is set, as per the ACPI specification.
10253Luming Yu, BZ 1653.
10254
10255Implemented a fix to disable unknown GPEs (2nd version). Now always
10256disable
10257the GPE, even if ACPICA thinks that that it is already disabled. It is
10258possible that the AML or some other code has enabled the GPE unbeknownst
10259to
10260the ACPICA code.
10261
10262Fixed a problem with the Field operator where zero-length fields would
10263return
10264an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
10265ASL
10266field declarations in Field(), BankField(), and IndexField(). BZ 10606.
10267
10268Implemented a fix for the Load operator, now load the table at the
10269namespace
10270root. This reverts a change introduced in version 20071019. The table is
10271now
10272loaded at the namespace root even though this goes against the ACPI
10273specification. This provides compatibility with other ACPI
10274implementations.
10275The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
10276Ming.
10277
10278Fixed a problem where ACPICA would not Load() tables with unusual
10279signatures.
10280Now ignore ACPI table signature for Load() operator. Only "SSDT" is
10281acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
10282Therefore, signature validation is worthless. Apparently MS ACPI accepts
10283such
10284signatures, ACPICA must be compatible. BZ 10454.
10285
10286Fixed a possible negative array index in AcpiUtValidateException. Added
10287NULL
10288fields to the exception string arrays to eliminate a -1 subtraction on
10289the
10290SubStatus field.
10291
10292Updated the debug tracking macros to reduce overall code and data size.
10293Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
10294instead of pointers to static strings. Jan Beulich and Bob Moore.
10295
10296Implemented argument count checking in control method invocation via
10297AcpiEvaluateObject. Now emit an error if too few arguments, warning if
10298too
10299many. This applies only to extern programmatic control method execution,
10300not
10301method-to-method calls within the AML. Lin Ming.
10302
10303Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
10304no
10305longer needed, especially with the removal of 16-bit support. It was
10306replaced
10307mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
10308bit
10309on
1031032/64-bit platforms is required.
10311
10312Added the C const qualifier for appropriate string constants -- mostly
10313MODULE_NAME and printf format strings. Jan Beulich.
10314
10315Example Code and Data Size: These are the sizes for the OS-independent
10316acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10317debug version of the code includes the debug output trace mechanism and
10318has a
10319much larger code and data size.
10320
10321  Previous Release:
10322    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
10323    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
10324  Current Release:
10325    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
10326    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
10327
103282) iASL Compiler/Disassembler and Tools:
10329
10330Implemented ACPI table revision ID validation in the disassembler. Zero
10331is
10332always invalid. For DSDTs, the ID controls the interpreter integer width.
103331
10334means 32-bit and this is unusual. 2 or greater is 64-bit.
10335
10336----------------------------------------
1033721 March 2008. Summary of changes for version 20080321:
10338
103391) ACPI CA Core Subsystem:
10340
10341Implemented an additional change to the GPE support in order to suppress
10342spurious or stray GPEs. The AcpiEvDisableGpe function will now
10343permanently
10344disable incoming GPEs that are neither enabled nor disabled -- meaning
10345that
10346the GPE is unknown to the system. This should prevent future interrupt
10347floods
10348from that GPE. BZ 6217 (Zhang Rui)
10349
10350Fixed a problem where NULL package elements were not returned to the
10351AcpiEvaluateObject interface correctly. The element was simply ignored
10352instead of returning a NULL ACPI_OBJECT package element, potentially
10353causing
10354a buffer overflow and/or confusing the caller who expected a fixed number
10355of
10356elements. BZ 10132 (Lin Ming, Bob Moore)
10357
10358Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
10359Dword,
10360Qword), Field, BankField, and IndexField operators when invoked from
10361inside
10362an executing control method. In this case, these operators created
10363namespace
10364nodes that were incorrectly left marked as permanent nodes instead of
10365temporary nodes. This could cause a problem if there is race condition
10366between an exiting control method and a running namespace walk. (Reported
10367by
10368Linn Crosetto)
10369
10370Fixed a problem where the CreateField and CreateXXXField operators would
10371incorrectly allow duplicate names (the name of the field) with no
10372exception
10373generated.
10374
10375Implemented several changes for Notify handling. Added support for new
10376Notify
10377values (ACPI 2.0+) and improved the Notify debug output. Notify on
10378PowerResource objects is no longer allowed, as per the ACPI
10379specification.
10380(Bob Moore, Zhang Rui)
10381
10382All Reference Objects returned via the AcpiEvaluateObject interface are
10383now
10384marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
10385for
10386NULL objects - either NULL package elements or unresolved named
10387references.
10388
10389Fixed a problem where an extraneous debug message was produced for
10390package
10391objects (when debugging enabled). The message "Package List length larger
10392than NumElements count" is now produced in the correct case, and is now
10393an
10394error message rather than a debug message. Added a debug message for the
10395opposite case, where NumElements is larger than the Package List (the
10396package
10397will be padded out with NULL elements as per the ACPI spec.)
10398
10399Implemented several improvements for the output of the ASL "Debug" object
10400to
10401clarify and keep all data for a given object on one output line.
10402
10403Fixed two size calculation issues with the variable-length Start
10404Dependent
10405resource descriptor.
10406
10407Example Code and Data Size: These are the sizes for the OS-independent
10408acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10409debug version of the code includes the debug output trace mechanism and
10410has
10411a much larger code and data size.
10412
10413  Previous Release:
10414    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
10415    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
10416  Current Release:
10417    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
10418    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
10419
104202) iASL Compiler/Disassembler and Tools:
10421
10422Fixed a problem with the use of the Switch operator where execution of
10423the
10424containing method by multiple concurrent threads could cause an
10425AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
10426actual Switch opcode, it must be simulated with local named temporary
10427variables and if/else pairs. The solution chosen was to mark any method
10428that
10429uses Switch as Serialized, thus preventing multiple thread entries. BZ
10430469.
10431
10432----------------------------------------
1043313 February 2008. Summary of changes for version 20080213:
10434
104351) ACPI CA Core Subsystem:
10436
10437Implemented another MS compatibility design change for GPE/Notify
10438handling.
10439GPEs are now cleared/enabled asynchronously to allow all pending notifies
10440to
10441complete first. It is expected that the OSL will queue the enable request
10442behind all pending notify requests (may require changes to the local host
10443OSL
10444in AcpiOsExecute). Alexey Starikovskiy.
10445
10446Fixed a problem where buffer and package objects passed as arguments to a
10447control method via the external AcpiEvaluateObject interface could cause
10448an
10449AE_AML_INTERNAL exception depending on the order and type of operators
10450executed by the target control method.
10451
10452Fixed a problem where resource descriptor size optimization could cause a
10453problem when a _CRS resource template is passed to a _SRS method. The
10454_SRS
10455resource template must use the same descriptors (with the same size) as
10456returned from _CRS. This change affects the following resource
10457descriptors:
10458IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
104599487)
10460
10461Fixed a problem where a CopyObject to RegionField, BankField, and
10462IndexField
10463objects did not perform an implicit conversion as it should. These types
10464must
10465retain their initial type permanently as per the ACPI specification.
10466However,
10467a CopyObject to all other object types should not perform an implicit
10468conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
10469
10470Fixed a problem with the AcpiGetDevices interface where the mechanism to
10471match device CIDs did not examine the entire list of available CIDs, but
10472instead aborted on the first non-matching CID. Andrew Patterson.
10473
10474Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
10475was
10476inadvertently changed to return a 16-bit value instead of a 32-bit value,
10477truncating the upper dword of a 64-bit value. This macro is only used to
10478display debug output, so no incorrect calculations were made. Also,
10479reimplemented the macro so that a 64-bit shift is not performed by
10480inefficient compilers.
10481
10482Added missing va_end statements that should correspond with each va_start
10483statement.
10484
10485Example Code and Data Size: These are the sizes for the OS-independent
10486acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10487debug version of the code includes the debug output trace mechanism and
10488has
10489a much larger code and data size.
10490
10491  Previous Release:
10492    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
10493    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
10494  Current Release:
10495    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
10496    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
10497
104982) iASL Compiler/Disassembler and Tools:
10499
10500Implemented full disassembler support for the following new ACPI tables:
10501BERT, EINJ, and ERST. Implemented partial disassembler support for the
10502complicated HEST table. These tables support the Windows Hardware Error
10503Architecture (WHEA).
10504
10505----------------------------------------
1050623 January 2008. Summary of changes for version 20080123:
10507
105081) ACPI CA Core Subsystem:
10509
10510Added the 2008 copyright to all module headers and signons. This affects
10511virtually every file in the ACPICA core subsystem, the iASL compiler, and
10512the tools/utilities.
10513
10514Fixed a problem with the SizeOf operator when used with Package and
10515Buffer
10516objects. These objects have deferred execution for some arguments, and
10517the
10518execution is now completed before the SizeOf is executed. This problem
10519caused
10520unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
10521BZ
105229558
10523
10524Implemented an enhancement to the interpreter "slack mode". In the
10525absence
10526of
10527an explicit return or an implicitly returned object from the last
10528executed
10529opcode, a control method will now implicitly return an integer of value 0
10530for
10531Microsoft compatibility. (Lin Ming) BZ 392
10532
10533Fixed a problem with the Load operator where an exception was not
10534returned
10535in
10536the case where the table is already loaded. (Lin Ming) BZ 463
10537
10538Implemented support for the use of DDBHandles as an Indexed Reference, as
10539per
10540the ACPI spec. (Lin Ming) BZ 486
10541
10542Implemented support for UserTerm (Method invocation) for the Unload
10543operator
10544as per the ACPI spec. (Lin Ming) BZ 580
10545
10546Fixed a problem with the LoadTable operator where the OemId and
10547OemTableId
10548input strings could cause unexpected failures if they were shorter than
10549the
10550maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
10551
10552Implemented support for UserTerm (Method invocation) for the Unload
10553operator
10554as per the ACPI spec. (Lin Ming) BZ 580
10555
10556Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
10557HEST,
10558IBFT, UEFI, WDAT. Disassembler support is forthcoming.
10559
10560Example Code and Data Size: These are the sizes for the OS-independent
10561acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10562debug version of the code includes the debug output trace mechanism and
10563has
10564a much larger code and data size.
10565
10566  Previous Release:
10567    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
10568    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
10569  Current Release:
10570    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
10571    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
10572
105732) iASL Compiler/Disassembler and Tools:
10574
10575Implemented support in the disassembler for checksum validation on
10576incoming
10577binary DSDTs and SSDTs. If incorrect, a message is displayed within the
10578table
10579header dump at the start of the disassembly.
10580
10581Implemented additional debugging information in the namespace listing
10582file
10583created during compilation. In addition to the namespace hierarchy, the
10584full
10585pathname to each namespace object is displayed.
10586
10587Fixed a problem with the disassembler where invalid ACPI tables could
10588cause
10589faults or infinite loops.
10590
10591Fixed an unexpected parse error when using the optional "parameter types"
10592list in a control method declaration. (Lin Ming) BZ 397
10593
10594Fixed a problem where two External declarations with the same name did
10595not
10596cause an error (Lin Ming) BZ 509
10597
10598Implemented support for full TermArgs (adding Argx, Localx and method
10599invocation) for the ParameterData parameter to the LoadTable operator.
10600(Lin
10601Ming) BZ 583,587
10602
10603----------------------------------------
1060419 December 2007. Summary of changes for version 20071219:
10605
106061) ACPI CA Core Subsystem:
10607
10608Implemented full support for deferred execution for the TermArg string
10609arguments for DataTableRegion. This enables forward references and full
10610operand resolution for the three string arguments. Similar to
10611OperationRegion
10612deferred argument execution.) Lin Ming. BZ 430
10613
10614Implemented full argument resolution support for the BankValue argument
10615to
10616BankField. Previously, only constants were supported, now any TermArg may
10617be
10618used. Lin Ming BZ 387, 393
10619
10620Fixed a problem with AcpiGetDevices where the search of a branch of the
10621device tree could be terminated prematurely. In accordance with the ACPI
10622specification, the search down the current branch is terminated if a
10623device
10624is both not present and not functional (instead of just not present.)
10625Yakui
10626Zhao.
10627
10628Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
10629if
10630the underlying AML code changed the GPE enable registers. Now, any
10631unknown
10632incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
10633disabled
10634instead of simply ignored. Rui Zhang.
10635
10636Fixed a problem with Index Fields where the Index register was
10637incorrectly
10638limited to a maximum of 32 bits. Now any size may be used.
10639
10640Fixed a couple memory leaks associated with "implicit return" objects
10641when
10642the AML Interpreter slack mode is enabled. Lin Ming BZ 349
10643
10644Example Code and Data Size: These are the sizes for the OS-independent
10645acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10646debug version of the code includes the debug output trace mechanism and
10647has
10648a much larger code and data size.
10649
10650  Previous Release:
10651    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
10652    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
10653  Current Release:
10654    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
10655    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
10656
10657----------------------------------------
1065814 November 2007. Summary of changes for version 20071114:
10659
106601) ACPI CA Core Subsystem:
10661
10662Implemented event counters for each of the Fixed Events, the ACPI SCI
10663(interrupt) itself, and control methods executed. Named
10664AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
10665These
10666should be useful for debugging and statistics.
10667
10668Implemented a new external interface, AcpiGetStatistics, to retrieve the
10669contents of the various event counters. Returns the current values for
10670AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
10671AcpiMethodCount. The interface can be expanded in the future if new
10672counters
10673are added. Device drivers should use this interface rather than access
10674the
10675counters directly.
10676
10677Fixed a problem with the FromBCD and ToBCD operators. With some
10678compilers,
10679the ShortDivide function worked incorrectly, causing problems with the
10680BCD
10681functions with large input values. A truncation from 64-bit to 32-bit
10682inadvertently occurred. Internal BZ 435. Lin Ming
10683
10684Fixed a problem with Index references passed as method arguments.
10685References
10686passed as arguments to control methods were dereferenced immediately
10687(before
10688control was passed to the called method). The references are now
10689correctly
10690passed directly to the called method. BZ 5389. Lin Ming
10691
10692Fixed a problem with CopyObject used in conjunction with the Index
10693operator.
10694The reference was incorrectly dereferenced before the copy. The reference
10695is
10696now correctly copied. BZ 5391. Lin Ming
10697
10698Fixed a problem with Control Method references within Package objects.
10699These
10700references are now correctly generated. This completes the package
10701construction overhaul that began in version 20071019.
10702
10703Example Code and Data Size: These are the sizes for the OS-independent
10704acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10705debug version of the code includes the debug output trace mechanism and
10706has
10707a much larger code and data size.
10708
10709  Previous Release:
10710    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
10711    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
10712  Current Release:
10713    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
10714    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
10715
10716
107172) iASL Compiler/Disassembler and Tools:
10718
10719The AcpiExec utility now installs handlers for all of the predefined
10720Operation Region types. New types supported are: PCI_Config, CMOS, and
10721PCIBARTarget.
10722
10723Fixed a problem with the 64-bit version of AcpiExec where the extended
10724(64-
10725bit) address fields for the DSDT and FACS within the FADT were not being
10726used, causing truncation of the upper 32-bits of these addresses. Lin
10727Ming
10728and Bob Moore
10729
10730----------------------------------------
1073119 October 2007. Summary of changes for version 20071019:
10732
107331) ACPI CA Core Subsystem:
10734
10735Fixed a problem with the Alias operator when the target of the alias is a
10736named ASL operator that opens a new scope -- Scope, Device,
10737PowerResource,
10738Processor, and ThermalZone. In these cases, any children of the original
10739operator could not be accessed via the alias, potentially causing
10740unexpected
10741AE_NOT_FOUND exceptions. (BZ 9067)
10742
10743Fixed a problem with the Package operator where all named references were
10744created as object references and left otherwise unresolved. According to
10745the
10746ACPI specification, a Package can only contain Data Objects or references
10747to
10748control methods. The implication is that named references to Data Objects
10749(Integer, Buffer, String, Package, BufferField, Field) should be resolved
10750immediately upon package creation. This is the approach taken with this
10751change. References to all other named objects (Methods, Devices, Scopes,
10752etc.) are all now properly created as reference objects. (BZ 5328)
10753
10754Reverted a change to Notify handling that was introduced in version
1075520070508. This version changed the Notify handling from asynchronous to
10756fully synchronous (Device driver Notify handling with respect to the
10757Notify
10758ASL operator). It was found that this change caused more problems than it
10759solved and was removed by most users.
10760
10761Fixed a problem with the Increment and Decrement operators where the type
10762of
10763the target object could be unexpectedly and incorrectly changed. (BZ 353)
10764Lin Ming.
10765
10766Fixed a problem with the Load and LoadTable operators where the table
10767location within the namespace was ignored. Instead, the table was always
10768loaded into the root or current scope. Lin Ming.
10769
10770Fixed a problem with the Load operator when loading a table from a buffer
10771object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
10772
10773Fixed a problem with the Debug object where a store of a DdbHandle
10774reference
10775object to the Debug object could cause a fault.
10776
10777Added a table checksum verification for the Load operator, in the case
10778where
10779the load is from a buffer. (BZ 578).
10780
10781Implemented additional parameter validation for the LoadTable operator.
10782The
10783length of the input strings SignatureString, OemIdString, and OemTableId
10784are
10785now checked for maximum lengths. (BZ 582) Lin Ming.
10786
10787Example Code and Data Size: These are the sizes for the OS-independent
10788acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10789debug version of the code includes the debug output trace mechanism and
10790has
10791a much larger code and data size.
10792
10793  Previous Release:
10794    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
10795    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
10796  Current Release:
10797    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
10798    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
10799
10800
108012) iASL Compiler/Disassembler:
10802
10803Fixed a problem where if a single file was specified and the file did not
10804exist, no error message was emitted. (Introduced with wildcard support in
10805version 20070917.)
10806
10807----------------------------------------
1080819 September 2007. Summary of changes for version 20070919:
10809
108101) ACPI CA Core Subsystem:
10811
10812Designed and implemented new external interfaces to install and remove
10813handlers for ACPI table-related events. Current events that are defined
10814are
10815LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
10816they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
10817AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
10818
10819Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
10820(acpi_serialized option on Linux) could cause some systems to hang during
10821initialization. (Bob Moore) BZ 8171
10822
10823Fixed a problem where objects of certain types (Device, ThermalZone,
10824Processor, PowerResource) can be not found if they are declared and
10825referenced from within the same control method (Lin Ming) BZ 341
10826
10827Example Code and Data Size: These are the sizes for the OS-independent
10828acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10829debug version of the code includes the debug output trace mechanism and
10830has
10831a much larger code and data size.
10832
10833  Previous Release:
10834    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
10835    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
10836  Current Release:
10837    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
10838    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
10839
10840
108412) iASL Compiler/Disassembler:
10842
10843Implemented support to allow multiple files to be compiled/disassembled
10844in
10845a
10846single invocation. This includes command line wildcard support for both
10847the
10848Windows and Unix versions of the compiler. This feature simplifies the
10849disassembly and compilation of multiple ACPI tables in a single
10850directory.
10851
10852----------------------------------------
1085308 May 2007. Summary of changes for version 20070508:
10854
108551) ACPI CA Core Subsystem:
10856
10857Implemented a Microsoft compatibility design change for the handling of
10858the
10859Notify AML operator. Previously, notify handlers were dispatched and
10860executed completely asynchronously in a deferred thread. The new design
10861still executes the notify handlers in a different thread, but the
10862original
10863thread that executed the Notify() now waits at a synchronization point
10864for
10865the notify handler to complete. Some machines depend on a synchronous
10866Notify
10867operator in order to operate correctly.
10868
10869Implemented support to allow Package objects to be passed as method
10870arguments to the external AcpiEvaluateObject interface. Previously, this
10871would return the AE_NOT_IMPLEMENTED exception. This feature had not been
10872implemented since there were no reserved control methods that required it
10873until recently.
10874
10875Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
10876that
10877contained invalid non-zero values in reserved fields could cause later
10878failures because these fields have meaning in later revisions of the
10879FADT.
10880For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
10881fields
10882are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
10883
10884Fixed a problem where the Global Lock handle was not properly updated if
10885a
10886thread that acquired the Global Lock via executing AML code then
10887attempted
10888to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
10889Joe
10890Liu.
10891
10892Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
10893could be corrupted if the interrupt being removed was at the head of the
10894list. Reported by Linn Crosetto.
10895
10896Example Code and Data Size: These are the sizes for the OS-independent
10897acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10898debug version of the code includes the debug output trace mechanism and
10899has
10900a much larger code and data size.
10901
10902  Previous Release:
10903    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10904    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
10905  Current Release:
10906    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
10907    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
10908
10909----------------------------------------
1091020 March 2007. Summary of changes for version 20070320:
10911
109121) ACPI CA Core Subsystem:
10913
10914Implemented a change to the order of interpretation and evaluation of AML
10915operand objects within the AML interpreter. The interpreter now evaluates
10916operands in the order that they appear in the AML stream (and the
10917corresponding ASL code), instead of in the reverse order (after the
10918entire
10919operand list has been parsed). The previous behavior caused several
10920subtle
10921incompatibilities with the Microsoft AML interpreter as well as being
10922somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
10923
10924Implemented a change to the ACPI Global Lock support. All interfaces to
10925the
10926global lock now allow the same thread to acquire the lock multiple times.
10927This affects the AcpiAcquireGlobalLock external interface to the global
10928lock
10929as well as the internal use of the global lock to support AML fields -- a
10930control method that is holding the global lock can now simultaneously
10931access
10932AML fields that require global lock protection. Previously, in both
10933cases,
10934this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
10935to
10936AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
10937Controller. There is no change to the behavior of the AML Acquire
10938operator,
10939as this can already be used to acquire a mutex multiple times by the same
10940thread. BZ 8066. With assistance from Alexey Starikovskiy.
10941
10942Fixed a problem where invalid objects could be referenced in the AML
10943Interpreter after error conditions. During operand evaluation, ensure
10944that
10945the internal "Return Object" field is cleared on error and only valid
10946pointers are stored there. Caused occasional access to deleted objects
10947that
10948resulted in "large reference count" warning messages. Valery Podrezov.
10949
10950Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
10951on
10952deeply nested control method invocations. BZ 7873, local BZ 487. Valery
10953Podrezov.
10954
10955Fixed an internal problem with the handling of result objects on the
10956interpreter result stack. BZ 7872. Valery Podrezov.
10957
10958Removed obsolete code that handled the case where AML_NAME_OP is the
10959target
10960of a reference (Reference.Opcode). This code was no longer necessary. BZ
109617874. Valery Podrezov.
10962
10963Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
10964was
10965a
10966remnant from the previously discontinued 16-bit support.
10967
10968Example Code and Data Size: These are the sizes for the OS-independent
10969acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10970debug version of the code includes the debug output trace mechanism and
10971has
10972a much larger code and data size.
10973
10974  Previous Release:
10975    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10976    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10977  Current Release:
10978    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10979    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
10980
10981----------------------------------------
1098226 January 2007. Summary of changes for version 20070126:
10983
109841) ACPI CA Core Subsystem:
10985
10986Added the 2007 copyright to all module headers and signons. This affects
10987virtually every file in the ACPICA core subsystem, the iASL compiler, and
10988the utilities.
10989
10990Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
10991during a table load. A bad pointer was passed in the case where the DSDT
10992is
10993overridden, causing a fault in this case.
10994
10995Example Code and Data Size: These are the sizes for the OS-independent
10996acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10997debug version of the code includes the debug output trace mechanism and
10998has
10999a much larger code and data size.
11000
11001  Previous Release:
11002    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11003    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
11004  Current Release:
11005    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11006    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
11007
11008----------------------------------------
1100915 December 2006. Summary of changes for version 20061215:
11010
110111) ACPI CA Core Subsystem:
11012
11013Support for 16-bit ACPICA has been completely removed since it is no
11014longer
11015necessary and it clutters the code. All 16-bit macros, types, and
11016conditional compiles have been removed, cleaning up and simplifying the
11017code
11018across the entire subsystem. DOS support is no longer needed since the
11019bootable Linux firmware kit is now available.
11020
11021The handler for the Global Lock is now removed during AcpiTerminate to
11022enable a clean subsystem restart, via the implementation of the
11023AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
11024HP)
11025
11026Implemented enhancements to the multithreading support within the
11027debugger
11028to enable improved multithreading debugging and evaluation of the
11029subsystem.
11030(Valery Podrezov)
11031
11032Debugger: Enhanced the Statistics/Memory command to emit the total
11033(maximum)
11034memory used during the execution, as well as the maximum memory consumed
11035by
11036each of the various object types. (Valery Podrezov)
11037
11038Example Code and Data Size: These are the sizes for the OS-independent
11039acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11040debug version of the code includes the debug output trace mechanism and
11041has
11042a much larger code and data size.
11043
11044  Previous Release:
11045    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
11046    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
11047  Current Release:
11048    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11049    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
11050
11051
110522) iASL Compiler/Disassembler and Tools:
11053
11054AcpiExec: Implemented a new option (-m) to display full memory use
11055statistics upon subsystem/program termination. (Valery Podrezov)
11056
11057----------------------------------------
1105809 November 2006. Summary of changes for version 20061109:
11059
110601) ACPI CA Core Subsystem:
11061
11062Optimized the Load ASL operator in the case where the source operand is
11063an
11064operation region. Simply map the operation region memory, instead of
11065performing a bytewise read. (Region must be of type SystemMemory, see
11066below.)
11067
11068Fixed the Load ASL operator for the case where the source operand is a
11069region field. A buffer object is also allowed as the source operand. BZ
11070480
11071
11072Fixed a problem where the Load ASL operator allowed the source operand to
11073be
11074an operation region of any type. It is now restricted to regions of type
11075SystemMemory, as per the ACPI specification. BZ 481
11076
11077Additional cleanup and optimizations for the new Table Manager code.
11078
11079AcpiEnable will now fail if all of the required ACPI tables are not
11080loaded
11081(FADT, FACS, DSDT). BZ 477
11082
11083Added #pragma pack(8/4) to acobject.h to ensure that the structures in
11084this
11085header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
11086manually optimized to be aligned and will not work if it is byte-packed.
11087
11088Example Code and Data Size: These are the sizes for the OS-independent
11089acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11090debug version of the code includes the debug output trace mechanism and
11091has
11092a much larger code and data size.
11093
11094  Previous Release:
11095    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
11096    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
11097  Current Release:
11098    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
11099    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
11100
11101
111022) iASL Compiler/Disassembler and Tools:
11103
11104Fixed a problem where the presence of the _OSI predefined control method
11105within complex expressions could cause an internal compiler error.
11106
11107AcpiExec: Implemented full region support for multiple address spaces.
11108SpaceId is now part of the REGION object. BZ 429
11109
11110----------------------------------------
1111111 October 2006. Summary of changes for version 20061011:
11112
111131) ACPI CA Core Subsystem:
11114
11115Completed an AML interpreter performance enhancement for control method
11116execution. Previously a 2-pass parse/execution, control methods are now
11117completely parsed and executed in a single pass. This improves overall
11118interpreter performance by ~25%, reduces code size, and reduces CPU stack
11119use. (Valery Podrezov + interpreter changes in version 20051202 that
11120eliminated namespace loading during the pass one parse.)
11121
11122Implemented _CID support for PCI Root Bridge detection. If the _HID does
11123not
11124match the predefined PCI Root Bridge IDs, the _CID list (if present) is
11125now
11126obtained and also checked for an ID match.
11127
11128Implemented additional support for the PCI _ADR execution: upsearch until
11129a
11130device scope is found before executing _ADR. This allows PCI_Config
11131operation regions to be declared locally within control methods
11132underneath
11133PCI device objects.
11134
11135Fixed a problem with a possible race condition between threads executing
11136AcpiWalkNamespace and the AML interpreter. This condition was removed by
11137modifying AcpiWalkNamespace to (by default) ignore all temporary
11138namespace
11139entries created during any concurrent control method execution. An
11140additional namespace race condition is known to exist between
11141AcpiWalkNamespace and the Load/Unload ASL operators and is still under
11142investigation.
11143
11144Restructured the AML ParseLoop function, breaking it into several
11145subfunctions in order to reduce CPU stack use and improve
11146maintainability.
11147(Mikhail Kouzmich)
11148
11149AcpiGetHandle: Fix for parameter validation to detect invalid
11150combinations
11151of prefix handle and pathname. BZ 478
11152
11153Example Code and Data Size: These are the sizes for the OS-independent
11154acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11155debug version of the code includes the debug output trace mechanism and
11156has
11157a much larger code and data size.
11158
11159  Previous Release:
11160    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11161    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
11162  Current Release:
11163    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
11164    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
11165
111662) iASL Compiler/Disassembler and Tools:
11167
11168Ported the -g option (get local ACPI tables) to the new ACPICA Table
11169Manager
11170to restore original behavior.
11171
11172----------------------------------------
1117327 September 2006. Summary of changes for version 20060927:
11174
111751) ACPI CA Core Subsystem:
11176
11177Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
11178These functions now use a spinlock for mutual exclusion and the interrupt
11179level indication flag is not needed.
11180
11181Fixed a problem with the Global Lock where the lock could appear to be
11182obtained before it is actually obtained. The global lock semaphore was
11183inadvertently created with one unit instead of zero units. (BZ 464)
11184Fiodor
11185Suietov.
11186
11187Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
11188during
11189a read from a buffer or region field. (BZ 458) Fiodor Suietov.
11190
11191Example Code and Data Size: These are the sizes for the OS-independent
11192acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11193debug version of the code includes the debug output trace mechanism and
11194has
11195a much larger code and data size.
11196
11197  Previous Release:
11198    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11199    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
11200  Current Release:
11201    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11202    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
11203
11204
112052) iASL Compiler/Disassembler and Tools:
11206
11207Fixed a compilation problem with the pre-defined Resource Descriptor
11208field
11209names where an "object does not exist" error could be incorrectly
11210generated
11211if the parent ResourceTemplate pathname places the template within a
11212different namespace scope than the current scope. (BZ 7212)
11213
11214Fixed a problem where the compiler could hang after syntax errors
11215detected
11216in an ElseIf construct. (BZ 453)
11217
11218Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
11219operator. An incorrect output filename was produced when this parameter
11220was
11221a null string (""). Now, the original input filename is used as the AML
11222output filename, with an ".aml" extension.
11223
11224Implemented a generic batch command mode for the AcpiExec utility
11225(execute
11226any AML debugger command) (Valery Podrezov).
11227
11228----------------------------------------
1122912 September 2006. Summary of changes for version 20060912:
11230
112311) ACPI CA Core Subsystem:
11232
11233Enhanced the implementation of the "serialized mode" of the interpreter
11234(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
11235specified, instead of creating a serialization semaphore per control
11236method,
11237the interpreter lock is simply no longer released before a blocking
11238operation during control method execution. This effectively makes the AML
11239Interpreter single-threaded. The overhead of a semaphore per-method is
11240eliminated.
11241
11242Fixed a regression where an error was no longer emitted if a control
11243method
11244attempts to create 2 objects of the same name. This once again returns
11245AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
11246that
11247will dynamically serialize the control method to possible prevent future
11248errors. (BZ 440)
11249
11250Integrated a fix for a problem with PCI Express HID detection in the PCI
11251Config Space setup procedure. (BZ 7145)
11252
11253Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
11254AcpiHwInitialize function - the FADT registers are now validated when the
11255table is loaded.
11256
11257Added two new warnings during FADT verification - 1) if the FADT is
11258larger
11259than the largest known FADT version, and 2) if there is a mismatch
11260between
11261a
1126232-bit block address and the 64-bit X counterpart (when both are non-
11263zero.)
11264
11265Example Code and Data Size: These are the sizes for the OS-independent
11266acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11267debug version of the code includes the debug output trace mechanism and
11268has
11269a much larger code and data size.
11270
11271  Previous Release:
11272    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
11273    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
11274  Current Release:
11275    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11276    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
11277
11278
112792) iASL Compiler/Disassembler and Tools:
11280
11281Fixed a problem with the implementation of the Switch() operator where
11282the
11283temporary variable was declared too close to the actual Switch, instead
11284of
11285at method level. This could cause a problem if the Switch() operator is
11286within a while loop, causing an error on the second iteration. (BZ 460)
11287
11288Disassembler - fix for error emitted for unknown type for target of scope
11289operator. Now, ignore it and continue.
11290
11291Disassembly of an FADT now verifies the input FADT and reports any errors
11292found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
11293
11294Disassembly of raw data buffers with byte initialization data now
11295prefixes
11296each output line with the current buffer offset.
11297
11298Disassembly of ASF! table now includes all variable-length data fields at
11299the end of some of the subtables.
11300
11301The disassembler now emits a comment if a buffer appears to be a
11302ResourceTemplate, but cannot be disassembled as such because the EndTag
11303does
11304not appear at the very end of the buffer.
11305
11306AcpiExec - Added the "-t" command line option to enable the serialized
11307mode
11308of the AML interpreter.
11309
11310----------------------------------------
1131131 August 2006. Summary of changes for version 20060831:
11312
113131) ACPI CA Core Subsystem:
11314
11315Miscellaneous fixes for the Table Manager:
11316- Correctly initialize internal common FADT for all 64-bit "X" fields
11317- Fixed a couple table mapping issues during table load
11318- Fixed a couple alignment issues for IA64
11319- Initialize input array to zero in AcpiInitializeTables
11320- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
11321AcpiGetTableByIndex
11322
11323Change for GPE support: when a "wake" GPE is received, all wake GPEs are
11324now
11325immediately disabled to prevent the waking GPE from firing again and to
11326prevent other wake GPEs from interrupting the wake process.
11327
11328Added the AcpiGpeCount global that tracks the number of processed GPEs,
11329to
11330be used for debugging systems with a large number of ACPI interrupts.
11331
11332Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
11333both the ACPICA headers and the disassembler.
11334
11335Example Code and Data Size: These are the sizes for the OS-independent
11336acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11337debug version of the code includes the debug output trace mechanism and
11338has
11339a much larger code and data size.
11340
11341  Previous Release:
11342    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
11343    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
11344  Current Release:
11345    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
11346    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
11347
11348
113492) iASL Compiler/Disassembler and Tools:
11350
11351Disassembler support for the DMAR ACPI table.
11352
11353----------------------------------------
1135423 August 2006. Summary of changes for version 20060823:
11355
113561) ACPI CA Core Subsystem:
11357
11358The Table Manager component has been completely redesigned and
11359reimplemented. The new design is much simpler, and reduces the overall
11360code
11361and data size of the kernel-resident ACPICA by approximately 5%. Also, it
11362is
11363now possible to obtain the ACPI tables very early during kernel
11364initialization, even before dynamic memory management is initialized.
11365(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
11366
11367Obsolete ACPICA interfaces:
11368
11369- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
11370init
11371time).
11372- AcpiLoadTable: Not needed.
11373- AcpiUnloadTable: Not needed.
11374
11375New ACPICA interfaces:
11376
11377- AcpiInitializeTables: Must be called before the table manager can be
11378used.
11379- AcpiReallocateRootTable: Used to transfer the root table to dynamically
11380allocated memory after it becomes available.
11381- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
11382tables
11383in the RSDT/XSDT.
11384
11385Other ACPICA changes:
11386
11387- AcpiGetTableHeader returns the actual mapped table header, not a copy.
11388Use
11389AcpiOsUnmapMemory to free this mapping.
11390- AcpiGetTable returns the actual mapped table. The mapping is managed
11391internally and must not be deleted by the caller. Use of this interface
11392causes no additional dynamic memory allocation.
11393- AcpiFindRootPointer: Support for physical addressing has been
11394eliminated,
11395it appeared to be unused.
11396- The interface to AcpiOsMapMemory has changed to be consistent with the
11397other allocation interfaces.
11398- The interface to AcpiOsGetRootPointer has changed to eliminate
11399unnecessary
11400parameters.
11401- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
1140264-
11403bit platforms. Was previously 64 bits on all platforms.
11404- The interface to the ACPI Global Lock acquire/release macros have
11405changed
11406slightly since ACPICA no longer keeps a local copy of the FACS with a
11407constructed pointer to the actual global lock.
11408
11409Porting to the new table manager:
11410
11411- AcpiInitializeTables: Must be called once, and can be called anytime
11412during the OS initialization process. It allows the host to specify an
11413area
11414of memory to be used to store the internal version of the RSDT/XSDT (root
11415table). This allows the host to access ACPI tables before memory
11416management
11417is initialized and running.
11418- AcpiReallocateRootTable: Can be called after memory management is
11419running
11420to copy the root table to a dynamically allocated array, freeing up the
11421scratch memory specified in the call to AcpiInitializeTables.
11422- AcpiSubsystemInitialize: This existing interface is independent of the
11423Table Manager, and does not have to be called before the Table Manager
11424can
11425be used, it only must be called before the rest of ACPICA can be used.
11426- ACPI Tables: Some changes have been made to the names and structure of
11427the
11428actbl.h and actbl1.h header files and may require changes to existing
11429code.
11430For example, bitfields have been completely removed because of their lack
11431of
11432portability across C compilers.
11433- Update interfaces to the Global Lock acquire/release macros if local
11434versions are used. (see acwin.h)
11435
11436Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
11437
11438New files: tbfind.c
11439
11440Example Code and Data Size: These are the sizes for the OS-independent
11441acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11442debug version of the code includes the debug output trace mechanism and
11443has
11444a much larger code and data size.
11445
11446  Previous Release:
11447    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11448    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11449  Current Release:
11450    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
11451    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
11452
11453
114542) iASL Compiler/Disassembler and Tools:
11455
11456No changes for this release.
11457
11458----------------------------------------
1145921 July 2006. Summary of changes for version 20060721:
11460
114611) ACPI CA Core Subsystem:
11462
11463The full source code for the ASL test suite used to validate the iASL
11464compiler and the ACPICA core subsystem is being released with the ACPICA
11465source for the first time. The source is contained in a separate package
11466and
11467consists of over 1100 files that exercise all ASL/AML operators. The
11468package
11469should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
11470Fiodor
11471Suietov)
11472
11473Completed a new design and implementation for support of the ACPI Global
11474Lock. On the OS side, the global lock is now treated as a standard AML
11475mutex. Previously, multiple OS threads could "acquire" the global lock
11476simultaneously. However, this could cause the BIOS to be starved out of
11477the
11478lock - especially in cases such as the Embedded Controller driver where
11479there is a tight coupling between the OS and the BIOS.
11480
11481Implemented an optimization for the ACPI Global Lock interrupt mechanism.
11482The Global Lock interrupt handler no longer queues the execution of a
11483separate thread to signal the global lock semaphore. Instead, the
11484semaphore
11485is signaled directly from the interrupt handler.
11486
11487Implemented support within the AML interpreter for package objects that
11488contain a larger AML length (package list length) than the package
11489element
11490count. In this case, the length of the package is truncated to match the
11491package element count. Some BIOS code apparently modifies the package
11492length
11493on the fly, and this change supports this behavior. Provides
11494compatibility
11495with the MS AML interpreter. (With assistance from Fiodor Suietov)
11496
11497Implemented a temporary fix for the BankValue parameter of a Bank Field
11498to
11499support all constant values, now including the Zero and One opcodes.
11500Evaluation of this parameter must eventually be converted to a full
11501TermArg
11502evaluation. A not-implemented error is now returned (temporarily) for
11503non-
11504constant values for this parameter.
11505
11506Fixed problem reports (Fiodor Suietov) integrated:
11507- Fix for premature object deletion after CopyObject on Operation Region
11508(BZ
11509350)
11510
11511Example Code and Data Size: These are the sizes for the OS-independent
11512acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11513debug version of the code includes the debug output trace mechanism and
11514has
11515a much larger code and data size.
11516
11517  Previous Release:
11518    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
11519    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
11520  Current Release:
11521    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11522    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11523
11524
115252) iASL Compiler/Disassembler and Tools:
11526
11527No changes for this release.
11528
11529----------------------------------------
1153007 July 2006. Summary of changes for version 20060707:
11531
115321) ACPI CA Core Subsystem:
11533
11534Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
11535that do not allow the initialization of address pointers within packed
11536structures - even though the hardware itself may support misaligned
11537transfers. Some of the debug data structures are packed by default to
11538minimize size.
11539
11540Added an error message for the case where AcpiOsGetThreadId() returns
11541zero.
11542A non-zero value is required by the core ACPICA code to ensure the proper
11543operation of AML mutexes and recursive control methods.
11544
11545The DSDT is now the only ACPI table that determines whether the AML
11546interpreter is in 32-bit or 64-bit mode. Not really a functional change,
11547but
11548the hooks for per-table 32/64 switching have been removed from the code.
11549A
11550clarification to the ACPI specification is forthcoming in ACPI 3.0B.
11551
11552Fixed a possible leak of an OwnerID in the error path of
11553AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
11554deletion to a single place in AcpiTbUninstallTable to correct possible
11555leaks
11556when using the AcpiTbDeleteTablesByType interface (with assistance from
11557Lance Ortiz.)
11558
11559Fixed a problem with Serialized control methods where the semaphore
11560associated with the method could be over-signaled after multiple method
11561invocations.
11562
11563Fixed two issues with the locking of the internal namespace data
11564structure.
11565Both the Unload() operator and AcpiUnloadTable interface now lock the
11566namespace during the namespace deletion associated with the table unload
11567(with assistance from Linn Crosetto.)
11568
11569Fixed problem reports (Valery Podrezov) integrated:
11570- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
11571
11572Fixed problem reports (Fiodor Suietov) integrated:
11573- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
11574- On Address Space handler deletion, needless deactivation call (BZ 374)
11575- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
11576375)
11577- Possible memory leak, Notify sub-objects of Processor, Power,
11578ThermalZone
11579(BZ 376)
11580- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
11581- Minimum Length of RSDT should be validated (BZ 379)
11582- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
11583Handler (BZ (380)
11584- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
11585loaded
11586(BZ 381)
11587
11588Example Code and Data Size: These are the sizes for the OS-independent
11589acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11590debug version of the code includes the debug output trace mechanism and
11591has
11592a much larger code and data size.
11593
11594  Previous Release:
11595    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
11596    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
11597  Current Release:
11598    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11599    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11600
11601
116022) iASL Compiler/Disassembler and Tools:
11603
11604Fixed problem reports:
11605Compiler segfault when ASL contains a long (>1024) String declaration (BZ
11606436)
11607
11608----------------------------------------
1160923 June 2006. Summary of changes for version 20060623:
11610
116111) ACPI CA Core Subsystem:
11612
11613Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
11614allows the type to be customized to the host OS for improved efficiency
11615(since a spinlock is usually a very small object.)
11616
11617Implemented support for "ignored" bits in the ACPI registers. According
11618to
11619the ACPI specification, these bits should be preserved when writing the
11620registers via a read/modify/write cycle. There are 3 bits preserved in
11621this
11622manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
11623
11624Implemented the initial deployment of new OSL mutex interfaces. Since
11625some
11626host operating systems have separate mutex and semaphore objects, this
11627feature was requested. The base code now uses mutexes (and the new mutex
11628interfaces) wherever a binary semaphore was used previously. However, for
11629the current release, the mutex interfaces are defined as macros to map
11630them
11631to the existing semaphore interfaces. Therefore, no OSL changes are
11632required
11633at this time. (See acpiosxf.h)
11634
11635Fixed several problems with the support for the control method SyncLevel
11636parameter. The SyncLevel now works according to the ACPI specification
11637and
11638in concert with the Mutex SyncLevel parameter, since the current
11639SyncLevel
11640is a property of the executing thread. Mutual exclusion for control
11641methods
11642is now implemented with a mutex instead of a semaphore.
11643
11644Fixed three instances of the use of the C shift operator in the bitfield
11645support code (exfldio.c) to avoid the use of a shift value larger than
11646the
11647target data width. The behavior of C compilers is undefined in this case
11648and
11649can cause unpredictable results, and therefore the case must be detected
11650and
11651avoided. (Fiodor Suietov)
11652
11653Added an info message whenever an SSDT or OEM table is loaded dynamically
11654via the Load() or LoadTable() ASL operators. This should improve
11655debugging
11656capability since it will show exactly what tables have been loaded
11657(beyond
11658the tables present in the RSDT/XSDT.)
11659
11660Example Code and Data Size: These are the sizes for the OS-independent
11661acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11662debug version of the code includes the debug output trace mechanism and
11663has
11664a much larger code and data size.
11665
11666  Previous Release:
11667    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
11668    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
11669  Current Release:
11670    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
11671    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
11672
11673
116742) iASL Compiler/Disassembler and Tools:
11675
11676No changes for this release.
11677
11678----------------------------------------
1167908 June 2006. Summary of changes for version 20060608:
11680
116811) ACPI CA Core Subsystem:
11682
11683Converted the locking mutex used for the ACPI hardware to a spinlock.
11684This
11685change should eliminate all problems caused by attempting to acquire a
11686semaphore at interrupt level, and it means that all ACPICA external
11687interfaces that directly access the ACPI hardware can be safely called
11688from
11689interrupt level. OSL code that implements the semaphore interfaces should
11690be
11691able to eliminate any workarounds for being called at interrupt level.
11692
11693Fixed a regression introduced in 20060526 where the ACPI device
11694initialization could be prematurely aborted with an AE_NOT_FOUND if a
11695device
11696did not have an optional _INI method.
11697
11698Fixed an IndexField issue where a write to the Data Register should be
11699limited in size to the AccessSize (width) of the IndexField itself. (BZ
11700433,
11701Fiodor Suietov)
11702
11703Fixed problem reports (Valery Podrezov) integrated:
11704- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
11705
11706Fixed problem reports (Fiodor Suietov) integrated:
11707- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
11708
11709Removed four global mutexes that were obsolete and were no longer being
11710used.
11711
11712Example Code and Data Size: These are the sizes for the OS-independent
11713acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11714debug version of the code includes the debug output trace mechanism and
11715has
11716a much larger code and data size.
11717
11718  Previous Release:
11719    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
11720    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
11721  Current Release:
11722    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
11723    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
11724
11725
117262) iASL Compiler/Disassembler and Tools:
11727
11728Fixed a fault when using -g option (get tables from registry) on Windows
11729machines.
11730
11731Fixed problem reports integrated:
11732- Generate error if CreateField NumBits parameter is zero. (BZ 405)
11733- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
11734Suietov)
11735- Global table revision override (-r) is ignored (BZ 413)
11736
11737----------------------------------------
1173826 May 2006. Summary of changes for version 20060526:
11739
117401) ACPI CA Core Subsystem:
11741
11742Restructured, flattened, and simplified the internal interfaces for
11743namespace object evaluation - resulting in smaller code, less CPU stack
11744use,
11745and fewer interfaces. (With assistance from Mikhail Kouzmich)
11746
11747Fixed a problem with the CopyObject operator where the first parameter
11748was
11749not typed correctly for the parser, interpreter, compiler, and
11750disassembler.
11751Caused various errors and unexpected behavior.
11752
11753Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
11754produced incorrect results with some C compilers. Since the behavior of C
11755compilers when the shift value is larger than the datatype width is
11756apparently not well defined, the interpreter now detects this condition
11757and
11758simply returns zero as expected in all such cases. (BZ 395)
11759
11760Fixed problem reports (Valery Podrezov) integrated:
11761- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
11762- Allow interpreter to handle nested method declarations (BZ 5361)
11763
11764Fixed problem reports (Fiodor Suietov) integrated:
11765- AcpiTerminate doesn't free debug memory allocation list objects (BZ
11766355)
11767- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
11768356)
11769- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
11770- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
11771- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
11772- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
11773- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
11774- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
11775- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
11776365)
11777- Status of the Global Initialization Handler call not used (BZ 366)
11778- Incorrect object parameter to Global Initialization Handler (BZ 367)
11779
11780Example Code and Data Size: These are the sizes for the OS-independent
11781acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11782debug version of the code includes the debug output trace mechanism and
11783has
11784a much larger code and data size.
11785
11786  Previous Release:
11787    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
11788    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
11789  Current Release:
11790    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
11791    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
11792
11793
117942) iASL Compiler/Disassembler and Tools:
11795
11796Modified the parser to allow the names IO, DMA, and IRQ to be used as
11797namespace identifiers with no collision with existing resource descriptor
11798macro names. This provides compatibility with other ASL compilers and is
11799most useful for disassembly/recompilation of existing tables without
11800parse
11801errors. (With assistance from Thomas Renninger)
11802
11803Disassembler: fixed an incorrect disassembly problem with the
11804DataTableRegion and CopyObject operators. Fixed a possible fault during
11805disassembly of some Alias operators.
11806
11807----------------------------------------
1180812 May 2006. Summary of changes for version 20060512:
11809
118101) ACPI CA Core Subsystem:
11811
11812Replaced the AcpiOsQueueForExecution interface with a new interface named
11813AcpiOsExecute. The major difference is that the new interface does not
11814have
11815a Priority parameter, this appeared to be useless and has been replaced
11816by
11817a
11818Type parameter. The Type tells the host what type of execution is being
11819requested, such as global lock handler, notify handler, GPE handler, etc.
11820This allows the host to queue and execute the request as appropriate for
11821the
11822request type, possibly using different work queues and different
11823priorities
11824for the various request types. This enables fixes for multithreading
11825deadlock problems such as BZ #5534, and will require changes to all
11826existing
11827OS interface layers. (Alexey Starikovskiy and Bob Moore)
11828
11829Fixed a possible memory leak associated with the support for the so-
11830called
11831"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
11832Suietov)
11833
11834Fixed a problem with the Load() operator where a table load from an
11835operation region could overwrite an internal table buffer by up to 7
11836bytes
11837and cause alignment faults on IPF systems. (With assistance from Luming
11838Yu)
11839
11840Example Code and Data Size: These are the sizes for the OS-independent
11841acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11842debug version of the code includes the debug output trace mechanism and
11843has
11844a much larger code and data size.
11845
11846  Previous Release:
11847    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
11848    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
11849  Current Release:
11850    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
11851    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
11852
11853
11854
118552) iASL Compiler/Disassembler and Tools:
11856
11857Disassembler: Implemented support to cross reference the internal
11858namespace
11859and automatically generate ASL External() statements for symbols not
11860defined
11861within the current table being disassembled. This will simplify the
11862disassembly and recompilation of interdependent tables such as SSDTs
11863since
11864these statements will no longer have to be added manually.
11865
11866Disassembler: Implemented experimental support to automatically detect
11867invocations of external control methods and generate appropriate
11868External()
11869statements. This is problematic because the AML cannot be correctly
11870parsed
11871until the number of arguments for each control method is known.
11872Currently,
11873standalone method invocations and invocations as the source operand of a
11874Store() statement are supported.
11875
11876Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
11877LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
11878LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
11879more readable and likely closer to the original ASL source.
11880
11881----------------------------------------
1188221 April 2006. Summary of changes for version 20060421:
11883
118841) ACPI CA Core Subsystem:
11885
11886Removed a device initialization optimization introduced in 20051216 where
11887the _STA method was not run unless an _INI was also present for the same
11888device. This optimization could cause problems because it could allow
11889_INI
11890methods to be run within a not-present device subtree. (If a not-present
11891device had no _INI, _STA would not be run, the not-present status would
11892not
11893be discovered, and the children of the device would be incorrectly
11894traversed.)
11895
11896Implemented a new _STA optimization where namespace subtrees that do not
11897contain _INI are identified and ignored during device initialization.
11898Selectively running _STA can significantly improve boot time on large
11899machines (with assistance from Len Brown.)
11900
11901Implemented support for the device initialization case where the returned
11902_STA flags indicate a device not-present but functioning. In this case,
11903_INI
11904is not run, but the device children are examined for presence, as per the
11905ACPI specification.
11906
11907Implemented an additional change to the IndexField support in order to
11908conform to MS behavior. The value written to the Index Register is not
11909simply a byte offset, it is a byte offset in units of the access width of
11910the parent Index Field. (Fiodor Suietov)
11911
11912Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
11913interface is called during the creation of all AML operation regions, and
11914allows the host OS to exert control over what addresses it will allow the
11915AML code to access. Operation Regions whose addresses are disallowed will
11916cause a runtime exception when they are actually accessed (will not
11917affect
11918or abort table loading.) See oswinxf or osunixxf for an example
11919implementation.
11920
11921Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
11922interface allows the host OS to match the various "optional"
11923interface/behavior strings for the _OSI predefined control method as
11924appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
11925for an example implementation.
11926
11927Restructured and corrected various problems in the exception handling
11928code
11929paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
11930(with assistance from Takayoshi Kochi.)
11931
11932Modified the Linux source converter to ignore quoted string literals
11933while
11934converting identifiers from mixed to lower case. This will correct
11935problems
11936with the disassembler and other areas where such strings must not be
11937modified.
11938
11939The ACPI_FUNCTION_* macros no longer require quotes around the function
11940name. This allows the Linux source converter to convert the names, now
11941that
11942the converter ignores quoted strings.
11943
11944Example Code and Data Size: These are the sizes for the OS-independent
11945acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11946debug version of the code includes the debug output trace mechanism and
11947has
11948a much larger code and data size.
11949
11950  Previous Release:
11951
11952    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
11953    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
11954  Current Release:
11955    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
11956    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
11957
11958
119592) iASL Compiler/Disassembler and Tools:
11960
11961Implemented 3 new warnings for iASL, and implemented multiple warning
11962levels
11963(w2 flag).
11964
119651) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
11966not
11967WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
11968check for the possible timeout, a warning is issued.
11969
119702) Useless operators: If an ASL operator does not specify an optional
11971target
11972operand and it also does not use the function return value from the
11973operator, a warning is issued since the operator effectively does
11974nothing.
11975
119763) Unreferenced objects: If a namespace object is created, but never
11977referenced, a warning is issued. This is a warning level 2 since there
11978are
11979cases where this is ok, such as when a secondary table is loaded that
11980uses
11981the unreferenced objects. Even so, care is taken to only flag objects
11982that
11983don't look like they will ever be used. For example, the reserved methods
11984(starting with an underscore) are usually not referenced because it is
11985expected that the OS will invoke them.
11986
11987----------------------------------------
1198831 March 2006. Summary of changes for version 20060331:
11989
119901) ACPI CA Core Subsystem:
11991
11992Implemented header file support for the following additional ACPI tables:
11993ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
11994support,
11995all current and known ACPI tables are now defined in the ACPICA headers
11996and
11997are available for use by device drivers and other software.
11998
11999Implemented support to allow tables that contain ACPI names with invalid
12000characters to be loaded. Previously, this would cause the table load to
12001fail, but since there are several known cases of such tables on existing
12002machines, this change was made to enable ACPI support for them. Also,
12003this
12004matches the behavior of the Microsoft ACPI implementation.
12005
12006Fixed a couple regressions introduced during the memory optimization in
12007the
1200820060317 release. The namespace node definition required additional
12009reorganization and an internal datatype that had been changed to 8-bit
12010was
12011restored to 32-bit. (Valery Podrezov)
12012
12013Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
12014could be passed through to AcpiOsReleaseObject which is unexpected. Such
12015null pointers are now trapped and ignored, matching the behavior of the
12016previous implementation before the deployment of AcpiOsReleaseObject.
12017(Valery Podrezov, Fiodor Suietov)
12018
12019Fixed a memory mapping leak during the deletion of a SystemMemory
12020operation
12021region where a cached memory mapping was not deleted. This became a
12022noticeable problem for operation regions that are defined within
12023frequently
12024used control methods. (Dana Meyers)
12025
12026Reorganized the ACPI table header files into two main files: one for the
12027ACPI tables consumed by the ACPICA core, and another for the
12028miscellaneous
12029ACPI tables that are consumed by the drivers and other software. The
12030various
12031FADT definitions were merged into one common section and three different
12032tables (ACPI 1.0, 1.0+, and 2.0)
12033
12034Example Code and Data Size: These are the sizes for the OS-independent
12035acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12036debug version of the code includes the debug output trace mechanism and
12037has
12038a much larger code and data size.
12039
12040  Previous Release:
12041    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
12042    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
12043  Current Release:
12044    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
12045    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
12046
12047
120482) iASL Compiler/Disassembler and Tools:
12049
12050Disassembler: Implemented support to decode and format all non-AML ACPI
12051tables (tables other than DSDTs and SSDTs.) This includes the new tables
12052added to the ACPICA headers, therefore all current and known ACPI tables
12053are
12054supported.
12055
12056Disassembler: The change to allow ACPI names with invalid characters also
12057enables the disassembly of such tables. Invalid characters within names
12058are
12059changed to '*' to make the name printable; the iASL compiler will still
12060generate an error for such names, however, since this is an invalid ACPI
12061character.
12062
12063Implemented an option for AcpiXtract (-a) to extract all tables found in
12064the
12065input file. The default invocation extracts only the DSDTs and SSDTs.
12066
12067Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
12068makefile for the AcpiXtract utility.
12069
12070----------------------------------------
1207117 March 2006. Summary of changes for version 20060317:
12072
120731) ACPI CA Core Subsystem:
12074
12075Implemented the use of a cache object for all internal namespace nodes.
12076Since there are about 1000 static nodes in a typical system, this will
12077decrease memory use for cache implementations that minimize per-
12078allocation
12079overhead (such as a slab allocator.)
12080
12081Removed the reference count mechanism for internal namespace nodes, since
12082it
12083was deemed unnecessary. This reduces the size of each namespace node by
12084about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
12085case,
12086and 32 bytes for the 64-bit case.
12087
12088Optimized several internal data structures to reduce object size on 64-
12089bit
12090platforms by packing data within the 64-bit alignment. This includes the
12091frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
12092instances corresponding to the namespace objects.
12093
12094Added two new strings for the predefined _OSI method: "Windows 2001.1
12095SP1"
12096and "Windows 2006".
12097
12098Split the allocation tracking mechanism out to a separate file, from
12099utalloc.c to uttrack.c. This mechanism appears to be only useful for
12100application-level code. Kernels may wish to not include uttrack.c in
12101distributions.
12102
12103Removed all remnants of the obsolete ACPI_REPORT_* macros and the
12104associated
12105code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
12106macros.)
12107
12108Code and Data Size: These are the sizes for the acpica.lib produced by
12109the
12110Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12111ACPI
12112driver or OSPM code. The debug version of the code includes the debug
12113output
12114trace mechanism and has a much larger code and data size. Note that these
12115values will vary depending on the efficiency of the compiler and the
12116compiler options used during generation.
12117
12118  Previous Release:
12119    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12120    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
12121  Current Release:
12122    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
12123    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
12124
12125
121262) iASL Compiler/Disassembler and Tools:
12127
12128Implemented an ANSI C version of the acpixtract utility. This version
12129will
12130automatically extract the DSDT and all SSDTs from the input acpidump text
12131file and dump the binary output to separate files. It can also display a
12132summary of the input file including the headers for each table found and
12133will extract any single ACPI table, with any signature. (See
12134source/tools/acpixtract)
12135
12136----------------------------------------
1213710 March 2006. Summary of changes for version 20060310:
12138
121391) ACPI CA Core Subsystem:
12140
12141Tagged all external interfaces to the subsystem with the new
12142ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
12143assist
12144kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
12145macro. The default definition is NULL.
12146
12147Added the ACPI_THREAD_ID type for the return value from
12148AcpiOsGetThreadId.
12149This allows the host to define this as necessary to simplify kernel
12150integration. The default definition is ACPI_NATIVE_UINT.
12151
12152Fixed two interpreter problems related to error processing, the deletion
12153of
12154objects, and placing invalid pointers onto the internal operator result
12155stack. BZ 6028, 6151 (Valery Podrezov)
12156
12157Increased the reference count threshold where a warning is emitted for
12158large
12159reference counts in order to eliminate unnecessary warnings on systems
12160with
12161large namespaces (especially 64-bit.) Increased the value from 0x400 to
121620x800.
12163
12164Due to universal disagreement as to the meaning of the 'c' in the
12165calloc()
12166function, the ACPI_MEM_CALLOCATE macro has been renamed to
12167ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
12168ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
12169ACPI_FREE.
12170
12171Code and Data Size: These are the sizes for the acpica.lib produced by
12172the
12173Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12174ACPI
12175driver or OSPM code. The debug version of the code includes the debug
12176output
12177trace mechanism and has a much larger code and data size. Note that these
12178values will vary depending on the efficiency of the compiler and the
12179compiler options used during generation.
12180
12181  Previous Release:
12182    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
12183    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
12184  Current Release:
12185    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12186    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
12187
12188
121892) iASL Compiler/Disassembler:
12190
12191Disassembler: implemented support for symbolic resource descriptor
12192references. If a CreateXxxxField operator references a fixed offset
12193within
12194a
12195resource descriptor, a name is assigned to the descriptor and the offset
12196is
12197translated to the appropriate resource tag and pathname. The addition of
12198this support brings the disassembled code very close to the original ASL
12199source code and helps eliminate run-time errors when the disassembled
12200code
12201is modified (and recompiled) in such a way as to invalidate the original
12202fixed offsets.
12203
12204Implemented support for a Descriptor Name as the last parameter to the
12205ASL
12206Register() macro. This parameter was inadvertently left out of the ACPI
12207specification, and will be added for ACPI 3.0b.
12208
12209Fixed a problem where the use of the "_OSI" string (versus the full path
12210"\_OSI") caused an internal compiler error. ("No back ptr to op")
12211
12212Fixed a problem with the error message that occurs when an invalid string
12213is
12214used for a _HID object (such as one with an embedded asterisk:
12215"*PNP010A".)
12216The correct message is now displayed.
12217
12218----------------------------------------
1221917 February 2006. Summary of changes for version 20060217:
12220
122211) ACPI CA Core Subsystem:
12222
12223Implemented a change to the IndexField support to match the behavior of
12224the
12225Microsoft AML interpreter. The value written to the Index register is now
12226a
12227byte offset, no longer an index based upon the width of the Data
12228register.
12229This should fix IndexField problems seen on some machines where the Data
12230register is not exactly one byte wide. The ACPI specification will be
12231clarified on this point.
12232
12233Fixed a problem where several resource descriptor types could overrun the
12234internal descriptor buffer due to size miscalculation: VendorShort,
12235VendorLong, and Interrupt. This was noticed on IA64 machines, but could
12236affect all platforms.
12237
12238Fixed a problem where individual resource descriptors were misaligned
12239within
12240the internal buffer, causing alignment faults on IA64 platforms.
12241
12242Code and Data Size: These are the sizes for the acpica.lib produced by
12243the
12244Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12245ACPI
12246driver or OSPM code. The debug version of the code includes the debug
12247output
12248trace mechanism and has a much larger code and data size. Note that these
12249values will vary depending on the efficiency of the compiler and the
12250compiler options used during generation.
12251
12252  Previous Release:
12253    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12254    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
12255  Current Release:
12256    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
12257    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
12258
12259
122602) iASL Compiler/Disassembler:
12261
12262Implemented support for new reserved names: _WDG and _WED are Microsoft
12263extensions for Windows Instrumentation Management, _TDL is a new ACPI-
12264defined method (Throttling Depth Limit.)
12265
12266Fixed a problem where a zero-length VendorShort or VendorLong resource
12267descriptor was incorrectly emitted as a descriptor of length one.
12268
12269----------------------------------------
1227010 February 2006. Summary of changes for version 20060210:
12271
122721) ACPI CA Core Subsystem:
12273
12274Removed a couple of extraneous ACPI_ERROR messages that appeared during
12275normal execution. These became apparent after the conversion from
12276ACPI_DEBUG_PRINT.
12277
12278Fixed a problem where the CreateField operator could hang if the BitIndex
12279or
12280NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
12281
12282Fixed a problem where a DeRefOf operation on a buffer object incorrectly
12283failed with an exception. This also fixes a couple of related RefOf and
12284DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
12285
12286Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
12287of
12288AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
12289BZ
122905480)
12291
12292Implemented a memory cleanup at the end of the execution of each
12293iteration
12294of an AML While() loop, preventing the accumulation of outstanding
12295objects.
12296(Valery Podrezov, BZ 5427)
12297
12298Eliminated a chunk of duplicate code in the object resolution code.
12299(Valery
12300Podrezov, BZ 5336)
12301
12302Fixed several warnings during the 64-bit code generation.
12303
12304The AcpiSrc source code conversion tool now inserts one line of
12305whitespace
12306after an if() statement that is followed immediately by a comment,
12307improving
12308readability of the Linux code.
12309
12310Code and Data Size: The current and previous library sizes for the core
12311subsystem are shown below. These are the code and data sizes for the
12312acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12313These
12314values do not include any ACPI driver or OSPM code. The debug version of
12315the
12316code includes the debug output trace mechanism and has a much larger code
12317and data size. Note that these values will vary depending on the
12318efficiency
12319of the compiler and the compiler options used during generation.
12320
12321  Previous Release:
12322    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
12323    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
12324  Current Release:
12325    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12326    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
12327
12328
123292) iASL Compiler/Disassembler:
12330
12331Fixed a problem with the disassembly of a BankField operator with a
12332complex
12333expression for the BankValue parameter.
12334
12335----------------------------------------
1233627 January 2006. Summary of changes for version 20060127:
12337
123381) ACPI CA Core Subsystem:
12339
12340Implemented support in the Resource Manager to allow unresolved
12341namestring
12342references within resource package objects for the _PRT method. This
12343support
12344is in addition to the previously implemented unresolved reference support
12345within the AML parser. If the interpreter slack mode is enabled, these
12346unresolved references will be passed through to the caller as a NULL
12347package
12348entry.
12349
12350Implemented and deployed new macros and functions for error and warning
12351messages across the subsystem. These macros are simpler and generate less
12352code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
12353ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
12354macros remain defined to allow ACPI drivers time to migrate to the new
12355macros.
12356
12357Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
12358the
12359Acquire/Release Lock OSL interfaces.
12360
12361Fixed a problem where Alias ASL operators are sometimes not correctly
12362resolved, in both the interpreter and the iASL compiler.
12363
12364Fixed several problems with the implementation of the
12365ConcatenateResTemplate
12366ASL operator. As per the ACPI specification, zero length buffers are now
12367treated as a single EndTag. One-length buffers always cause a fatal
12368exception. Non-zero length buffers that do not end with a full 2-byte
12369EndTag
12370cause a fatal exception.
12371
12372Fixed a possible structure overwrite in the AcpiGetObjectInfo external
12373interface. (With assistance from Thomas Renninger)
12374
12375Code and Data Size: The current and previous library sizes for the core
12376subsystem are shown below. These are the code and data sizes for the
12377acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12378These
12379values do not include any ACPI driver or OSPM code. The debug version of
12380the
12381code includes the debug output trace mechanism and has a much larger code
12382and data size. Note that these values will vary depending on the
12383efficiency
12384of the compiler and the compiler options used during generation.
12385
12386  Previous Release:
12387    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
12388    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
12389  Current Release:
12390    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
12391    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
12392
12393
123942) iASL Compiler/Disassembler:
12395
12396Fixed an internal error that was generated for any forward references to
12397ASL
12398Alias objects.
12399
12400----------------------------------------
1240113 January 2006. Summary of changes for version 20060113:
12402
124031) ACPI CA Core Subsystem:
12404
12405Added 2006 copyright to all module headers and signons. This affects
12406virtually every file in the ACPICA core subsystem, iASL compiler, and the
12407utilities.
12408
12409Enhanced the ACPICA error reporting in order to simplify user migration
12410to
12411the non-debug version of ACPICA. Replaced all instances of the
12412ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
12413debug
12414levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
12415respectively. This preserves all error and warning messages in the non-
12416debug
12417version of the ACPICA code (this has been referred to as the "debug lite"
12418option.) Over 200 cases were converted to create a total of over 380
12419error/warning messages across the ACPICA code. This increases the code
12420and
12421data size of the default non-debug version of the code somewhat (about
1242213K),
12423but all error/warning reporting may be disabled if desired (and code
12424eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
12425configuration option. The size of the debug version of ACPICA remains
12426about
12427the same.
12428
12429Fixed a memory leak within the AML Debugger "Set" command. One object was
12430not properly deleted for every successful invocation of the command.
12431
12432Code and Data Size: The current and previous library sizes for the core
12433subsystem are shown below. These are the code and data sizes for the
12434acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12435These
12436values do not include any ACPI driver or OSPM code. The debug version of
12437the
12438code includes the debug output trace mechanism and has a much larger code
12439and data size. Note that these values will vary depending on the
12440efficiency
12441of the compiler and the compiler options used during generation.
12442
12443  Previous Release:
12444    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
12445    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
12446  Current Release:
12447    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
12448    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
12449
12450
124512) iASL Compiler/Disassembler:
12452
12453The compiler now officially supports the ACPI 3.0a specification that was
12454released on December 30, 2005. (Specification is available at
12455www.acpi.info)
12456
12457----------------------------------------
1245816 December 2005. Summary of changes for version 20051216:
12459
124601) ACPI CA Core Subsystem:
12461
12462Implemented optional support to allow unresolved names within ASL Package
12463objects. A null object is inserted in the package when a named reference
12464cannot be located in the current namespace. Enabled via the interpreter
12465slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
12466machines
12467that contain such code.
12468
12469Implemented an optimization to the initialization sequence that can
12470improve
12471boot time. During ACPI device initialization, the _STA method is now run
12472if
12473and only if the _INI method exists. The _STA method is used to determine
12474if
12475the device is present; An _INI can only be run if _STA returns present,
12476but
12477it is a waste of time to run the _STA method if the _INI does not exist.
12478(Prototype and assistance from Dong Wei)
12479
12480Implemented use of the C99 uintptr_t for the pointer casting macros if it
12481is
12482available in the current compiler. Otherwise, the default (void *) cast
12483is
12484used as before.
12485
12486Fixed some possible memory leaks found within the execution path of the
12487Break, Continue, If, and CreateField operators. (Valery Podrezov)
12488
12489Fixed a problem introduced in the 20051202 release where an exception is
12490generated during method execution if a control method attempts to declare
12491another method.
12492
12493Moved resource descriptor string constants that are used by both the AML
12494disassembler and AML debugger to the common utilities directory so that
12495these components are independent.
12496
12497Implemented support in the AcpiExec utility (-e switch) to globally
12498ignore
12499exceptions during control method execution (method is not aborted.)
12500
12501Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
12502generation.
12503
12504Code and Data Size: The current and previous library sizes for the core
12505subsystem are shown below. These are the code and data sizes for the
12506acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12507These
12508values do not include any ACPI driver or OSPM code. The debug version of
12509the
12510code includes the debug output trace mechanism and has a much larger code
12511and data size. Note that these values will vary depending on the
12512efficiency
12513of the compiler and the compiler options used during generation.
12514
12515  Previous Release:
12516    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12517    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
12518  Current Release:
12519    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
12520    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
12521
12522
125232) iASL Compiler/Disassembler:
12524
12525Fixed a problem where a CPU stack overflow fault could occur if a
12526recursive
12527method call was made from within a Return statement.
12528
12529----------------------------------------
1253002 December 2005. Summary of changes for version 20051202:
12531
125321) ACPI CA Core Subsystem:
12533
12534Modified the parsing of control methods to no longer create namespace
12535objects during the first pass of the parse. Objects are now created only
12536during the execute phase, at the moment the namespace creation operator
12537is
12538encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
12539This
12540should eliminate ALREADY_EXISTS exceptions seen on some machines where
12541reentrant control methods are protected by an AML mutex. The mutex will
12542now
12543correctly block multiple threads from attempting to create the same
12544object
12545more than once.
12546
12547Increased the number of available Owner Ids for namespace object tracking
12548from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
12549on
12550some machines with a large number of ACPI tables (either static or
12551dynamic).
12552
12553Fixed a problem with the AcpiExec utility where a fault could occur when
12554the
12555-b switch (batch mode) is used.
12556
12557Enhanced the namespace dump routine to output the owner ID for each
12558namespace object.
12559
12560Code and Data Size: The current and previous library sizes for the core
12561subsystem are shown below. These are the code and data sizes for the
12562acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12563These
12564values do not include any ACPI driver or OSPM code. The debug version of
12565the
12566code includes the debug output trace mechanism and has a much larger code
12567and data size. Note that these values will vary depending on the
12568efficiency
12569of the compiler and the compiler options used during generation.
12570
12571  Previous Release:
12572    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12573    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12574  Current Release:
12575    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12576    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
12577
12578
125792) iASL Compiler/Disassembler:
12580
12581Fixed a parse error during compilation of certain Switch/Case constructs.
12582To
12583simplify the parse, the grammar now allows for multiple Default
12584statements
12585and this error is now detected and flagged during the analysis phase.
12586
12587Disassembler: The disassembly now includes the contents of the original
12588table header within a comment at the start of the file. This includes the
12589name and version of the original ASL compiler.
12590
12591----------------------------------------
1259217 November 2005. Summary of changes for version 20051117:
12593
125941) ACPI CA Core Subsystem:
12595
12596Fixed a problem in the AML parser where the method thread count could be
12597decremented below zero if any errors occurred during the method parse
12598phase.
12599This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
12600machines.
12601This also fixed a related regression with the mechanism that detects and
12602corrects methods that cannot properly handle reentrancy (related to the
12603deployment of the new OwnerId mechanism.)
12604
12605Eliminated the pre-parsing of control methods (to detect errors) during
12606table load. Related to the problem above, this was causing unwind issues
12607if
12608any errors occurred during the parse, and it seemed to be overkill. A
12609table
12610load should not be aborted if there are problems with any single control
12611method, thus rendering this feature rather pointless.
12612
12613Fixed a problem with the new table-driven resource manager where an
12614internal
12615buffer overflow could occur for small resource templates.
12616
12617Implemented a new external interface, AcpiGetVendorResource. This
12618interface
12619will find and return a vendor-defined resource descriptor within a _CRS
12620or
12621_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
12622Helgaas.
12623
12624Removed the length limit (200) on string objects as per the upcoming ACPI
126253.0A specification. This affects the following areas of the interpreter:
126261)
12627any implicit conversion of a Buffer to a String, 2) a String object
12628result
12629of the ASL Concatenate operator, 3) the String object result of the ASL
12630ToString operator.
12631
12632Fixed a problem in the Windows OS interface layer (OSL) where a
12633WAIT_FOREVER
12634on a semaphore object would incorrectly timeout. This allows the
12635multithreading features of the AcpiExec utility to work properly under
12636Windows.
12637
12638Updated the Linux makefiles for the iASL compiler and AcpiExec to include
12639the recently added file named "utresrc.c".
12640
12641Code and Data Size: The current and previous library sizes for the core
12642subsystem are shown below. These are the code and data sizes for the
12643acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12644These
12645values do not include any ACPI driver or OSPM code. The debug version of
12646the
12647code includes the debug output trace mechanism and has a much larger code
12648and data size. Note that these values will vary depending on the
12649efficiency
12650of the compiler and the compiler options used during generation.
12651
12652  Previous Release:
12653    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
12654    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12655  Current Release:
12656    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12657    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12658
12659
126602) iASL Compiler/Disassembler:
12661
12662Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
12663specification. For the iASL compiler, this means that string literals
12664within
12665the source ASL can be of any length.
12666
12667Enhanced the listing output to dump the AML code for resource descriptors
12668immediately after the ASL code for each descriptor, instead of in a block
12669at
12670the end of the entire resource template.
12671
12672Enhanced the compiler debug output to dump the entire original parse tree
12673constructed during the parse phase, before any transforms are applied to
12674the
12675tree. The transformed tree is dumped also.
12676
12677----------------------------------------
1267802 November 2005. Summary of changes for version 20051102:
12679
126801) ACPI CA Core Subsystem:
12681
12682Modified the subsystem initialization sequence to improve GPE support.
12683The
12684GPE initialization has been split into two parts in order to defer
12685execution
12686of the _PRW methods (Power Resources for Wake) until after the hardware
12687is
12688fully initialized and the SCI handler is installed. This allows the _PRW
12689methods to access fields protected by the Global Lock. This will fix
12690systems
12691where a NO_GLOBAL_LOCK exception has been seen during initialization.
12692
12693Converted the ACPI internal object disassemble and display code within
12694the
12695AML debugger to fully table-driven operation, reducing code size and
12696increasing maintainability.
12697
12698Fixed a regression with the ConcatenateResTemplate() ASL operator
12699introduced
12700in the 20051021 release.
12701
12702Implemented support for "local" internal ACPI object types within the
12703debugger "Object" command and the AcpiWalkNamespace external interfaces.
12704These local types include RegionFields, BankFields, IndexFields, Alias,
12705and
12706reference objects.
12707
12708Moved common AML resource handling code into a new file, "utresrc.c".
12709This
12710code is shared by both the Resource Manager and the AML Debugger.
12711
12712Code and Data Size: The current and previous library sizes for the core
12713subsystem are shown below. These are the code and data sizes for the
12714acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12715These
12716values do not include any ACPI driver or OSPM code. The debug version of
12717the
12718code includes the debug output trace mechanism and has a much larger code
12719and data size. Note that these values will vary depending on the
12720efficiency
12721of the compiler and the compiler options used during generation.
12722
12723  Previous Release:
12724    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
12725    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
12726  Current Release:
12727    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
12728    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12729
12730
127312) iASL Compiler/Disassembler:
12732
12733Fixed a problem with very large initializer lists (more than 4000
12734elements)
12735for both Buffer and Package objects where the parse stack could overflow.
12736
12737Enhanced the pre-compile source code scan for non-ASCII characters to
12738ignore
12739characters within comment fields. The scan is now always performed and is
12740no
12741longer optional, detecting invalid characters within a source file
12742immediately rather than during the parse phase or later.
12743
12744Enhanced the ASL grammar definition to force early reductions on all
12745list-
12746style grammar elements so that the overall parse stack usage is greatly
12747reduced. This should improve performance and reduce the possibility of
12748parse
12749stack overflow.
12750
12751Eliminated all reduce/reduce conflicts in the iASL parser generation.
12752Also,
12753with the addition of a %expected statement, the compiler generates from
12754source with no warnings.
12755
12756Fixed a possible segment fault in the disassembler if the input filename
12757does not contain a "dot" extension (Thomas Renninger).
12758
12759----------------------------------------
1276021 October 2005. Summary of changes for version 20051021:
12761
127621) ACPI CA Core Subsystem:
12763
12764Implemented support for the EM64T and other x86-64 processors. This
12765essentially entails recognizing that these processors support non-aligned
12766memory transfers. Previously, all 64-bit processors were assumed to lack
12767hardware support for non-aligned transfers.
12768
12769Completed conversion of the Resource Manager to nearly full table-driven
12770operation. Specifically, the resource conversion code (convert AML to
12771internal format and the reverse) and the debug code to dump internal
12772resource descriptors are fully table-driven, reducing code and data size
12773and
12774improving maintainability.
12775
12776The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
12777word
12778on 64-bit processors instead of a fixed 32-bit word. (With assistance
12779from
12780Alexey Starikovskiy)
12781
12782Implemented support within the resource conversion code for the Type-
12783Specific byte within the various ACPI 3.0 *WordSpace macros.
12784
12785Fixed some issues within the resource conversion code for the type-
12786specific
12787flags for both Memory and I/O address resource descriptors. For Memory,
12788implemented support for the MTP and TTP flags. For I/O, split the TRS and
12789TTP flags into two separate fields.
12790
12791Code and Data Size: The current and previous library sizes for the core
12792subsystem are shown below. These are the code and data sizes for the
12793acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12794These
12795values do not include any ACPI driver or OSPM code. The debug version of
12796the
12797code includes the debug output trace mechanism and has a much larger code
12798and data size. Note that these values will vary depending on the
12799efficiency
12800of the compiler and the compiler options used during generation.
12801
12802  Previous Release:
12803    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
12804    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
12805  Current Release:
12806    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
12807    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
12808
12809
12810
128112) iASL Compiler/Disassembler:
12812
12813Relaxed a compiler restriction that disallowed a ResourceIndex byte if
12814the
12815corresponding ResourceSource string was not also present in a resource
12816descriptor declaration. This restriction caused problems with existing
12817AML/ASL code that includes the Index byte without the string. When such
12818AML
12819was disassembled, it could not be compiled without modification. Further,
12820the modified code created a resource template with a different size than
12821the
12822original, breaking code that used fixed offsets into the resource
12823template
12824buffer.
12825
12826Removed a recent feature of the disassembler to ignore a lone
12827ResourceIndex
12828byte. This byte is now emitted if present so that the exact AML can be
12829reproduced when the disassembled code is recompiled.
12830
12831Improved comments and text alignment for the resource descriptor code
12832emitted by the disassembler.
12833
12834Implemented disassembler support for the ACPI 3.0 AccessSize field within
12835a
12836Register() resource descriptor.
12837
12838----------------------------------------
1283930 September 2005. Summary of changes for version 20050930:
12840
128411) ACPI CA Core Subsystem:
12842
12843Completed a major overhaul of the Resource Manager code - specifically,
12844optimizations in the area of the AML/internal resource conversion code.
12845The
12846code has been optimized to simplify and eliminate duplicated code, CPU
12847stack
12848use has been decreased by optimizing function parameters and local
12849variables, and naming conventions across the manager have been
12850standardized
12851for clarity and ease of maintenance (this includes function, parameter,
12852variable, and struct/typedef names.) The update may force changes in some
12853driver code, depending on how resources are handled by the host OS.
12854
12855All Resource Manager dispatch and information tables have been moved to a
12856single location for clarity and ease of maintenance. One new file was
12857created, named "rsinfo.c".
12858
12859The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
12860guarantee that the argument is not evaluated twice, making them less
12861prone
12862to macro side-effects. However, since there exists the possibility of
12863additional stack use if a particular compiler cannot optimize them (such
12864as
12865in the debug generation case), the original macros are optionally
12866available.
12867Note that some invocations of the return_VALUE macro may now cause size
12868mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
12869to
12870eliminate these. (From Randy Dunlap)
12871
12872Implemented a new mechanism to enable debug tracing for individual
12873control
12874methods. A new external interface, AcpiDebugTrace, is provided to enable
12875this mechanism. The intent is to allow the host OS to easily enable and
12876disable tracing for problematic control methods. This interface can be
12877easily exposed to a user or debugger interface if desired. See the file
12878psxface.c for details.
12879
12880AcpiUtCallocate will now return a valid pointer if a length of zero is
12881specified - a length of one is used and a warning is issued. This matches
12882the behavior of AcpiUtAllocate.
12883
12884Code and Data Size: The current and previous library sizes for the core
12885subsystem are shown below. These are the code and data sizes for the
12886acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12887These
12888values do not include any ACPI driver or OSPM code. The debug version of
12889the
12890code includes the debug output trace mechanism and has a much larger code
12891and data size. Note that these values will vary depending on the
12892efficiency
12893of the compiler and the compiler options used during generation.
12894
12895  Previous Release:
12896    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
12897    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
12898  Current Release:
12899    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
12900    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
12901
12902
129032) iASL Compiler/Disassembler:
12904
12905A remark is issued if the effective compile-time length of a package or
12906buffer is zero. Previously, this was a warning.
12907
12908----------------------------------------
1290916 September 2005. Summary of changes for version 20050916:
12910
129111) ACPI CA Core Subsystem:
12912
12913Fixed a problem within the Resource Manager where support for the Generic
12914Register descriptor was not fully implemented. This descriptor is now
12915fully
12916recognized, parsed, disassembled, and displayed.
12917
12918Completely restructured the Resource Manager code to utilize table-driven
12919dispatch and lookup, eliminating many of the large switch() statements.
12920This
12921reduces overall subsystem code size and code complexity. Affects the
12922resource parsing and construction, disassembly, and debug dump output.
12923
12924Cleaned up and restructured the debug dump output for all resource
12925descriptors. Improved readability of the output and reduced code size.
12926
12927Fixed a problem where changes to internal data structures caused the
12928optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
12929
12930Code and Data Size: The current and previous library sizes for the core
12931subsystem are shown below. These are the code and data sizes for the
12932acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12933These
12934values do not include any ACPI driver or OSPM code. The debug version of
12935the
12936code includes the debug output trace mechanism and has a much larger code
12937and data size. Note that these values will vary depending on the
12938efficiency
12939of the compiler and the compiler options used during generation.
12940
12941  Previous Release:
12942    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
12943    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
12944  Current Release:
12945    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
12946    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
12947
12948
129492) iASL Compiler/Disassembler:
12950
12951Updated the disassembler to automatically insert an EndDependentFn()
12952macro
12953into the ASL stream if this macro is missing in the original AML code,
12954simplifying compilation of the resulting ASL module.
12955
12956Fixed a problem in the disassembler where a disassembled ResourceSource
12957string (within a large resource descriptor) was not surrounded by quotes
12958and
12959not followed by a comma, causing errors when the resulting ASL module was
12960compiled. Also, escape sequences within a ResourceSource string are now
12961handled correctly (especially "\\")
12962
12963----------------------------------------
1296402 September 2005. Summary of changes for version 20050902:
12965
129661) ACPI CA Core Subsystem:
12967
12968Fixed a problem with the internal Owner ID allocation and deallocation
12969mechanisms for control method execution and recursive method invocation.
12970This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
12971messages seen on some systems. Recursive method invocation depth is
12972currently limited to 255. (Alexey Starikovskiy)
12973
12974Completely eliminated all vestiges of support for the "module-level
12975executable code" until this support is fully implemented and debugged.
12976This
12977should eliminate the NO_RETURN_VALUE exceptions seen during table load on
12978some systems that invoke this support.
12979
12980Fixed a problem within the resource manager code where the transaction
12981flags
12982for a 64-bit address descriptor were handled incorrectly in the type-
12983specific flag byte.
12984
12985Consolidated duplicate code within the address descriptor resource
12986manager
12987code, reducing overall subsystem code size.
12988
12989Fixed a fault when using the AML debugger "disassemble" command to
12990disassemble individual control methods.
12991
12992Removed references to the "release_current" directory within the Unix
12993release package.
12994
12995Code and Data Size: The current and previous core subsystem library sizes
12996are shown below. These are the code and data sizes for the acpica.lib
12997produced by the Microsoft Visual C++ 6.0 compiler. These values do not
12998include any ACPI driver or OSPM code. The debug version of the code
12999includes
13000the debug output trace mechanism and has a much larger code and data
13001size.
13002Note that these values will vary depending on the efficiency of the
13003compiler
13004and the compiler options used during generation.
13005
13006  Previous Release:
13007    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
13008    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
13009  Current Release:
13010    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
13011    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
13012
13013
130142) iASL Compiler/Disassembler:
13015
13016Implemented an error check for illegal duplicate values in the interrupt
13017and
13018dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
13019Interrupt().
13020
13021Implemented error checking for the Irq() and IrqNoFlags() macros to
13022detect
13023too many values in the interrupt list (16 max) and invalid values in the
13024list (range 0 - 15)
13025
13026The maximum length string literal within an ASL file is now restricted to
13027200 characters as per the ACPI specification.
13028
13029Fixed a fault when using the -ln option (generate namespace listing).
13030
13031Implemented an error check to determine if a DescriptorName within a
13032resource descriptor has already been used within the current scope.
13033
13034----------------------------------------
1303515 August 2005.  Summary of changes for version 20050815:
13036
130371) ACPI CA Core Subsystem:
13038
13039Implemented a full bytewise compare to determine if a table load request
13040is
13041attempting to load a duplicate table. The compare is performed if the
13042table
13043signatures and table lengths match. This will allow different tables with
13044the same OEM Table ID and revision to be loaded - probably against the
13045ACPI
13046specification, but discovered in the field nonetheless.
13047
13048Added the changes.txt logfile to each of the zipped release packages.
13049
13050Code and Data Size: Current and previous core subsystem library sizes are
13051shown below. These are the code and data sizes for the acpica.lib
13052produced
13053by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13054any ACPI driver or OSPM code. The debug version of the code includes the
13055debug output trace mechanism and has a much larger code and data size.
13056Note
13057that these values will vary depending on the efficiency of the compiler
13058and
13059the compiler options used during generation.
13060
13061  Previous Release:
13062    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
13063    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
13064  Current Release:
13065    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
13066    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
13067
13068
130692) iASL Compiler/Disassembler:
13070
13071Fixed a problem where incorrect AML code could be generated for Package
13072objects if optimization is disabled (via the -oa switch).
13073
13074Fixed a problem with where incorrect AML code is generated for variable-
13075length packages when the package length is not specified and the number
13076of
13077initializer values is greater than 255.
13078
13079
13080----------------------------------------
1308129 July 2005.  Summary of changes for version 20050729:
13082
130831) ACPI CA Core Subsystem:
13084
13085Implemented support to ignore an attempt to install/load a particular
13086ACPI
13087table more than once. Apparently there exists BIOS code that repeatedly
13088attempts to load the same SSDT upon certain events. With assistance from
13089Venkatesh Pallipadi.
13090
13091Restructured the main interface to the AML parser in order to correctly
13092handle all exceptional conditions. This will prevent leakage of the
13093OwnerId
13094resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
13095some
13096machines. With assistance from Alexey Starikovskiy.
13097
13098Support for "module level code" has been disabled in this version due to
13099a
13100number of issues that have appeared on various machines. The support can
13101be
13102enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
13103compilation. When the issues are fully resolved, the code will be enabled
13104by
13105default again.
13106
13107Modified the internal functions for debug print support to define the
13108FunctionName parameter as a (const char *) for compatibility with
13109compiler
13110built-in macros such as __FUNCTION__, etc.
13111
13112Linted the entire ACPICA source tree for both 32-bit and 64-bit.
13113
13114Implemented support to display an object count summary for the AML
13115Debugger
13116commands Object and Methods.
13117
13118Code and Data Size: Current and previous core subsystem library sizes are
13119shown below. These are the code and data sizes for the acpica.lib
13120produced
13121by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13122any ACPI driver or OSPM code. The debug version of the code includes the
13123debug output trace mechanism and has a much larger code and data size.
13124Note
13125that these values will vary depending on the efficiency of the compiler
13126and
13127the compiler options used during generation.
13128
13129  Previous Release:
13130    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
13131    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
13132  Current Release:
13133    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
13134    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
13135
13136
131372) iASL Compiler/Disassembler:
13138
13139Fixed a regression that appeared in the 20050708 version of the compiler
13140where an error message was inadvertently emitted for invocations of the
13141_OSI
13142reserved control method.
13143
13144----------------------------------------
1314508 July 2005.  Summary of changes for version 20050708:
13146
131471) ACPI CA Core Subsystem:
13148
13149The use of the CPU stack in the debug version of the subsystem has been
13150considerably reduced. Previously, a debug structure was declared in every
13151function that used the debug macros. This structure has been removed in
13152favor of declaring the individual elements as parameters to the debug
13153functions. This reduces the cumulative stack use during nested execution
13154of
13155ACPI function calls at the cost of a small increase in the code size of
13156the
13157debug version of the subsystem. With assistance from Alexey Starikovskiy
13158and
13159Len Brown.
13160
13161Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
13162headers to define a macro that will return the current function name at
13163runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
13164by
13165the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
13166compiler-dependent header, the function name is saved on the CPU stack
13167(one
13168pointer per function.) This mechanism is used because apparently there
13169exists no standard ANSI-C defined macro that that returns the function
13170name.
13171
13172Redesigned and reimplemented the "Owner ID" mechanism used to track
13173namespace objects created/deleted by ACPI tables and control method
13174execution. A bitmap is now used to allocate and free the IDs, thus
13175solving
13176the wraparound problem present in the previous implementation. The size
13177of
13178the namespace node descriptor was reduced by 2 bytes as a result (Alexey
13179Starikovskiy).
13180
13181Removed the UINT32_BIT and UINT16_BIT types that were used for the
13182bitfield
13183flag definitions within the headers for the predefined ACPI tables. These
13184have been replaced by UINT8_BIT in order to increase the code portability
13185of
13186the subsystem. If the use of UINT8 remains a problem, we may be forced to
13187eliminate bitfields entirely because of a lack of portability.
13188
13189Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
13190This
13191is a frequently used function and this improvement increases the
13192performance
13193of the entire subsystem (Alexey Starikovskiy).
13194
13195Fixed several possible memory leaks and the inverse - premature object
13196deletion (Alexey Starikovskiy).
13197
13198Code and Data Size: Current and previous core subsystem library sizes are
13199shown below. These are the code and data sizes for the acpica.lib
13200produced
13201by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13202any ACPI driver or OSPM code. The debug version of the code includes the
13203debug output trace mechanism and has a much larger code and data size.
13204Note
13205that these values will vary depending on the efficiency of the compiler
13206and
13207the compiler options used during generation.
13208
13209  Previous Release:
13210    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
13211    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
13212  Current Release:
13213    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
13214    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
13215
13216----------------------------------------
1321724 June 2005.  Summary of changes for version 20050624:
13218
132191) ACPI CA Core Subsystem:
13220
13221Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
13222the host-defined cache object. This allows the OSL implementation to
13223define
13224and type this object in any manner desired, simplifying the OSL
13225implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
13226Linux, and should be defined in the OS-specific header file for other
13227operating systems as required.
13228
13229Changed the interface to AcpiOsAcquireObject to directly return the
13230requested object as the function return (instead of ACPI_STATUS.) This
13231change was made for performance reasons, since this is the purpose of the
13232interface in the first place. AcpiOsAcquireObject is now similar to the
13233AcpiOsAllocate interface.
13234
13235Implemented a new AML debugger command named Businfo. This command
13236displays
13237information about all devices that have an associate _PRT object. The
13238_ADR,
13239_HID, _UID, and _CID are displayed for these devices.
13240
13241Modified the initialization sequence in AcpiInitializeSubsystem to call
13242the
13243OSL interface AcpiOslInitialize first, before any local initialization.
13244This
13245change was required because the global initialization now calls OSL
13246interfaces.
13247
13248Enhanced the Dump command to display the entire contents of Package
13249objects
13250(including all sub-objects and their values.)
13251
13252Restructured the code base to split some files because of size and/or
13253because the code logically belonged in a separate file. New files are
13254listed
13255below. All makefiles and project files included in the ACPI CA release
13256have
13257been updated.
13258    utilities/utcache.c           /* Local cache interfaces */
13259    utilities/utmutex.c           /* Local mutex support */
13260    utilities/utstate.c           /* State object support */
13261    interpreter/parser/psloop.c   /* Main AML parse loop */
13262
13263Code and Data Size: Current and previous core subsystem library sizes are
13264shown below. These are the code and data sizes for the acpica.lib
13265produced
13266by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13267any ACPI driver or OSPM code. The debug version of the code includes the
13268debug output trace mechanism and has a much larger code and data size.
13269Note
13270that these values will vary depending on the efficiency of the compiler
13271and
13272the compiler options used during generation.
13273
13274  Previous Release:
13275    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
13276    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
13277  Current Release:
13278    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
13279    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
13280
13281
132822) iASL Compiler/Disassembler:
13283
13284Fixed a regression introduced in version 20050513 where the use of a
13285Package
13286object within a Case() statement caused a compile time exception. The
13287original behavior has been restored (a Match() operator is emitted.)
13288
13289----------------------------------------
1329017 June 2005.  Summary of changes for version 20050617:
13291
132921) ACPI CA Core Subsystem:
13293
13294Moved the object cache operations into the OS interface layer (OSL) to
13295allow
13296the host OS to handle these operations if desired (for example, the Linux
13297OSL will invoke the slab allocator). This support is optional; the
13298compile
13299time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
13300cache
13301code in the ACPI CA core. The new OSL interfaces are shown below. See
13302utalloc.c for an example implementation, and acpiosxf.h for the exact
13303interface definitions. With assistance from Alexey Starikovskiy.
13304    AcpiOsCreateCache
13305    AcpiOsDeleteCache
13306    AcpiOsPurgeCache
13307    AcpiOsAcquireObject
13308    AcpiOsReleaseObject
13309
13310Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
13311return
13312and restore a flags parameter. This fits better with many OS lock models.
13313Note: the current execution state (interrupt handler or not) is no longer
13314passed to these interfaces. If necessary, the OSL must determine this
13315state
13316by itself, a simple and fast operation. With assistance from Alexey
13317Starikovskiy.
13318
13319Fixed a problem in the ACPI table handling where a valid XSDT was assumed
13320present if the revision of the RSDP was 2 or greater. According to the
13321ACPI
13322specification, the XSDT is optional in all cases, and the table manager
13323therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
13324Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
13325contain
13326only the RSDT.
13327
13328Fixed an interpreter problem with the Mid() operator in the case of an
13329input
13330string where the resulting output string is of zero length. It now
13331correctly
13332returns a valid, null terminated string object instead of a string object
13333with a null pointer.
13334
13335Fixed a problem with the control method argument handling to allow a
13336store
13337to an Arg object that already contains an object of type Device. The
13338Device
13339object is now correctly overwritten. Previously, an error was returned.
13340
13341
13342Enhanced the debugger Find command to emit object values in addition to
13343the
13344found object pathnames. The output format is the same as the dump
13345namespace
13346command.
13347
13348Enhanced the debugger Set command. It now has the ability to set the
13349value
13350of any Named integer object in the namespace (Previously, only method
13351locals
13352and args could be set.)
13353
13354Code and Data Size: Current and previous core subsystem library sizes are
13355shown below. These are the code and data sizes for the acpica.lib
13356produced
13357by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13358any ACPI driver or OSPM code. The debug version of the code includes the
13359debug output trace mechanism and has a much larger code and data size.
13360Note
13361that these values will vary depending on the efficiency of the compiler
13362and
13363the compiler options used during generation.
13364
13365  Previous Release:
13366    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
13367    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
13368  Current Release:
13369    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
13370    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
13371
13372
133732) iASL Compiler/Disassembler:
13374
13375Fixed a regression in the disassembler where if/else/while constructs
13376were
13377output incorrectly. This problem was introduced in the previous release
13378(20050526). This problem also affected the single-step disassembly in the
13379debugger.
13380
13381Fixed a problem where compiling the reserved _OSI method would randomly
13382(but
13383rarely) produce compile errors.
13384
13385Enhanced the disassembler to emit compilable code in the face of
13386incorrect
13387AML resource descriptors. If the optional ResourceSourceIndex is present,
13388but the ResourceSource is not, do not emit the ResourceSourceIndex in the
13389disassembly. Otherwise, the resulting code cannot be compiled without
13390errors.
13391
13392----------------------------------------
1339326 May 2005.  Summary of changes for version 20050526:
13394
133951) ACPI CA Core Subsystem:
13396
13397Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
13398the module level (not within a control method.) These opcodes are
13399executed
13400exactly once at the time the table is loaded. This type of code was legal
13401up
13402until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
13403in
13404order to provide backwards compatibility with earlier BIOS
13405implementations.
13406This eliminates the "Encountered executable code at module level" warning
13407that was previously generated upon detection of such code.
13408
13409Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
13410inadvertently be generated during the lookup of namespace objects in the
13411second pass parse of ACPI tables and control methods. It appears that
13412this
13413problem could occur during the resolution of forward references to
13414namespace
13415objects.
13416
13417Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
13418corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
13419allows the deadlock detection debug code to be compiled out in the normal
13420case, improving mutex performance (and overall subsystem performance)
13421considerably.
13422
13423Implemented a handful of miscellaneous fixes for possible memory leaks on
13424error conditions and error handling control paths. These fixes were
13425suggested by FreeBSD and the Coverity Prevent source code analysis tool.
13426
13427Added a check for a null RSDT pointer in AcpiGetFirmwareTable
13428(tbxfroot.c)
13429to prevent a fault in this error case.
13430
13431Code and Data Size: Current and previous core subsystem library sizes are
13432shown below. These are the code and data sizes for the acpica.lib
13433produced
13434by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13435any ACPI driver or OSPM code. The debug version of the code includes the
13436debug output trace mechanism and has a much larger code and data size.
13437Note
13438that these values will vary depending on the efficiency of the compiler
13439and
13440the compiler options used during generation.
13441
13442  Previous Release:
13443    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13444    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13445  Current Release:
13446    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
13447    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
13448
13449
134502) iASL Compiler/Disassembler:
13451
13452Implemented support to allow Type 1 and Type 2 ASL operators to appear at
13453the module level (not within a control method.) These operators will be
13454executed once at the time the table is loaded. This type of code was
13455legal
13456up until the release of ACPI 2.0B (2002) and is now supported by the iASL
13457compiler in order to provide backwards compatibility with earlier BIOS
13458ASL
13459code.
13460
13461The ACPI integer width (specified via the table revision ID or the -r
13462override, 32 or 64 bits) is now used internally during compile-time
13463constant
13464folding to ensure that constants are truncated to 32 bits if necessary.
13465Previously, the revision ID value was only emitted in the AML table
13466header.
13467
13468An error message is now generated for the Mutex and Method operators if
13469the
13470SyncLevel parameter is outside the legal range of 0 through 15.
13471
13472Fixed a problem with the Method operator ParameterTypes list handling
13473(ACPI
134743.0). Previously, more than 2 types or 2 arguments generated a syntax
13475error.
13476The actual underlying implementation of method argument typechecking is
13477still under development, however.
13478
13479----------------------------------------
1348013 May 2005.  Summary of changes for version 20050513:
13481
134821) ACPI CA Core Subsystem:
13483
13484Implemented support for PCI Express root bridges -- added support for
13485device
13486PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
13487
13488The interpreter now automatically truncates incoming 64-bit constants to
1348932
13490bits if currently executing out of a 32-bit ACPI table (Revision < 2).
13491This
13492also affects the iASL compiler constant folding. (Note: as per below, the
13493iASL compiler no longer allows 64-bit constants within 32-bit tables.)
13494
13495Fixed a problem where string and buffer objects with "static" pointers
13496(pointers to initialization data within an ACPI table) were not handled
13497consistently. The internal object copy operation now always copies the
13498data
13499to a newly allocated buffer, regardless of whether the source object is
13500static or not.
13501
13502Fixed a problem with the FromBCD operator where an implicit result
13503conversion was improperly performed while storing the result to the
13504target
13505operand. Since this is an "explicit conversion" operator, the implicit
13506conversion should never be performed on the output.
13507
13508Fixed a problem with the CopyObject operator where a copy to an existing
13509named object did not always completely overwrite the existing object
13510stored
13511at name. Specifically, a buffer-to-buffer copy did not delete the
13512existing
13513buffer.
13514
13515Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
13516and
13517structs for consistency.
13518
13519Code and Data Size: Current and previous core subsystem library sizes are
13520shown below. These are the code and data sizes for the acpica.lib
13521produced
13522by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13523any ACPI driver or OSPM code. The debug version of the code includes the
13524debug output trace mechanism and has a much larger code and data size.
13525Note
13526that these values will vary depending on the efficiency of the compiler
13527and
13528the compiler options used during generation.
13529
13530  Previous Release:
13531    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13532    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13533  Current Release: (Same sizes)
13534    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13535    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13536
13537
135382) iASL Compiler/Disassembler:
13539
13540The compiler now emits a warning if an attempt is made to generate a 64-
13541bit
13542integer constant from within a 32-bit ACPI table (Revision < 2). The
13543integer
13544is truncated to 32 bits.
13545
13546Fixed a problem with large package objects: if the static length of the
13547package is greater than 255, the "variable length package" opcode is
13548emitted. Previously, this caused an error. This requires an update to the
13549ACPI spec, since it currently (incorrectly) states that packages larger
13550than
13551255 elements are not allowed.
13552
13553The disassembler now correctly handles variable length packages and
13554packages
13555larger than 255 elements.
13556
13557----------------------------------------
1355808 April 2005.  Summary of changes for version 20050408:
13559
135601) ACPI CA Core Subsystem:
13561
13562Fixed three cases in the interpreter where an "index" argument to an ASL
13563function was still (internally) 32 bits instead of the required 64 bits.
13564This was the Index argument to the Index, Mid, and Match operators.
13565
13566The "strupr" function is now permanently local (AcpiUtStrupr), since this
13567is
13568not a POSIX-defined function and not present in most kernel-level C
13569libraries. All references to the C library strupr function have been
13570removed
13571from the headers.
13572
13573Completed the deployment of static functions/prototypes. All prototypes
13574with
13575the static attribute have been moved from the headers to the owning C
13576file.
13577
13578Implemented an extract option (-e) for the AcpiBin utility (AML binary
13579utility). This option allows the utility to extract individual ACPI
13580tables
13581from the output of AcpiDmp. It provides the same functionality of the
13582acpixtract.pl perl script without the worry of setting the correct perl
13583options. AcpiBin runs on Windows and has not yet been generated/validated
13584in
13585the Linux/Unix environment (but should be soon).
13586
13587Updated and fixed the table dump option for AcpiBin (-d). This option
13588converts a single ACPI table to a hex/ascii file, similar to the output
13589of
13590AcpiDmp.
13591
13592Code and Data Size: Current and previous core subsystem library sizes are
13593shown below. These are the code and data sizes for the acpica.lib
13594produced
13595by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13596any ACPI driver or OSPM code. The debug version of the code includes the
13597debug output trace mechanism and has a much larger code and data size.
13598Note
13599that these values will vary depending on the efficiency of the compiler
13600and
13601the compiler options used during generation.
13602
13603  Previous Release:
13604    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
13605    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
13606  Current Release:
13607    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13608    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13609
13610
136112) iASL Compiler/Disassembler:
13612
13613Disassembler fix: Added a check to ensure that the table length found in
13614the
13615ACPI table header within the input file is not longer than the actual
13616input
13617file size. This indicates some kind of file or table corruption.
13618
13619----------------------------------------
1362029 March 2005.  Summary of changes for version 20050329:
13621
136221) ACPI CA Core Subsystem:
13623
13624An error is now generated if an attempt is made to create a Buffer Field
13625of
13626length zero (A CreateField with a length operand of zero.)
13627
13628The interpreter now issues a warning whenever executable code at the
13629module
13630level is detected during ACPI table load. This will give some idea of the
13631prevalence of this type of code.
13632
13633Implemented support for references to named objects (other than control
13634methods) within package objects.
13635
13636Enhanced package object output for the debug object. Package objects are
13637now
13638completely dumped, showing all elements.
13639
13640Enhanced miscellaneous object output for the debug object. Any object can
13641now be written to the debug object (for example, a device object can be
13642written, and the type of the object will be displayed.)
13643
13644The "static" qualifier has been added to all local functions across both
13645the
13646core subsystem and the iASL compiler.
13647
13648The number of "long" lines (> 80 chars) within the source has been
13649significantly reduced, by about 1/3.
13650
13651Cleaned up all header files to ensure that all CA/iASL functions are
13652prototyped (even static functions) and the formatting is consistent.
13653
13654Two new header files have been added, acopcode.h and acnames.h.
13655
13656Removed several obsolete functions that were no longer used.
13657
13658Code and Data Size: Current and previous core subsystem library sizes are
13659shown below. These are the code and data sizes for the acpica.lib
13660produced
13661by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13662any ACPI driver or OSPM code. The debug version of the code includes the
13663debug output trace mechanism and has a much larger code and data size.
13664Note
13665that these values will vary depending on the efficiency of the compiler
13666and
13667the compiler options used during generation.
13668
13669  Previous Release:
13670    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13671    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
13672  Current Release:
13673    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
13674    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
13675
13676
13677
136782) iASL Compiler/Disassembler:
13679
13680Fixed a problem with the resource descriptor generation/support. For the
13681ResourceSourceIndex and the ResourceSource fields, both must be present,
13682or
13683both must be not present - can't have one without the other.
13684
13685The compiler now returns non-zero from the main procedure if any errors
13686have
13687occurred during the compilation.
13688
13689
13690----------------------------------------
1369109 March 2005.  Summary of changes for version 20050309:
13692
136931) ACPI CA Core Subsystem:
13694
13695The string-to-buffer implicit conversion code has been modified again
13696after
13697a change to the ACPI specification.  In order to match the behavior of
13698the
13699other major ACPI implementation, the target buffer is no longer truncated
13700if
13701the source string is smaller than an existing target buffer. This change
13702requires an update to the ACPI spec, and should eliminate the recent
13703AE_AML_BUFFER_LIMIT issues.
13704
13705The "implicit return" support was rewritten to a new algorithm that
13706solves
13707the general case. Rather than attempt to determine when a method is about
13708to
13709exit, the result of every ASL operator is saved momentarily until the
13710very
13711next ASL operator is executed. Therefore, no matter how the method exits,
13712there will always be a saved implicit return value. This feature is only
13713enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
13714eliminate
13715AE_AML_NO_RETURN_VALUE errors when enabled.
13716
13717Implemented implicit conversion support for the predicate (operand) of
13718the
13719If, Else, and While operators. String and Buffer arguments are
13720automatically
13721converted to Integers.
13722
13723Changed the string-to-integer conversion behavior to match the new ACPI
13724errata: "If no integer object exists, a new integer is created. The ASCII
13725string is interpreted as a hexadecimal constant. Each string character is
13726interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
13727with the first character as the most significant digit, and ending with
13728the
13729first non-hexadecimal character or end-of-string." This means that the
13730first
13731non-hex character terminates the conversion and this is the code that was
13732changed.
13733
13734Fixed a problem where the ObjectType operator would fail (fault) when
13735used
13736on an Index of a Package which pointed to a null package element. The
13737operator now properly returns zero (Uninitialized) in this case.
13738
13739Fixed a problem where the While operator used excessive memory by not
13740properly popping the result stack during execution. There was no memory
13741leak
13742after execution, however. (Code provided by Valery Podrezov.)
13743
13744Fixed a problem where references to control methods within Package
13745objects
13746caused the method to be invoked, instead of producing a reference object
13747pointing to the method.
13748
13749Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
13750to
13751improve performance and reduce code size. (Code provided by Alexey
13752Starikovskiy.)
13753
13754Code and Data Size: Current and previous core subsystem library sizes are
13755shown below. These are the code and data sizes for the acpica.lib
13756produced
13757by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13758any ACPI driver or OSPM code. The debug version of the code includes the
13759debug output trace mechanism and has a much larger code and data size.
13760Note
13761that these values will vary depending on the efficiency of the compiler
13762and
13763the compiler options used during generation.
13764
13765  Previous Release:
13766    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13767    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
13768  Current Release:
13769    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13770    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
13771
13772
137732) iASL Compiler/Disassembler:
13774
13775Fixed a problem with the Return operator with no arguments. Since the AML
13776grammar for the byte encoding requires an operand for the Return opcode,
13777the
13778compiler now emits a Return(Zero) for this case.  An ACPI specification
13779update has been written for this case.
13780
13781For tables other than the DSDT, namepath optimization is automatically
13782disabled. This is because SSDTs can be loaded anywhere in the namespace,
13783the
13784compiler has no knowledge of where, and thus cannot optimize namepaths.
13785
13786Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
13787inadvertently omitted from the ACPI specification, and will require an
13788update to the spec.
13789
13790The source file scan for ASCII characters is now optional (-a). This
13791change
13792was made because some vendors place non-ascii characters within comments.
13793However, the scan is simply a brute-force byte compare to ensure all
13794characters in the file are in the range 0x00 to 0x7F.
13795
13796Fixed a problem with the CondRefOf operator where the compiler was
13797inappropriately checking for the existence of the target. Since the point
13798of
13799the operator is to check for the existence of the target at run-time, the
13800compiler no longer checks for the target existence.
13801
13802Fixed a problem where errors generated from the internal AML interpreter
13803during constant folding were not handled properly, causing a fault.
13804
13805Fixed a problem with overly aggressive range checking for the Stall
13806operator. The valid range (max 255) is now only checked if the operand is
13807of
13808type Integer. All other operand types cannot be statically checked.
13809
13810Fixed a problem where control method references within the RefOf,
13811DeRefOf,
13812and ObjectType operators were not treated properly. They are now treated
13813as
13814actual references, not method invocations.
13815
13816Fixed and enhanced the "list namespace" option (-ln). This option was
13817broken
13818a number of releases ago.
13819
13820Improved error handling for the Field, IndexField, and BankField
13821operators.
13822The compiler now cleanly reports and recovers from errors in the field
13823component (FieldUnit) list.
13824
13825Fixed a disassembler problem where the optional ResourceDescriptor fields
13826TRS and TTP were not always handled correctly.
13827
13828Disassembler - Comments in output now use "//" instead of "/*"
13829
13830----------------------------------------
1383128 February 2005.  Summary of changes for version 20050228:
13832
138331) ACPI CA Core Subsystem:
13834
13835Fixed a problem where the result of an Index() operator (an object
13836reference) must increment the reference count on the target object for
13837the
13838life of the object reference.
13839
13840Implemented AML Interpreter and Debugger support for the new ACPI 3.0
13841Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
13842WordSpace
13843resource descriptors.
13844
13845Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
13846Space Descriptor" string, indicating interpreter support for the
13847descriptors
13848above.
13849
13850Implemented header support for the new ACPI 3.0 FADT flag bits.
13851
13852Implemented header support for the new ACPI 3.0 PCI Express bits for the
13853PM1
13854status/enable registers.
13855
13856Updated header support for the MADT processor local Apic struct and MADT
13857platform interrupt source struct for new ACPI 3.0 fields.
13858
13859Implemented header support for the SRAT and SLIT ACPI tables.
13860
13861Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
13862flag
13863at runtime.
13864
13865Code and Data Size: Current and previous core subsystem library sizes are
13866shown below. These are the code and data sizes for the acpica.lib
13867produced
13868by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13869any ACPI driver or OSPM code. The debug version of the code includes the
13870debug output trace mechanism and has a much larger code and data size.
13871Note
13872that these values will vary depending on the efficiency of the compiler
13873and
13874the compiler options used during generation.
13875
13876  Previous Release:
13877    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
13878    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
13879  Current Release:
13880    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13881    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
13882
13883
138842) iASL Compiler/Disassembler:
13885
13886Fixed a problem with the internal 64-bit String-to-integer conversion
13887with
13888strings less than two characters long.
13889
13890Fixed a problem with constant folding where the result of the Index()
13891operator can not be considered a constant. This means that Index() cannot
13892be
13893a type3 opcode and this will require an update to the ACPI specification.
13894
13895Disassembler: Implemented support for the TTP, MTP, and TRS resource
13896descriptor fields. These fields were inadvertently ignored and not output
13897in
13898the disassembly of the resource descriptor.
13899
13900
13901 ----------------------------------------
1390211 February 2005.  Summary of changes for version 20050211:
13903
139041) ACPI CA Core Subsystem:
13905
13906Implemented ACPI 3.0 support for implicit conversion within the Match()
13907operator. MatchObjects can now be of type integer, buffer, or string
13908instead
13909of just type integer.  Package elements are implicitly converted to the
13910type
13911of the MatchObject. This change aligns the behavior of Match() with the
13912behavior of the other logical operators (LLess(), etc.) It also requires
13913an
13914errata change to the ACPI specification as this support was intended for
13915ACPI 3.0, but was inadvertently omitted.
13916
13917Fixed a problem with the internal implicit "to buffer" conversion.
13918Strings
13919that are converted to buffers will cause buffer truncation if the string
13920is
13921smaller than the target buffer. Integers that are converted to buffers
13922will
13923not cause buffer truncation, only zero extension (both as per the ACPI
13924spec.) The problem was introduced when code was added to truncate the
13925buffer, but this should not be performed in all cases, only the string
13926case.
13927
13928Fixed a problem with the Buffer and Package operators where the
13929interpreter
13930would get confused if two such operators were used as operands to an ASL
13931operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
13932stack was not being popped after the execution of these operators,
13933resulting
13934in an AE_NO_RETURN_VALUE exception.
13935
13936Fixed a problem with constructs of the form Store(Index(...),...). The
13937reference object returned from Index was inadvertently resolved to an
13938actual
13939value. This problem was introduced in version 20050114 when the behavior
13940of
13941Store() was modified to restrict the object types that can be used as the
13942source operand (to match the ACPI specification.)
13943
13944Reduced excessive stack use within the AcpiGetObjectInfo procedure.
13945
13946Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
13947
13948Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
13949
13950Code and Data Size: Current and previous core subsystem library sizes are
13951shown below. These are the code and data sizes for the acpica.lib
13952produced
13953by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13954any ACPI driver or OSPM code. The debug version of the code includes the
13955debug output trace mechanism and has a much larger code and data size.
13956Note
13957that these values will vary depending on the efficiency of the compiler
13958and
13959the compiler options used during generation.
13960
13961  Previous Release:
13962    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
13963    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
13964  Current Release:
13965    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
13966    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
13967
13968
139692) iASL Compiler/Disassembler:
13970
13971Fixed a code generation problem in the constant folding optimization code
13972where incorrect code was generated if a constant was reduced to a buffer
13973object (i.e., a reduced type 5 opcode.)
13974
13975Fixed a typechecking problem for the ToBuffer operator. Caused by an
13976incorrect return type in the internal opcode information table.
13977
13978----------------------------------------
1397925 January 2005.  Summary of changes for version 20050125:
13980
139811) ACPI CA Core Subsystem:
13982
13983Fixed a recently introduced problem with the Global Lock where the
13984underlying semaphore was not created.  This problem was introduced in
13985version 20050114, and caused an AE_AML_NO_OPERAND exception during an
13986Acquire() operation on _GL.
13987
13988The local object cache is now optional, and is disabled by default. Both
13989AcpiExec and the iASL compiler enable the cache because they run in user
13990mode and this enhances their performance. #define
13991ACPI_ENABLE_OBJECT_CACHE
13992to enable the local cache.
13993
13994Fixed an issue in the internal function AcpiUtEvaluateObject concerning
13995the
13996optional "implicit return" support where an error was returned if no
13997return
13998object was expected, but one was implicitly returned. AE_OK is now
13999returned
14000in this case and the implicitly returned object is deleted.
14001AcpiUtEvaluateObject is only occasionally used, and only to execute
14002reserved
14003methods such as _STA and _INI where the return type is known up front.
14004
14005Fixed a few issues with the internal convert-to-integer code. It now
14006returns
14007an error if an attempt is made to convert a null string, a string of only
14008blanks/tabs, or a zero-length buffer. This affects both implicit
14009conversion
14010and explicit conversion via the ToInteger() operator.
14011
14012The internal debug code in AcpiUtAcquireMutex has been commented out. It
14013is
14014not needed for normal operation and should increase the performance of
14015the
14016entire subsystem. The code remains in case it is needed for debug
14017purposes
14018again.
14019
14020The AcpiExec source and makefile are included in the Unix/Linux package
14021for
14022the first time.
14023
14024Code and Data Size: Current and previous core subsystem library sizes are
14025shown below. These are the code and data sizes for the acpica.lib
14026produced
14027by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14028any ACPI driver or OSPM code. The debug version of the code includes the
14029debug output trace mechanism and has a much larger code and data size.
14030Note
14031that these values will vary depending on the efficiency of the compiler
14032and
14033the compiler options used during generation.
14034
14035  Previous Release:
14036    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
14037    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
14038  Current Release:
14039    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
14040    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
14041
140422) iASL Compiler/Disassembler:
14043
14044Switch/Case support: A warning is now issued if the type of the Switch
14045value
14046cannot be determined at compile time. For example, Switch(Arg0) will
14047generate the warning, and the type is assumed to be an integer. As per
14048the
14049ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
14050the
14051warning.
14052
14053Switch/Case support: Implemented support for buffer and string objects as
14054the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
14055buffers and strings.
14056
14057Switch/Case support: The emitted code for the LEqual() comparisons now
14058uses
14059the switch value as the first operand, not the second. The case value is
14060now
14061the second operand, and this allows the case value to be implicitly
14062converted to the type of the switch value, not the other way around.
14063
14064Switch/Case support: Temporary variables are now emitted immediately
14065within
14066the control method, not at the global level. This means that there are
14067now
1406836 temps available per-method, not 36 temps per-module as was the case
14069with
14070the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
14071
14072----------------------------------------
1407314 January 2005.  Summary of changes for version 20050114:
14074
14075Added 2005 copyright to all module headers.  This affects every module in
14076the core subsystem, iASL compiler, and the utilities.
14077
140781) ACPI CA Core Subsystem:
14079
14080Fixed an issue with the String-to-Buffer conversion code where the string
14081null terminator was not included in the buffer after conversion, but
14082there
14083is existing ASL that assumes the string null terminator is included. This
14084is
14085the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
14086introduced in the previous version when the code was updated to correctly
14087set the converted buffer size as per the ACPI specification. The ACPI
14088spec
14089is ambiguous and will be updated to specify that the null terminator must
14090be
14091included in the converted buffer. This also affects the ToBuffer() ASL
14092operator.
14093
14094Fixed a problem with the Mid() ASL/AML operator where it did not work
14095correctly on Buffer objects. Newly created sub-buffers were not being
14096marked
14097as initialized.
14098
14099
14100Fixed a problem in AcpiTbFindTable where incorrect string compares were
14101performed on the OemId and OemTableId table header fields.  These fields
14102are
14103not null terminated, so strncmp is now used instead of strcmp.
14104
14105Implemented a restriction on the Store() ASL/AML operator to align the
14106behavior with the ACPI specification.  Previously, any object could be
14107used
14108as the source operand.  Now, the only objects that may be used are
14109Integers,
14110Buffers, Strings, Packages, Object References, and DDB Handles.  If
14111necessary, the original behavior can be restored by enabling the
14112EnableInterpreterSlack flag.
14113
14114Enhanced the optional "implicit return" support to allow an implicit
14115return
14116value from methods that are invoked externally via the AcpiEvaluateObject
14117interface.  This enables implicit returns from the _STA and _INI methods,
14118for example.
14119
14120Changed the Revision() ASL/AML operator to return the current version of
14121the
14122AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
14123returned
14124the supported ACPI version (This is the function of the _REV method).
14125
14126Updated the _REV predefined method to return the currently supported
14127version
14128of ACPI, now 3.
14129
14130Implemented batch mode option for the AcpiExec utility (-b).
14131
14132Code and Data Size: Current and previous core subsystem library sizes are
14133shown below. These are the code and data sizes for the acpica.lib
14134produced
14135by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14136any ACPI driver or OSPM code. The debug version of the code includes the
14137debug output trace mechanism and has a much larger code and data size.
14138Note
14139that these values will vary depending on the efficiency of the compiler
14140and
14141the compiler options used during generation.
14142
14143  Previous Release:
14144    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14145    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
14146  Current Release:
14147    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
14148    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
14149
14150----------------------------------------
1415110 December 2004.  Summary of changes for version 20041210:
14152
14153ACPI 3.0 support is nearing completion in both the iASL compiler and the
14154ACPI CA core subsystem.
14155
141561) ACPI CA Core Subsystem:
14157
14158Fixed a problem in the ToDecimalString operator where the resulting
14159string
14160length was incorrectly calculated. The length is now calculated exactly,
14161eliminating incorrect AE_STRING_LIMIT exceptions.
14162
14163Fixed a problem in the ToHexString operator to allow a maximum 200
14164character
14165string to be produced.
14166
14167Fixed a problem in the internal string-to-buffer and buffer-to-buffer
14168copy
14169routine where the length of the resulting buffer was not truncated to the
14170new size (if the target buffer already existed).
14171
14172Code and Data Size: Current and previous core subsystem library sizes are
14173shown below. These are the code and data sizes for the acpica.lib
14174produced
14175by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14176any ACPI driver or OSPM code. The debug version of the code includes the
14177debug output trace mechanism and has a much larger code and data size.
14178Note
14179that these values will vary depending on the efficiency of the compiler
14180and
14181the compiler options used during generation.
14182
14183  Previous Release:
14184    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14185    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
14186  Current Release:
14187    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14188    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
14189
14190
141912) iASL Compiler/Disassembler:
14192
14193Implemented the new ACPI 3.0 resource template macros - DWordSpace,
14194ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
14195Includes support in the disassembler.
14196
14197Implemented support for the new (ACPI 3.0) parameter to the Register
14198macro,
14199AccessSize.
14200
14201Fixed a problem where the _HE resource name for the Interrupt macro was
14202referencing bit 0 instead of bit 1.
14203
14204Implemented check for maximum 255 interrupts in the Interrupt macro.
14205
14206Fixed a problem with the predefined resource descriptor names where
14207incorrect AML code was generated if the offset within the resource buffer
14208was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
14209but did not update the surrounding package lengths.
14210
14211Changes to the Dma macro:  All channels within the channel list must be
14212in
14213the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
14214optional (default is BusMaster).
14215
14216Implemented check for maximum 7 data bytes for the VendorShort macro.
14217
14218The ReadWrite parameter is now optional for the Memory32 and similar
14219macros.
14220
14221----------------------------------------
1422203 December 2004.  Summary of changes for version 20041203:
14223
142241) ACPI CA Core Subsystem:
14225
14226The low-level field insertion/extraction code (exfldio) has been
14227completely
14228rewritten to eliminate unnecessary complexity, bugs, and boundary
14229conditions.
14230
14231Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
14232ToDecimalString
14233operators where the input operand could be inadvertently deleted if no
14234conversion was necessary (e.g., if the input to ToInteger was an Integer
14235object.)
14236
14237Fixed a problem with the ToDecimalString and ToHexString where an
14238incorrect
14239exception code was returned if the resulting string would be > 200 chars.
14240AE_STRING_LIMIT is now returned.
14241
14242Fixed a problem with the Concatenate operator where AE_OK was always
14243returned, even if the operation failed.
14244
14245Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
14246semaphores to be allocated.
14247
14248Code and Data Size: Current and previous core subsystem library sizes are
14249shown below. These are the code and data sizes for the acpica.lib
14250produced
14251by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14252any ACPI driver or OSPM code. The debug version of the code includes the
14253debug output trace mechanism and has a much larger code and data size.
14254Note
14255that these values will vary depending on the efficiency of the compiler
14256and
14257the compiler options used during generation.
14258
14259  Previous Release:
14260    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14261    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14262  Current Release:
14263    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14264    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
14265
14266
142672) iASL Compiler/Disassembler:
14268
14269Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
14270recently introduced in 20041119.
14271
14272Fixed a problem with the ToUUID macro where the upper nybble of each
14273buffer
14274byte was inadvertently set to zero.
14275
14276----------------------------------------
1427719 November 2004.  Summary of changes for version 20041119:
14278
142791) ACPI CA Core Subsystem:
14280
14281Fixed a problem in the internal ConvertToInteger routine where new
14282integers
14283were not truncated to 32 bits for 32-bit ACPI tables. This routine
14284converts
14285buffers and strings to integers.
14286
14287Implemented support to store a value to an Index() on a String object.
14288This
14289is an ACPI 2.0 feature that had not yet been implemented.
14290
14291Implemented new behavior for storing objects to individual package
14292elements
14293(via the Index() operator). The previous behavior was to invoke the
14294implicit
14295conversion rules if an object was already present at the index.  The new
14296behavior is to simply delete any existing object and directly store the
14297new
14298object. Although the ACPI specification seems unclear on this subject,
14299other
14300ACPI implementations behave in this manner.  (This is the root of the
14301AE_BAD_HEX_CONSTANT issue.)
14302
14303Modified the RSDP memory scan mechanism to support the extended checksum
14304for
14305ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
14306RSDP signature is found with a valid checksum.
14307
14308Code and Data Size: Current and previous core subsystem library sizes are
14309shown below. These are the code and data sizes for the acpica.lib
14310produced
14311by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14312any ACPI driver or OSPM code. The debug version of the code includes the
14313debug output trace mechanism and has a much larger code and data size.
14314Note
14315that these values will vary depending on the efficiency of the compiler
14316and
14317the compiler options used during generation.
14318
14319  Previous Release:
14320    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14321    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14322  Current Release:
14323    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14324    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14325
14326
143272) iASL Compiler/Disassembler:
14328
14329Fixed a missing semicolon in the aslcompiler.y file.
14330
14331----------------------------------------
1433205 November 2004.  Summary of changes for version 20041105:
14333
143341) ACPI CA Core Subsystem:
14335
14336Implemented support for FADT revision 2.  This was an interim table
14337(between
14338ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
14339
14340Implemented optional support to allow uninitialized LocalX and ArgX
14341variables in a control method.  The variables are initialized to an
14342Integer
14343object with a value of zero.  This support is enabled by setting the
14344AcpiGbl_EnableInterpreterSlack flag to TRUE.
14345
14346Implemented support for Integer objects for the SizeOf operator.  Either
143474
14348or 8 is returned, depending on the current integer size (32-bit or 64-
14349bit,
14350depending on the parent table revision).
14351
14352Fixed a problem in the implementation of the SizeOf and ObjectType
14353operators
14354where the operand was resolved to a value too early, causing incorrect
14355return values for some objects.
14356
14357Fixed some possible memory leaks during exceptional conditions.
14358
14359Code and Data Size: Current and previous core subsystem library sizes are
14360shown below. These are the code and data sizes for the acpica.lib
14361produced
14362by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14363any ACPI driver or OSPM code. The debug version of the code includes the
14364debug output trace mechanism and has a much larger code and data size.
14365Note
14366that these values will vary depending on the efficiency of the compiler
14367and
14368the compiler options used during generation.
14369
14370  Previous Release:
14371    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14372    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
14373  Current Release:
14374    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14375    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14376
14377
143782) iASL Compiler/Disassembler:
14379
14380Implemented support for all ACPI 3.0 reserved names and methods.
14381
14382Implemented all ACPI 3.0 grammar elements in the front-end, including
14383support for semicolons.
14384
14385Implemented the ACPI 3.0 Function() and ToUUID() macros
14386
14387Fixed a problem in the disassembler where a Scope() operator would not be
14388emitted properly if the target of the scope was in another table.
14389
14390----------------------------------------
1439115 October 2004.  Summary of changes for version 20041015:
14392
14393Note:  ACPI CA is currently undergoing an in-depth and complete formal
14394evaluation to test/verify the following areas. Other suggestions are
14395welcome. This will result in an increase in the frequency of releases and
14396the number of bug fixes in the next few months.
14397  - Functional tests for all ASL/AML operators
14398  - All implicit/explicit type conversions
14399  - Bit fields and operation regions
14400  - 64-bit math support and 32-bit-only "truncated" math support
14401  - Exceptional conditions, both compiler and interpreter
14402  - Dynamic object deletion and memory leaks
14403  - ACPI 3.0 support when implemented
14404  - External interfaces to the ACPI subsystem
14405
14406
144071) ACPI CA Core Subsystem:
14408
14409Fixed two alignment issues on 64-bit platforms - within debug statements
14410in
14411AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
14412Address
14413field within the non-aligned ACPI generic address structure.
14414
14415Fixed a problem in the Increment and Decrement operators where incorrect
14416operand resolution could result in the inadvertent modification of the
14417original integer when the integer is passed into another method as an
14418argument and the arg is then incremented/decremented.
14419
14420Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
14421bit
14422BCD number were truncated during conversion.
14423
14424Fixed a problem in the ToDecimal operator where the length of the
14425resulting
14426string could be set incorrectly too long if the input operand was a
14427Buffer
14428object.
14429
14430Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
14431(0)
14432within a buffer would prematurely terminate a compare between buffer
14433objects.
14434
14435Added a check for string overflow (>200 characters as per the ACPI
14436specification) during the Concatenate operator with two string operands.
14437
14438Code and Data Size: Current and previous core subsystem library sizes are
14439shown below. These are the code and data sizes for the acpica.lib
14440produced
14441by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14442any ACPI driver or OSPM code. The debug version of the code includes the
14443debug output trace mechanism and has a much larger code and data size.
14444Note
14445that these values will vary depending on the efficiency of the compiler
14446and
14447the compiler options used during generation.
14448
14449  Previous Release:
14450    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14451    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
14452  Current Release:
14453    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14454    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
14455
14456
14457
144582) iASL Compiler/Disassembler:
14459
14460Allow the use of the ObjectType operator on uninitialized Locals and Args
14461(returns 0 as per the ACPI specification).
14462
14463Fixed a problem where the compiler would fault if there was a syntax
14464error
14465in the FieldName of all of the various CreateXXXField operators.
14466
14467Disallow the use of lower case letters within the EISAID macro, as per
14468the
14469ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
14470Where
14471U is an uppercase letter and N is a hex digit.
14472
14473
14474----------------------------------------
1447506 October 2004.  Summary of changes for version 20041006:
14476
144771) ACPI CA Core Subsystem:
14478
14479Implemented support for the ACPI 3.0 Timer operator. This ASL function
14480implements a 64-bit timer with 100 nanosecond granularity.
14481
14482Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
14483implement the ACPI 3.0 Timer operator.  This allows the host OS to
14484implement
14485the timer with the best clock available. Also, it keeps the core
14486subsystem
14487out of the clock handling business, since the host OS (usually) performs
14488this function.
14489
14490Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
14491functions use a 64-bit address which is part of the packed ACPI Generic
14492Address Structure. Since the structure is non-aligned, the alignment
14493macros
14494are now used to extract the address to a local variable before use.
14495
14496Fixed a problem where the ToInteger operator assumed all input strings
14497were
14498hexadecimal. The operator now handles both decimal strings and hex
14499strings
14500(prefixed with "0x").
14501
14502Fixed a problem where the string length in the string object created as a
14503result of the internal ConvertToString procedure could be incorrect. This
14504potentially affected all implicit conversions and also the
14505ToDecimalString
14506and ToHexString operators.
14507
14508Fixed two problems in the ToString operator. If the length parameter was
14509zero, an incorrect string object was created and the value of the input
14510length parameter was inadvertently changed from zero to Ones.
14511
14512Fixed a problem where the optional ResourceSource string in the
14513ExtendedIRQ
14514resource macro was ignored.
14515
14516Simplified the interfaces to the internal division functions, reducing
14517code
14518size and complexity.
14519
14520Code and Data Size: Current and previous core subsystem library sizes are
14521shown below. These are the code and data sizes for the acpica.lib
14522produced
14523by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14524any ACPI driver or OSPM code. The debug version of the code includes the
14525debug output trace mechanism and has a much larger code and data size.
14526Note
14527that these values will vary depending on the efficiency of the compiler
14528and
14529the compiler options used during generation.
14530
14531  Previous Release:
14532    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
14533    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
14534  Current Release:
14535    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14536    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
14537
14538
145392) iASL Compiler/Disassembler:
14540
14541Implemented support for the ACPI 3.0 Timer operator.
14542
14543Fixed a problem where the Default() operator was inadvertently ignored in
14544a
14545Switch/Case block.  This was a problem in the translation of the Switch
14546statement to If...Else pairs.
14547
14548Added support to allow a standalone Return operator, with no parentheses
14549(or
14550operands).
14551
14552Fixed a problem with code generation for the ElseIf operator where the
14553translated Else...If parse tree was improperly constructed leading to the
14554loss of some code.
14555
14556----------------------------------------
1455722 September 2004.  Summary of changes for version 20040922:
14558
145591) ACPI CA Core Subsystem:
14560
14561Fixed a problem with the implementation of the LNot() operator where
14562"Ones"
14563was not returned for the TRUE case. Changed the code to return Ones
14564instead
14565of (!Arg) which was usually 1. This change affects iASL constant folding
14566for
14567this operator also.
14568
14569Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
14570not
14571initialized properly -- Now zero the entire buffer in this case where the
14572buffer already exists.
14573
14574Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
14575Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
14576related code considerably. This will require changes/updates to all OS
14577interface layers (OSLs.)
14578
14579Implemented a new external interface, AcpiInstallExceptionHandler, to
14580allow
14581a system exception handler to be installed. This handler is invoked upon
14582any
14583run-time exception that occurs during control method execution.
14584
14585Added support for the DSDT in AcpiTbFindTable. This allows the
14586DataTableRegion() operator to access the local copy of the DSDT.
14587
14588Code and Data Size: Current and previous core subsystem library sizes are
14589shown below. These are the code and data sizes for the acpica.lib
14590produced
14591by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14592any ACPI driver or OSPM code. The debug version of the code includes the
14593debug output trace mechanism and has a much larger code and data size.
14594Note
14595that these values will vary depending on the efficiency of the compiler
14596and
14597the compiler options used during generation.
14598
14599  Previous Release:
14600    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
14601    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
14602  Current Release:
14603    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
14604    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
14605
14606
146072) iASL Compiler/Disassembler:
14608
14609Fixed a problem with constant folding and the LNot operator. LNot was
14610returning 1 in the TRUE case, not Ones as per the ACPI specification.
14611This
14612could result in the generation of an incorrect folded/reduced constant.
14613
14614End-Of-File is now allowed within a "//"-style comment.  A parse error no
14615longer occurs if such a comment is at the very end of the input ASL
14616source
14617file.
14618
14619Implemented the "-r" option to override the Revision in the table header.
14620The initial use of this option will be to simplify the evaluation of the
14621AML
14622interpreter by allowing a single ASL source module to be compiled for
14623either
1462432-bit or 64-bit integers.
14625
14626
14627----------------------------------------
1462827 August 2004.  Summary of changes for version 20040827:
14629
146301) ACPI CA Core Subsystem:
14631
14632- Implemented support for implicit object conversion in the non-numeric
14633logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
14634and
14635LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
14636the second operand is implicitly converted on the fly to match the type
14637of
14638the first operand.  For example:
14639
14640    LEqual (Source1, Source2)
14641
14642Source1 and Source2 must each evaluate to an integer, a string, or a
14643buffer.
14644The data type of Source1 dictates the required type of Source2. Source2
14645is
14646implicitly converted if necessary to match the type of Source1.
14647
14648- Updated and corrected the behavior of the string conversion support.
14649The
14650rules concerning conversion of buffers to strings (according to the ACPI
14651specification) are as follows:
14652
14653ToDecimalString - explicit byte-wise conversion of buffer to string of
14654decimal values (0-255) separated by commas. ToHexString - explicit byte-
14655wise
14656conversion of buffer to string of hex values (0-FF) separated by commas.
14657ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
14658byte
14659copy with no transform except NULL terminated. Any other implicit buffer-
14660to-
14661string conversion - byte-wise conversion of buffer to string of hex
14662values
14663(0-FF) separated by spaces.
14664
14665- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
14666
14667- Fixed a problem in AcpiNsGetPathnameLength where the returned length
14668was
14669one byte too short in the case of a node in the root scope.  This could
14670cause a fault during debug output.
14671
14672- Code and Data Size: Current and previous core subsystem library sizes
14673are
14674shown below.  These are the code and data sizes for the acpica.lib
14675produced
14676by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14677any ACPI driver or OSPM code.  The debug version of the code includes the
14678debug output trace mechanism and has a much larger code and data size.
14679Note
14680that these values will vary depending on the efficiency of the compiler
14681and
14682the compiler options used during generation.
14683
14684  Previous Release:
14685    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
14686    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
14687  Current Release:
14688    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
14689    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
14690
14691
146922) iASL Compiler/Disassembler:
14693
14694- Fixed a Linux generation error.
14695
14696
14697----------------------------------------
1469816 August 2004.  Summary of changes for version 20040816:
14699
147001) ACPI CA Core Subsystem:
14701
14702Designed and implemented support within the AML interpreter for the so-
14703called "implicit return".  This support returns the result of the last
14704ASL
14705operation within a control method, in the absence of an explicit Return()
14706operator.  A few machines depend on this behavior, even though it is not
14707explicitly supported by the ASL language.  It is optional support that
14708can
14709be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
14710
14711Removed support for the PCI_Config address space from the internal low
14712level
14713hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
14714support was not used internally, and would not work correctly anyway
14715because
14716the PCI bus number and segment number were not supported.  There are
14717separate interfaces for PCI configuration space access because of the
14718unique
14719interface.
14720
14721Code and Data Size: Current and previous core subsystem library sizes are
14722shown below.  These are the code and data sizes for the acpica.lib
14723produced
14724by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14725any ACPI driver or OSPM code.  The debug version of the code includes the
14726debug output trace mechanism and has a much larger code and data size.
14727Note
14728that these values will vary depending on the efficiency of the compiler
14729and
14730the compiler options used during generation.
14731
14732  Previous Release:
14733    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14734    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
14735  Current Release:
14736    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
14737    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
14738
14739
147402) iASL Compiler/Disassembler:
14741
14742Fixed a problem where constants in ASL expressions at the root level (not
14743within a control method) could be inadvertently truncated during code
14744generation.  This problem was introduced in the 20040715 release.
14745
14746
14747----------------------------------------
1474815 July 2004.  Summary of changes for version 20040715:
14749
147501) ACPI CA Core Subsystem:
14751
14752Restructured the internal HW GPE interfaces to pass/track the current
14753state
14754of interrupts (enabled/disabled) in order to avoid possible deadlock and
14755increase flexibility of the interfaces.
14756
14757Implemented a "lexicographical compare" for String and Buffer objects
14758within
14759the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
14760-
14761as per further clarification to the ACPI specification.  Behavior is
14762similar
14763to C library "strcmp".
14764
14765Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
14766external function.  In the 32-bit non-debug case, the stack use has been
14767reduced from 168 bytes to 32 bytes.
14768
14769Deployed a new run-time configuration flag,
14770AcpiGbl_EnableInterpreterSlack,
14771whose purpose is to allow the AML interpreter to forgive certain bad AML
14772constructs.  Default setting is FALSE.
14773
14774Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
14775IO
14776support code.  If enabled, it allows field access to go beyond the end of
14777a
14778region definition if the field is within the region length rounded up to
14779the
14780next access width boundary (a common coding error.)
14781
14782Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
14783ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
14784these
14785symbols are lowercase by the latest version of the AcpiSrc tool.
14786
14787The prototypes for the PCI interfaces in acpiosxf.h have been updated to
14788rename "Register" to simply "Reg" to prevent certain compilers from
14789complaining.
14790
14791Code and Data Size: Current and previous core subsystem library sizes are
14792shown below.  These are the code and data sizes for the acpica.lib
14793produced
14794by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14795any ACPI driver or OSPM code.  The debug version of the code includes the
14796debug output trace mechanism and has a much larger code and data size.
14797Note
14798that these values will vary depending on the efficiency of the compiler
14799and
14800the compiler options used during generation.
14801
14802  Previous Release:
14803    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14804    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
14805  Current Release:
14806    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14807    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
14808
14809
148102) iASL Compiler/Disassembler:
14811
14812Implemented full support for Package objects within the Case() operator.
14813Note: The Break() operator is currently not supported within Case blocks
14814(TermLists) as there is some question about backward compatibility with
14815ACPI
148161.0 interpreters.
14817
14818
14819Fixed a problem where complex terms were not supported properly within
14820the
14821Switch() operator.
14822
14823Eliminated extraneous warning for compiler-emitted reserved names of the
14824form "_T_x".  (Used in Switch/Case operators.)
14825
14826Eliminated optimization messages for "_T_x" objects and small constants
14827within the DefinitionBlock operator.
14828
14829
14830----------------------------------------
1483115 June 2004.  Summary of changes for version 20040615:
14832
148331) ACPI CA Core Subsystem:
14834
14835Implemented support for Buffer and String objects (as per ACPI 2.0) for
14836the
14837following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
14838LLessEqual.
14839
14840All directory names in the entire source package are lower case, as they
14841were in earlier releases.
14842
14843Implemented "Disassemble" command in the AML debugger that will
14844disassemble
14845a single control method.
14846
14847Code and Data Size: Current and previous core subsystem library sizes are
14848shown below.  These are the code and data sizes for the acpica.lib
14849produced
14850by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14851any ACPI driver or OSPM code.  The debug version of the code includes the
14852debug output trace mechanism and has a much larger code and data size.
14853Note
14854that these values will vary depending on the efficiency of the compiler
14855and
14856the compiler options used during generation.
14857
14858  Previous Release:
14859    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
14860    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
14861
14862  Current Release:
14863    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14864    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
14865
14866
148672) iASL Compiler/Disassembler:
14868
14869Implemented support for Buffer and String objects (as per ACPI 2.0) for
14870the
14871following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
14872LLessEqual.
14873
14874All directory names in the entire source package are lower case, as they
14875were in earlier releases.
14876
14877Fixed a fault when using the -g or -d<nofilename> options if the FADT was
14878not found.
14879
14880Fixed an issue with the Windows version of the compiler where later
14881versions
14882of Windows place the FADT in the registry under the name "FADT" and not
14883"FACP" as earlier versions did.  This applies when using the -g or -
14884d<nofilename> options.  The compiler now looks for both strings as
14885necessary.
14886
14887Fixed a problem with compiler namepath optimization where a namepath
14888within
14889the Scope() operator could not be optimized if the namepath was a subpath
14890of
14891the current scope path.
14892
14893----------------------------------------
1489427 May 2004.  Summary of changes for version 20040527:
14895
148961) ACPI CA Core Subsystem:
14897
14898Completed a new design and implementation for EBDA (Extended BIOS Data
14899Area)
14900support in the RSDP scan code.  The original code improperly scanned for
14901the
14902EBDA by simply scanning from memory location 0 to 0x400.  The correct
14903method
14904is to first obtain the EBDA pointer from within the BIOS data area, then
14905scan 1K of memory starting at the EBDA pointer.  There appear to be few
14906if
14907any machines that place the RSDP in the EBDA, however.
14908
14909Integrated a fix for a possible fault during evaluation of BufferField
14910arguments.  Obsolete code that was causing the problem was removed.
14911
14912Found and fixed a problem in the Field Support Code where data could be
14913corrupted on a bit field read that starts on an aligned boundary but does
14914not end on an aligned boundary.  Merged the read/write "datum length"
14915calculation code into a common procedure.
14916
14917Rolled in a couple of changes to the FreeBSD-specific header.
14918
14919
14920Code and Data Size: Current and previous core subsystem library sizes are
14921shown below.  These are the code and data sizes for the acpica.lib
14922produced
14923by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14924any ACPI driver or OSPM code.  The debug version of the code includes the
14925debug output trace mechanism and has a much larger code and data size.
14926Note
14927that these values will vary depending on the efficiency of the compiler
14928and
14929the compiler options used during generation.
14930
14931  Previous Release:
14932    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14933    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
14934  Current Release:
14935    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
14936    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
14937
14938
149392) iASL Compiler/Disassembler:
14940
14941Fixed a generation warning produced by some overly-verbose compilers for
14942a
1494364-bit constant.
14944
14945----------------------------------------
1494614 May 2004.  Summary of changes for version 20040514:
14947
149481) ACPI CA Core Subsystem:
14949
14950Fixed a problem where hardware GPE enable bits sometimes not set properly
14951during and after GPE method execution.  Result of 04/27 changes.
14952
14953Removed extra "clear all GPEs" when sleeping/waking.
14954
14955Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
14956AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
14957to
14958the new AcpiEv* calls as appropriate.
14959
14960ACPI_OS_NAME was removed from the OS-specific headers.  The default name
14961is
14962now "Microsoft Windows NT" for maximum compatibility.  However this can
14963be
14964changed by modifying the acconfig.h file.
14965
14966Allow a single invocation of AcpiInstallNotifyHandler for a handler that
14967traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
14968
14969Run _INI methods on ThermalZone objects.  This is against the ACPI
14970specification, but there is apparently ASL code in the field that has
14971these
14972_INI methods, and apparently "other" AML interpreters execute them.
14973
14974Performed a full 16/32/64 bit lint that resulted in some small changes.
14975
14976Added a sleep simulation command to the AML debugger to test sleep code.
14977
14978Code and Data Size: Current and previous core subsystem library sizes are
14979shown below.  These are the code and data sizes for the acpica.lib
14980produced
14981by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14982any ACPI driver or OSPM code.  The debug version of the code includes the
14983debug output trace mechanism and has a much larger code and data size.
14984Note
14985that these values will vary depending on the efficiency of the compiler
14986and
14987the compiler options used during generation.
14988
14989  Previous Release:
14990    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14991    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
14992  Current Release:
14993    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14994    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
14995
14996----------------------------------------
1499727 April 2004.  Summary of changes for version 20040427:
14998
149991) ACPI CA Core Subsystem:
15000
15001Completed a major overhaul of the GPE handling within ACPI CA.  There are
15002now three types of GPEs:  wake-only, runtime-only, and combination
15003wake/run.
15004The only GPEs allowed to be combination wake/run are for button-style
15005devices such as a control-method power button, control-method sleep
15006button,
15007or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
15008not
15009referenced by any _PRW methods are marked for "runtime" and hardware
15010enabled.  Any GPE that is referenced by a _PRW method is marked for
15011"wake"
15012(and disabled at runtime).  However, at sleep time, only those GPEs that
15013have been specifically enabled for wake via the AcpiEnableGpe interface
15014will
15015actually be hardware enabled.
15016
15017A new external interface has been added, AcpiSetGpeType(), that is meant
15018to
15019be used by device drivers to force a GPE to a particular type.  It will
15020be
15021especially useful for the drivers for the button devices mentioned above.
15022
15023Completed restructuring of the ACPI CA initialization sequence so that
15024default operation region handlers are installed before GPEs are
15025initialized
15026and the _PRW methods are executed.  This will prevent errors when the
15027_PRW
15028methods attempt to access system memory or I/O space.
15029
15030GPE enable/disable no longer reads the GPE enable register.  We now keep
15031the
15032enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
15033thus no longer depend on the hardware to maintain these bits.
15034
15035Always clear the wake status and fixed/GPE status bits before sleep, even
15036for state S5.
15037
15038Improved the AML debugger output for displaying the GPE blocks and their
15039current status.
15040
15041Added new strings for the _OSI method, of the form "Windows 2001 SPx"
15042where
15043x = 0,1,2,3,4.
15044
15045Fixed a problem where the physical address was incorrectly calculated
15046when
15047the Load() operator was used to directly load from an Operation Region
15048(vs.
15049loading from a Field object.)  Also added check for minimum table length
15050for
15051this case.
15052
15053Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
15054mutex release.
15055
15056Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
15057consistency with the other fields returned.
15058
15059Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
15060structure for each GPE in the system, so the size of this structure is
15061important.
15062
15063CPU stack requirement reduction:  Cleaned up the method execution and
15064object
15065evaluation paths so that now a parameter structure is passed, instead of
15066copying the various method parameters over and over again.
15067
15068In evregion.c:  Correctly exit and reenter the interpreter region if and
15069only if dispatching an operation region request to a user-installed
15070handler.
15071Do not exit/reenter when dispatching to a default handler (e.g., default
15072system memory or I/O handlers)
15073
15074
15075Notes for updating drivers for the new GPE support.  The following
15076changes
15077must be made to ACPI-related device drivers that are attached to one or
15078more
15079GPEs: (This information will be added to the ACPI CA Programmer
15080Reference.)
15081
150821) AcpiInstallGpeHandler no longer automatically enables the GPE, you
15083must
15084explicitly call AcpiEnableGpe.
150852) There is a new interface called AcpiSetGpeType. This should be called
15086before enabling the GPE.  Also, this interface will automatically disable
15087the GPE if it is currently enabled.
150883) AcpiEnableGpe no longer supports a GPE type flag.
15089
15090Specific drivers that must be changed:
150911) EC driver:
15092    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
15093AeGpeHandler, NULL);
15094    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
15095    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
15096
150972) Button Drivers (Power, Lid, Sleep):
15098Run _PRW method under parent device
15099If _PRW exists: /* This is a control-method button */
15100    Extract GPE number and possibly GpeDevice
15101    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
15102    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
15103
15104For all other devices that have _PRWs, we automatically set the GPE type
15105to
15106ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
15107This
15108must be done on a selective basis, usually requiring some kind of user
15109app
15110to allow the user to pick the wake devices.
15111
15112
15113Code and Data Size: Current and previous core subsystem library sizes are
15114shown below.  These are the code and data sizes for the acpica.lib
15115produced
15116by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15117any ACPI driver or OSPM code.  The debug version of the code includes the
15118debug output trace mechanism and has a much larger code and data size.
15119Note
15120that these values will vary depending on the efficiency of the compiler
15121and
15122the compiler options used during generation.
15123
15124  Previous Release:
15125    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
15126    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
15127  Current Release:
15128
15129    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
15130    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
15131
15132
15133
15134----------------------------------------
1513502 April 2004.  Summary of changes for version 20040402:
15136
151371) ACPI CA Core Subsystem:
15138
15139Fixed an interpreter problem where an indirect store through an ArgX
15140parameter was incorrectly applying the "implicit conversion rules" during
15141the store.  From the ACPI specification: "If the target is a method local
15142or
15143argument (LocalX or ArgX), no conversion is performed and the result is
15144stored directly to the target".  The new behavior is to disable implicit
15145conversion during ALL stores to an ArgX.
15146
15147Changed the behavior of the _PRW method scan to ignore any and all errors
15148returned by a given _PRW.  This prevents the scan from aborting from the
15149failure of any single _PRW.
15150
15151Moved the runtime configuration parameters from the global init procedure
15152to
15153static variables in acglobal.h.  This will allow the host to override the
15154default values easily.
15155
15156Code and Data Size: Current and previous core subsystem library sizes are
15157shown below.  These are the code and data sizes for the acpica.lib
15158produced
15159by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15160any ACPI driver or OSPM code.  The debug version of the code includes the
15161debug output trace mechanism and has a much larger code and data size.
15162Note
15163that these values will vary depending on the efficiency of the compiler
15164and
15165the compiler options used during generation.
15166
15167  Previous Release:
15168    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
15169    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
15170  Current Release:
15171    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
15172    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
15173
15174
151752) iASL Compiler/Disassembler:
15176
15177iASL now fully disassembles SSDTs.  However, External() statements are
15178not
15179generated automatically for unresolved symbols at this time.  This is a
15180planned feature for future implementation.
15181
15182Fixed a scoping problem in the disassembler that occurs when the type of
15183the
15184target of a Scope() operator is overridden.  This problem caused an
15185incorrectly nested internal namespace to be constructed.
15186
15187Any warnings or errors that are emitted during disassembly are now
15188commented
15189out automatically so that the resulting file can be recompiled without
15190any
15191hand editing.
15192
15193----------------------------------------
1519426 March 2004.  Summary of changes for version 20040326:
15195
151961) ACPI CA Core Subsystem:
15197
15198Implemented support for "wake" GPEs via interaction between GPEs and the
15199_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
15200identified as a WAKE GPE and by default will no longer be enabled at
15201runtime.  Previously, we were blindly enabling all GPEs with a
15202corresponding
15203_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
15204We
15205believe this has been the cause of thousands of "spurious" GPEs on some
15206systems.
15207
15208This new GPE behavior is can be reverted to the original behavior (enable
15209ALL GPEs at runtime) via a runtime flag.
15210
15211Fixed a problem where aliased control methods could not access objects
15212properly.  The proper scope within the namespace was not initialized
15213(transferred to the target of the aliased method) before executing the
15214target method.
15215
15216Fixed a potential race condition on internal object deletion on the
15217return
15218object in AcpiEvaluateObject.
15219
15220Integrated a fix for resource descriptors where both _MEM and _MTP were
15221being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
15222wide, 0x0F instead of 0x03.)
15223
15224Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
15225preventing
15226a
15227fault in some cases.
15228
15229Updated Notify() values for debug statements in evmisc.c
15230
15231Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
15232
15233Code and Data Size: Current and previous core subsystem library sizes are
15234shown below.  These are the code and data sizes for the acpica.lib
15235produced
15236by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15237any ACPI driver or OSPM code.  The debug version of the code includes the
15238debug output trace mechanism and has a much larger code and data size.
15239Note
15240that these values will vary depending on the efficiency of the compiler
15241and
15242the compiler options used during generation.
15243
15244  Previous Release:
15245
15246    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
15247    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
15248  Current Release:
15249    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
15250    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
15251
15252----------------------------------------
1525311 March 2004.  Summary of changes for version 20040311:
15254
152551) ACPI CA Core Subsystem:
15256
15257Fixed a problem where errors occurring during the parse phase of control
15258method execution did not abort cleanly.  For example, objects created and
15259installed in the namespace were not deleted.  This caused all subsequent
15260invocations of the method to return the AE_ALREADY_EXISTS exception.
15261
15262Implemented a mechanism to force a control method to "Serialized"
15263execution
15264if the method attempts to create namespace objects. (The root of the
15265AE_ALREADY_EXISTS problem.)
15266
15267Implemented support for the predefined _OSI "internal" control method.
15268Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
15269and
15270"Windows 2001.1", and can be easily upgraded for new strings as
15271necessary.
15272This feature will allow "other" operating systems to execute the fully
15273tested, "Windows" code path through the ASL code
15274
15275Global Lock Support:  Now allows multiple acquires and releases with any
15276internal thread.  Removed concept of "owning thread" for this special
15277mutex.
15278
15279Fixed two functions that were inappropriately declaring large objects on
15280the
15281CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
15282during
15283method execution considerably.
15284
15285Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
15286S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
15287
15288Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
15289defined on the machine.
15290
15291Implemented two runtime options:  One to force all control method
15292execution
15293to "Serialized" to mimic Windows behavior, another to disable _OSI
15294support
15295if it causes problems on a given machine.
15296
15297Code and Data Size: Current and previous core subsystem library sizes are
15298shown below.  These are the code and data sizes for the acpica.lib
15299produced
15300by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15301any ACPI driver or OSPM code.  The debug version of the code includes the
15302debug output trace mechanism and has a much larger code and data size.
15303Note
15304that these values will vary depending on the efficiency of the compiler
15305and
15306the compiler options used during generation.
15307
15308  Previous Release:
15309    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
15310    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
15311  Current Release:
15312    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
15313    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
15314
153152) iASL Compiler/Disassembler:
15316
15317Fixed an array size problem for FreeBSD that would cause the compiler to
15318fault.
15319
15320----------------------------------------
1532120 February 2004.  Summary of changes for version 20040220:
15322
15323
153241) ACPI CA Core Subsystem:
15325
15326Implemented execution of _SxD methods for Device objects in the
15327GetObjectInfo interface.
15328
15329Fixed calls to _SST method to pass the correct arguments.
15330
15331Added a call to _SST on wake to restore to "working" state.
15332
15333Check for End-Of-Buffer failure case in the WalkResources interface.
15334
15335Integrated fix for 64-bit alignment issue in acglobal.h by moving two
15336structures to the beginning of the file.
15337
15338After wake, clear GPE status register(s) before enabling GPEs.
15339
15340After wake, clear/enable power button.  (Perhaps we should clear/enable
15341all
15342fixed events upon wake.)
15343
15344Fixed a couple of possible memory leaks in the Namespace manager.
15345
15346Integrated latest acnetbsd.h file.
15347
15348----------------------------------------
1534911 February 2004.  Summary of changes for version 20040211:
15350
15351
153521) ACPI CA Core Subsystem:
15353
15354Completed investigation and implementation of the call-by-reference
15355mechanism for control method arguments.
15356
15357Fixed a problem where a store of an object into an indexed package could
15358fail if the store occurs within a different method than the method that
15359created the package.
15360
15361Fixed a problem where the ToDecimal operator could return incorrect
15362results.
15363
15364Fixed a problem where the CopyObject operator could fail on some of the
15365more
15366obscure objects (e.g., Reference objects.)
15367
15368Improved the output of the Debug object to display buffer, package, and
15369index objects.
15370
15371Fixed a problem where constructs of the form "RefOf (ArgX)" did not
15372return
15373the expected result.
15374
15375Added permanent ACPI_REPORT_ERROR macros for all instances of the
15376ACPI_AML_INTERNAL exception.
15377
15378Integrated latest version of acfreebsd.h
15379
15380----------------------------------------
1538116 January 2004.  Summary of changes for version 20040116:
15382
15383The purpose of this release is primarily to update the copyright years in
15384each module, thus causing a huge number of diffs.  There are a few small
15385functional changes, however.
15386
153871) ACPI CA Core Subsystem:
15388
15389Improved error messages when there is a problem finding one or more of
15390the
15391required base ACPI tables
15392
15393Reintroduced the definition of APIC_HEADER in actbl.h
15394
15395Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
15396
15397Removed extraneous reference to NewObj in dsmthdat.c
15398
153992) iASL compiler
15400
15401Fixed a problem introduced in December that disabled the correct
15402disassembly
15403of Resource Templates
15404
15405
15406----------------------------------------
1540703 December 2003.  Summary of changes for version 20031203:
15408
154091) ACPI CA Core Subsystem:
15410
15411Changed the initialization of Operation Regions during subsystem
15412init to perform two entire walks of the ACPI namespace; The first
15413to initialize the regions themselves, the second to execute the
15414_REG methods.  This fixed some interdependencies across _REG
15415methods found on some machines.
15416
15417Fixed a problem where a Store(Local0, Local1) could simply update
15418the object reference count, and not create a new copy of the
15419object if the Local1 is uninitialized.
15420
15421Implemented support for the _SST reserved method during sleep
15422transitions.
15423
15424Implemented support to clear the SLP_TYP and SLP_EN bits when
15425waking up, this is apparently required by some machines.
15426
15427When sleeping, clear the wake status only if SleepState is not S5.
15428
15429Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
15430pointer arithmetic advanced a string pointer too far.
15431
15432Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
15433could be returned if the requested table has not been loaded.
15434
15435Within the support for IRQ resources, restructured the handling of
15436the active and edge/level bits.
15437
15438Fixed a few problems in AcpiPsxExecute() where memory could be
15439leaked under certain error conditions.
15440
15441Improved error messages for the cases where the ACPI mode could
15442not be entered.
15443
15444Code and Data Size: Current and previous core subsystem library
15445sizes are shown below.  These are the code and data sizes for the
15446acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15447these values do not include any ACPI driver or OSPM code.  The
15448debug version of the code includes the debug output trace
15449mechanism and has a much larger code and data size.  Note that
15450these values will vary depending on the efficiency of the compiler
15451and the compiler options used during generation.
15452
15453  Previous Release (20031029):
15454    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
15455    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
15456  Current Release:
15457    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
15458    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
15459
154602) iASL Compiler/Disassembler:
15461
15462Implemented a fix for the iASL disassembler where a bad index was
15463generated.  This was most noticeable on 64-bit platforms
15464
15465
15466----------------------------------------
1546729 October 2003.  Summary of changes for version 20031029:
15468
154691) ACPI CA Core Subsystem:
15470
15471
15472Fixed a problem where a level-triggered GPE with an associated
15473_Lxx control method was incorrectly cleared twice.
15474
15475Fixed a problem with the Field support code where an access can
15476occur beyond the end-of-region if the field is non-aligned but
15477extends to the very end of the parent region (resulted in an
15478AE_AML_REGION_LIMIT exception.)
15479
15480Fixed a problem with ACPI Fixed Events where an RT Clock handler
15481would not get invoked on an RTC event.  The RTC event bitmasks for
15482the PM1 registers were not being initialized properly.
15483
15484Implemented support for executing _STA and _INI methods for
15485Processor objects.  Although this is currently not part of the
15486ACPI specification, there is existing ASL code that depends on the
15487init-time execution of these methods.
15488
15489Implemented and deployed a GetDescriptorName function to decode
15490the various types of internal descriptors.  Guards against null
15491descriptors during debug output also.
15492
15493Implemented and deployed a GetNodeName function to extract the 4-
15494character namespace node name.  This function simplifies the debug
15495and error output, as well as guarding against null pointers during
15496output.
15497
15498Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
15499simplify the debug and error output of 64-bit integers.  This
15500macro replaces the HIDWORD and LODWORD macros for dumping these
15501integers.
15502
15503Updated the implementation of the Stall() operator to only call
15504AcpiOsStall(), and also return an error if the operand is larger
15505than 255.  This preserves the required behavior of not
15506relinquishing the processor, as would happen if AcpiOsSleep() was
15507called for "long stalls".
15508
15509Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
15510initialized are now treated as NOOPs.
15511
15512Cleaned up a handful of warnings during 64-bit generation.
15513
15514Fixed a reported error where and incorrect GPE number was passed
15515to the GPE dispatch handler.  This value is only used for error
15516output, however.  Used this opportunity to clean up and streamline
15517the GPE dispatch code.
15518
15519Code and Data Size: Current and previous core subsystem library
15520sizes are shown below.  These are the code and data sizes for the
15521acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15522these values do not include any ACPI driver or OSPM code.  The
15523
15524debug version of the code includes the debug output trace
15525mechanism and has a much larger code and data size.  Note that
15526these values will vary depending on the efficiency of the compiler
15527and the compiler options used during generation.
15528
15529  Previous Release (20031002):
15530    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
15531    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
15532  Current Release:
15533    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
15534    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
15535
15536
155372) iASL Compiler/Disassembler:
15538
15539Updated the iASL compiler to return an error if the operand to the
15540Stall() operator is larger than 255.
15541
15542
15543----------------------------------------
1554402 October 2003.  Summary of changes for version 20031002:
15545
15546
155471) ACPI CA Core Subsystem:
15548
15549Fixed a problem with Index Fields where the index was not
15550incremented for fields that require multiple writes to the
15551index/data registers (Fields that are wider than the data
15552register.)
15553
15554Fixed a problem with all Field objects where a write could go
15555beyond the end-of-field if the field was larger than the access
15556granularity and therefore required multiple writes to complete the
15557request.  An extra write beyond the end of the field could happen
15558inadvertently.
15559
15560Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
15561would incorrectly be returned if the width of the Data Register
15562was larger than the specified field access width.
15563
15564Completed fixes for LoadTable() and Unload() and verified their
15565operation.  Implemented full support for the "DdbHandle" object
15566throughout the ACPI CA subsystem.
15567
15568Implemented full support for the MADT and ECDT tables in the ACPI
15569CA header files.  Even though these tables are not directly
15570consumed by ACPI CA, the header definitions are useful for ACPI
15571device drivers.
15572
15573Integrated resource descriptor fixes posted to the Linux ACPI
15574list.  This included checks for minimum descriptor length, and
15575support for trailing NULL strings within descriptors that have
15576optional string elements.
15577
15578Code and Data Size: Current and previous core subsystem library
15579sizes are shown below.  These are the code and data sizes for the
15580acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15581these values do not include any ACPI driver or OSPM code.  The
15582debug version of the code includes the debug output trace
15583mechanism and has a much larger code and data size.  Note that
15584these values will vary depending on the efficiency of the compiler
15585and the compiler options used during generation.
15586
15587  Previous Release (20030918):
15588    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
15589    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
15590  Current Release:
15591    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
15592    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
15593
15594
155952) iASL Compiler:
15596
15597Implemented detection of non-ASCII characters within the input
15598source ASL file.  This catches attempts to compile binary (AML)
15599files early in the compile, with an informative error message.
15600
15601Fixed a problem where the disassembler would fault if the output
15602filename could not be generated or if the output file could not be
15603opened.
15604
15605----------------------------------------
1560618 September 2003.  Summary of changes for version 20030918:
15607
15608
156091) ACPI CA Core Subsystem:
15610
15611Found and fixed a longstanding problem with the late execution of
15612the various deferred AML opcodes (such as Operation Regions,
15613Buffer Fields, Buffers, and Packages).  If the name string
15614specified for the name of the new object placed the object in a
15615scope other than the current scope, the initialization/execution
15616of the opcode failed.  The solution to this problem was to
15617implement a mechanism where the late execution of such opcodes
15618does not attempt to lookup/create the name a second time in an
15619incorrect scope.  This fixes the "region size computed
15620incorrectly" problem.
15621
15622Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
15623Global Lock AE_BAD_PARAMETER error.
15624
15625Fixed several 64-bit issues with prototypes, casting and data
15626types.
15627
15628Removed duplicate prototype from acdisasm.h
15629
15630Fixed an issue involving EC Operation Region Detach (Shaohua Li)
15631
15632Code and Data Size: Current and previous core subsystem library
15633sizes are shown below.  These are the code and data sizes for the
15634acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15635these values do not include any ACPI driver or OSPM code.  The
15636debug version of the code includes the debug output trace
15637mechanism and has a much larger code and data size.  Note that
15638these values will vary depending on the efficiency of the compiler
15639and the compiler options used during generation.
15640
15641  Previous Release:
15642
15643    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
15644    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
15645  Current Release:
15646    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
15647    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
15648
15649
156502) Linux:
15651
15652Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
15653correct sleep time in seconds.
15654
15655----------------------------------------
1565614 July 2003.  Summary of changes for version 20030619:
15657
156581) ACPI CA Core Subsystem:
15659
15660Parse SSDTs in order discovered, as opposed to reverse order
15661(Hrvoje Habjanic)
15662
15663Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
15664Klausner,
15665   Nate Lawson)
15666
15667
156682) Linux:
15669
15670Dynamically allocate SDT list (suggested by Andi Kleen)
15671
15672proc function return value cleanups (Andi Kleen)
15673
15674Correctly handle NMI watchdog during long stalls (Andrew Morton)
15675
15676Make it so acpismp=force works (reported by Andrew Morton)
15677
15678
15679----------------------------------------
1568019 June 2003.  Summary of changes for version 20030619:
15681
156821) ACPI CA Core Subsystem:
15683
15684Fix To/FromBCD, eliminating the need for an arch-specific #define.
15685
15686Do not acquire a semaphore in the S5 shutdown path.
15687
15688Fix ex_digits_needed for 0. (Takayoshi Kochi)
15689
15690Fix sleep/stall code reversal. (Andi Kleen)
15691
15692Revert a change having to do with control method calling
15693semantics.
15694
156952) Linux:
15696
15697acpiphp update (Takayoshi Kochi)
15698
15699Export acpi_disabled for sonypi (Stelian Pop)
15700
15701Mention acpismp=force in config help
15702
15703Re-add acpitable.c and acpismp=force. This improves backwards
15704
15705compatibility and also cleans up the code to a significant degree.
15706
15707Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
15708
15709----------------------------------------
1571022 May 2003.  Summary of changes for version 20030522:
15711
157121) ACPI CA Core Subsystem:
15713
15714Found and fixed a reported problem where an AE_NOT_FOUND error
15715occurred occasionally during _BST evaluation.  This turned out to
15716be an Owner ID allocation issue where a called method did not get
15717a new ID assigned to it.  Eventually, (after 64k calls), the Owner
15718ID UINT16 would wraparound so that the ID would be the same as the
15719caller's and the called method would delete the caller's
15720namespace.
15721
15722Implemented extended error reporting for control methods that are
15723aborted due to a run-time exception.  Output includes the exact
15724AML instruction that caused the method abort, a dump of the method
15725locals and arguments at the time of the abort, and a trace of all
15726nested control method calls.
15727
15728Modified the interpreter to allow the creation of buffers of zero
15729length from the AML code. Implemented new code to ensure that no
15730attempt is made to actually allocate a memory buffer (of length
15731zero) - instead, a simple buffer object with a NULL buffer pointer
15732and length zero is created.  A warning is no longer issued when
15733the AML attempts to create a zero-length buffer.
15734
15735Implemented a workaround for the "leading asterisk issue" in
15736_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
15737asterisk is automatically removed if present in any HID, UID, or
15738CID strings.  The iASL compiler will still flag this asterisk as
15739an error, however.
15740
15741Implemented full support for _CID methods that return a package of
15742multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
15743now additionally returns a device _CID list if present.  This
15744required a change to the external interface in order to pass an
15745ACPI_BUFFER object as a parameter since the _CID list is of
15746variable length.
15747
15748Fixed a problem with the new AE_SAME_HANDLER exception where
15749handler initialization code did not know about this exception.
15750
15751Code and Data Size: Current and previous core subsystem library
15752sizes are shown below.  These are the code and data sizes for the
15753acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15754these values do not include any ACPI driver or OSPM code.  The
15755debug version of the code includes the debug output trace
15756mechanism and has a much larger code and data size.  Note that
15757these values will vary depending on the efficiency of the compiler
15758and the compiler options used during generation.
15759
15760  Previous Release (20030509):
15761    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
15762    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
15763  Current Release:
15764    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
15765    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
15766
15767
157682) Linux:
15769
15770Fixed a bug in which we would reinitialize the ACPI interrupt
15771after it was already working, thus disabling all ACPI and the IRQs
15772for any other device sharing the interrupt. (Thanks to Stian
15773Jordet)
15774
15775Toshiba driver update (John Belmonte)
15776
15777Return only 0 or 1 for our interrupt handler status (Andrew
15778Morton)
15779
15780
157813) iASL Compiler:
15782
15783Fixed a reported problem where multiple (nested) ElseIf()
15784statements were not handled correctly by the compiler, resulting
15785in incorrect warnings and incorrect AML code.  This was a problem
15786in both the ASL parser and the code generator.
15787
15788
157894) Documentation:
15790
15791Added changes to existing interfaces, new exception codes, and new
15792text concerning reference count object management versus garbage
15793collection.
15794
15795----------------------------------------
1579609 May 2003.  Summary of changes for version 20030509.
15797
15798
157991) ACPI CA Core Subsystem:
15800
15801Changed the subsystem initialization sequence to hold off
15802installation of address space handlers until the hardware has been
15803initialized and the system has entered ACPI mode.  This is because
15804the installation of space handlers can cause _REG methods to be
15805run.  Previously, the _REG methods could potentially be run before
15806ACPI mode was enabled.
15807
15808Fixed some memory leak issues related to address space handler and
15809notify handler installation.  There were some problems with the
15810reference count mechanism caused by the fact that the handler
15811objects are shared across several namespace objects.
15812
15813Fixed a reported problem where reference counts within the
15814namespace were not properly updated when named objects created by
15815method execution were deleted.
15816
15817Fixed a reported problem where multiple SSDTs caused a deletion
15818issue during subsystem termination.  Restructured the table data
15819structures to simplify the linked lists and the related code.
15820
15821Fixed a problem where the table ID associated with secondary
15822tables (SSDTs) was not being propagated into the namespace objects
15823created by those tables.  This would only present a problem for
15824tables that are unloaded at run-time, however.
15825
15826Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
15827type as the length parameter (instead of UINT32).
15828
15829Solved a long-standing problem where an ALREADY_EXISTS error
15830appears on various systems.  This problem could happen when there
15831are multiple PCI_Config operation regions under a single PCI root
15832bus.  This doesn't happen very frequently, but there are some
15833systems that do this in the ASL.
15834
15835Fixed a reported problem where the internal DeleteNode function
15836was incorrectly handling the case where a namespace node was the
15837first in the parent's child list, and had additional peers (not
15838the only child, but first in the list of children.)
15839
15840Code and Data Size: Current core subsystem library sizes are shown
15841below.  These are the code and data sizes for the acpica.lib
15842produced by the Microsoft Visual C++ 6.0 compiler, and these
15843values do not include any ACPI driver or OSPM code.  The debug
15844version of the code includes the debug output trace mechanism and
15845has a much larger code and data size.  Note that these values will
15846vary depending on the efficiency of the compiler and the compiler
15847options used during generation.
15848
15849  Previous Release
15850    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
15851    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
15852  Current Release:
15853    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
15854    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
15855
15856
158572) Linux:
15858
15859Allow ":" in OS override string (Ducrot Bruno)
15860
15861Kobject fix (Greg KH)
15862
15863
158643 iASL Compiler/Disassembler:
15865
15866Fixed a problem in the generation of the C source code files (AML
15867is emitted in C source statements for BIOS inclusion) where the
15868Ascii dump that appears within a C comment at the end of each line
15869could cause a compile time error if the AML sequence happens to
15870have an open comment or close comment sequence embedded.
15871
15872
15873----------------------------------------
1587424 April 2003.  Summary of changes for version 20030424.
15875
15876
158771) ACPI CA Core Subsystem:
15878
15879Support for big-endian systems has been implemented.  Most of the
15880support has been invisibly added behind big-endian versions of the
15881ACPI_MOVE_* macros.
15882
15883Fixed a problem in AcpiHwDisableGpeBlock() and
15884AcpiHwClearGpeBlock() where an incorrect offset was passed to the
15885low level hardware write routine.  The offset parameter was
15886actually eliminated from the low level read/write routines because
15887they had become obsolete.
15888
15889Fixed a problem where a handler object was deleted twice during
15890the removal of a fixed event handler.
15891
15892
158932) Linux:
15894
15895A fix for SMP systems with link devices was contributed by
15896
15897Compaq's Dan Zink.
15898
15899(2.5) Return whether we handled the interrupt in our IRQ handler.
15900(Linux ISRs no longer return void, so we can propagate the handler
15901return value from the ACPI CA core back to the OS.)
15902
15903
15904
159053) Documentation:
15906
15907The ACPI CA Programmer Reference has been updated to reflect new
15908interfaces and changes to existing interfaces.
15909
15910----------------------------------------
1591128 March 2003.  Summary of changes for version 20030328.
15912
159131) ACPI CA Core Subsystem:
15914
15915The GPE Block Device support has been completed.  New interfaces
15916are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
15917interfaces (enable, disable, clear, getstatus) have been split
15918into separate interfaces for Fixed Events and General Purpose
15919Events (GPEs) in order to support GPE Block Devices properly.
15920
15921Fixed a problem where the error message "Failed to acquire
15922semaphore" would appear during operations on the embedded
15923controller (EC).
15924
15925Code and Data Size: Current core subsystem library sizes are shown
15926below.  These are the code and data sizes for the acpica.lib
15927produced by the Microsoft Visual C++ 6.0 compiler, and these
15928values do not include any ACPI driver or OSPM code.  The debug
15929version of the code includes the debug output trace mechanism and
15930has a much larger code and data size.  Note that these values will
15931vary depending on the efficiency of the compiler and the compiler
15932options used during generation.
15933
15934  Previous Release
15935    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
15936    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
15937  Current Release:
15938    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
15939    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
15940
15941
15942----------------------------------------
1594328 February 2003.  Summary of changes for version 20030228.
15944
15945
159461) ACPI CA Core Subsystem:
15947
15948The GPE handling and dispatch code has been completely overhauled
15949in preparation for support of GPE Block Devices (ID ACPI0006).
15950This affects internal data structures and code only; there should
15951be no differences visible externally.  One new file has been
15952added, evgpeblk.c
15953
15954The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
15955fields that are used to determine the GPE block lengths.  The
15956REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
15957structures are ignored.  This is per the ACPI specification but it
15958isn't very clear.  The full 256 Block 0/1 GPEs are now supported
15959(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
15960
15961In the SCI interrupt handler, removed the read of the PM1_CONTROL
15962register to look at the SCI_EN bit.  On some machines, this read
15963causes an SMI event and greatly slows down SCI events.  (This may
15964in fact be the cause of slow battery status response on some
15965systems.)
15966
15967Fixed a problem where a store of a NULL string to a package object
15968could cause the premature deletion of the object.  This was seen
15969during execution of the battery _BIF method on some systems,
15970resulting in no battery data being returned.
15971
15972Added AcpiWalkResources interface to simplify parsing of resource
15973lists.
15974
15975Code and Data Size: Current core subsystem library sizes are shown
15976below.  These are the code and data sizes for the acpica.lib
15977produced by the Microsoft Visual C++ 6.0 compiler, and these
15978values do not include any ACPI driver or OSPM code.  The debug
15979version of the code includes the debug output trace mechanism and
15980has a much larger code and data size.  Note that these values will
15981vary depending on the efficiency of the compiler and the compiler
15982options used during generation.
15983
15984  Previous Release
15985    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15986    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15987  Current Release:
15988    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
15989    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
15990
15991
159922) Linux
15993
15994S3 fixes (Ole Rohne)
15995
15996Update ACPI PHP driver with to use new acpi_walk_resource API
15997(Bjorn Helgaas)
15998
15999Add S4BIOS support (Pavel Machek)
16000
16001Map in entire table before performing checksum (John Stultz)
16002
16003Expand the mem= cmdline to allow the specification of reserved and
16004ACPI DATA blocks (Pavel Machek)
16005
16006Never use ACPI on VISWS
16007
16008Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
16009
16010Revert a change that allowed P_BLK lengths to be 4 or 5. This is
16011causing us to think that some systems support C2 when they really
16012don't.
16013
16014Do not count processor objects for non-present CPUs (Thanks to
16015Dominik Brodowski)
16016
16017
160183) iASL Compiler:
16019
16020Fixed a problem where ASL include files could not be found and
16021opened.
16022
16023Added support for the _PDC reserved name.
16024
16025
16026----------------------------------------
1602722 January 2003.  Summary of changes for version 20030122.
16028
16029
160301) ACPI CA Core Subsystem:
16031
16032Added a check for constructs of the form:  Store (Local0, Local0)
16033where Local0 is not initialized.  Apparently, some BIOS
16034programmers believe that this is a NOOP.  Since this store doesn't
16035do anything anyway, the new prototype behavior will ignore this
16036error.  This is a case where we can relax the strict checking in
16037the interpreter in the name of compatibility.
16038
16039
160402) Linux
16041
16042The AcpiSrc Source Conversion Utility has been released with the
16043Linux package for the first time.  This is the utility that is
16044used to convert the ACPI CA base source code to the Linux version.
16045
16046(Both) Handle P_BLK lengths shorter than 6 more gracefully
16047
16048(Both) Move more headers to include/acpi, and delete an unused
16049header.
16050
16051(Both) Move drivers/acpi/include directory to include/acpi
16052
16053(Both) Boot functions don't use cmdline, so don't pass it around
16054
16055(Both) Remove include of unused header (Adrian Bunk)
16056
16057(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
16058the
16059former now also includes the latter, acpiphp.h only needs the one,
16060now.
16061
16062(2.5) Make it possible to select method of bios restoring after S3
16063resume. [=> no more ugly ifdefs] (Pavel Machek)
16064
16065(2.5) Make proc write interfaces work (Pavel Machek)
16066
16067(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
16068
16069(2.5) Break out ACPI Perf code into its own module, under cpufreq
16070(Dominik Brodowski)
16071
16072(2.4) S4BIOS support (Ducrot Bruno)
16073
16074(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
16075Visinoni)
16076
16077
160783) iASL Compiler:
16079
16080Added support to disassemble SSDT and PSDTs.
16081
16082Implemented support to obtain SSDTs from the Windows registry if
16083available.
16084
16085
16086----------------------------------------
1608709 January 2003.  Summary of changes for version 20030109.
16088
160891) ACPI CA Core Subsystem:
16090
16091Changed the behavior of the internal Buffer-to-String conversion
16092function.  The current ACPI specification states that the contents
16093of the buffer are "converted to a string of two-character
16094hexadecimal numbers, each separated by a space".  Unfortunately,
16095this definition is not backwards compatible with existing ACPI 1.0
16096implementations (although the behavior was not defined in the ACPI
160971.0 specification).  The new behavior simply copies data from the
16098buffer to the string until a null character is found or the end of
16099the buffer is reached.  The new String object is always null
16100terminated.  This problem was seen during the generation of _BIF
16101battery data where incorrect strings were returned for battery
16102type, etc.  This will also require an errata to the ACPI
16103specification.
16104
16105Renamed all instances of NATIVE_UINT and NATIVE_INT to
16106ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
16107
16108Copyright in all module headers (both Linux and non-Linux) has be
16109updated to 2003.
16110
16111Code and Data Size: Current core subsystem library sizes are shown
16112below.  These are the code and data sizes for the acpica.lib
16113produced by the Microsoft Visual C++ 6.0 compiler, and these
16114values do not include any ACPI driver or OSPM code.  The debug
16115version of the code includes the debug output trace mechanism and
16116has a much larger code and data size.  Note that these values will
16117vary depending on the efficiency of the compiler and the compiler
16118options used during generation.
16119
16120  Previous Release
16121    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
16122    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
16123  Current Release:
16124    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
16125    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
16126
16127
161282) Linux
16129
16130Fixed an oops on module insertion/removal (Matthew Tippett)
16131
16132(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
16133
16134(2.5) Replace pr_debug (Randy Dunlap)
16135
16136(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
16137
16138(Both) Eliminate spawning of thread from timer callback, in favor
16139of schedule_work()
16140
16141(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
16142
16143(Both) Added define for Fixed Function HW region (Matthew Wilcox)
16144
16145(Both) Add missing statics to button.c (Pavel Machek)
16146
16147Several changes have been made to the source code translation
16148utility that generates the Linux Code in order to make the code
16149more "Linux-like":
16150
16151All typedefs on structs and unions have been removed in keeping
16152with the Linux coding style.
16153
16154Removed the non-Linux SourceSafe module revision number from each
16155module header.
16156
16157Completed major overhaul of symbols to be lowercase for linux.
16158Doubled the number of symbols that are lowercase.
16159
16160Fixed a problem where identifiers within procedure headers and
16161within quotes were not fully lower cased (they were left with a
16162starting capital.)
16163
16164Some C macros whose only purpose is to allow the generation of 16-
16165bit code are now completely removed in the Linux code, increasing
16166readability and maintainability.
16167
16168----------------------------------------
16169
1617012 December 2002.  Summary of changes for version 20021212.
16171
16172
161731) ACPI CA Core Subsystem:
16174
16175Fixed a problem where the creation of a zero-length AML Buffer
16176would cause a fault.
16177
16178Fixed a problem where a Buffer object that pointed to a static AML
16179buffer (in an ACPI table) could inadvertently be deleted, causing
16180memory corruption.
16181
16182Fixed a problem where a user buffer (passed in to the external
16183ACPI CA interfaces) could be overwritten if the buffer was too
16184small to complete the operation, causing memory corruption.
16185
16186Fixed a problem in the Buffer-to-String conversion code where a
16187string of length one was always returned, regardless of the size
16188of the input Buffer object.
16189
16190Removed the NATIVE_CHAR data type across the entire source due to
16191lack of need and lack of consistent use.
16192
16193Code and Data Size: Current core subsystem library sizes are shown
16194below.  These are the code and data sizes for the acpica.lib
16195produced by the Microsoft Visual C++ 6.0 compiler, and these
16196values do not include any ACPI driver or OSPM code.  The debug
16197version of the code includes the debug output trace mechanism and
16198has a much larger code and data size.  Note that these values will
16199vary depending on the efficiency of the compiler and the compiler
16200options used during generation.
16201
16202  Previous Release
16203    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
16204    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
16205  Current Release:
16206    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
16207    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
16208
16209
16210----------------------------------------
1621105 December 2002.  Summary of changes for version 20021205.
16212
162131) ACPI CA Core Subsystem:
16214
16215Fixed a problem where a store to a String or Buffer object could
16216cause corruption of the DSDT if the object type being stored was
16217the same as the target object type and the length of the object
16218being stored was equal to or smaller than the original (existing)
16219target object.  This was seen to cause corruption of battery _BIF
16220buffers if the _BIF method modified the buffer on the fly.
16221
16222Fixed a problem where an internal error was generated if a control
16223method invocation was used in an OperationRegion, Buffer, or
16224Package declaration.  This was caused by the deferred parsing of
16225the control method and thus the deferred creation of the internal
16226method object.  The solution to this problem was to create the
16227internal method object at the moment the method is encountered in
16228the first pass - so that subsequent references to the method will
16229able to obtain the required parameter count and thus properly
16230parse the method invocation.  This problem presented itself as an
16231AE_AML_INTERNAL during the pass 1 parse phase during table load.
16232
16233Fixed a problem where the internal String object copy routine did
16234not always allocate sufficient memory for the target String object
16235and caused memory corruption.  This problem was seen to cause
16236"Allocation already present in list!" errors as memory allocation
16237became corrupted.
16238
16239Implemented a new function for the evaluation of namespace objects
16240that allows the specification of the allowable return object
16241types.  This simplifies a lot of code that checks for a return
16242object of one or more specific objects returned from the
16243evaluation (such as _STA, etc.)  This may become and external
16244function if it would be useful to ACPI-related drivers.
16245
16246Completed another round of prefixing #defines with "ACPI_" for
16247clarity.
16248
16249Completed additional code restructuring to allow more modular
16250linking for iASL compiler and AcpiExec.  Several files were split
16251creating new files.  New files:  nsparse.c dsinit.c evgpe.c
16252
16253Implemented an abort mechanism to terminate an executing control
16254method via the AML debugger.  This feature is useful for debugging
16255control methods that depend (wait) for specific hardware
16256responses.
16257
16258Code and Data Size: Current core subsystem library sizes are shown
16259below.  These are the code and data sizes for the acpica.lib
16260produced by the Microsoft Visual C++ 6.0 compiler, and these
16261values do not include any ACPI driver or OSPM code.  The debug
16262version of the code includes the debug output trace mechanism and
16263has a much larger code and data size.  Note that these values will
16264vary depending on the efficiency of the compiler and the compiler
16265options used during generation.
16266
16267  Previous Release
16268    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16269    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
16270  Current Release:
16271    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
16272    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
16273
16274
162752) iASL Compiler/Disassembler
16276
16277Fixed a compiler code generation problem for "Interrupt" Resource
16278Descriptors.  If specified in the ASL, the optional "Resource
16279Source Index" and "Resource Source" fields were not inserted into
16280the correct location within the AML resource descriptor, creating
16281an invalid descriptor.
16282
16283Fixed a disassembler problem for "Interrupt" resource descriptors.
16284The optional "Resource Source Index" and "Resource Source" fields
16285were ignored.
16286
16287
16288----------------------------------------
1628922 November 2002.  Summary of changes for version 20021122.
16290
16291
162921) ACPI CA Core Subsystem:
16293
16294Fixed a reported problem where an object stored to a Method Local
16295or Arg was not copied to a new object during the store - the
16296object pointer was simply copied to the Local/Arg.  This caused
16297all subsequent operations on the Local/Arg to also affect the
16298original source of the store operation.
16299
16300Fixed a problem where a store operation to a Method Local or Arg
16301was not completed properly if the Local/Arg contained a reference
16302(from RefOf) to a named field.  The general-purpose store-to-
16303namespace-node code is now used so that this case is handled
16304automatically.
16305
16306Fixed a problem where the internal object copy routine would cause
16307a protection fault if the object being copied was a Package and
16308contained either 1) a NULL package element or 2) a nested sub-
16309package.
16310
16311Fixed a problem with the GPE initialization that resulted from an
16312ambiguity in the ACPI specification.  One section of the
16313specification states that both the address and length of the GPE
16314block must be zero if the block is not supported.  Another section
16315implies that only the address need be zero if the block is not
16316supported.  The code has been changed so that both the address and
16317the length must be non-zero to indicate a valid GPE block (i.e.,
16318if either the address or the length is zero, the GPE block is
16319invalid.)
16320
16321Code and Data Size: Current core subsystem library sizes are shown
16322below.  These are the code and data sizes for the acpica.lib
16323produced by the Microsoft Visual C++ 6.0 compiler, and these
16324values do not include any ACPI driver or OSPM code.  The debug
16325version of the code includes the debug output trace mechanism and
16326has a much larger code and data size.  Note that these values will
16327vary depending on the efficiency of the compiler and the compiler
16328options used during generation.
16329
16330  Previous Release
16331    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
16332    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
16333  Current Release:
16334    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16335    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
16336
16337
163382) Linux
16339
16340Cleaned up EC driver. Exported an external EC read/write
16341interface. By going through this, other drivers (most notably
16342sonypi) will be able to serialize access to the EC.
16343
16344
163453) iASL Compiler/Disassembler
16346
16347Implemented support to optionally generate include files for both
16348ASM and C (the -i switch).  This simplifies BIOS development by
16349automatically creating include files that contain external
16350declarations for the symbols that are created within the
16351
16352(optionally generated) ASM and C AML source files.
16353
16354
16355----------------------------------------
1635615 November 2002.  Summary of changes for version 20021115.
16357
163581) ACPI CA Core Subsystem:
16359
16360Fixed a memory leak problem where an error during resolution of
16361
16362method arguments during a method invocation from another method
16363failed to cleanup properly by deleting all successfully resolved
16364argument objects.
16365
16366Fixed a problem where the target of the Index() operator was not
16367correctly constructed if the source object was a package.  This
16368problem has not been detected because the use of a target operand
16369with Index() is very rare.
16370
16371Fixed a problem with the Index() operator where an attempt was
16372made to delete the operand objects twice.
16373
16374Fixed a problem where an attempt was made to delete an operand
16375twice during execution of the CondRefOf() operator if the target
16376did not exist.
16377
16378Implemented the first of perhaps several internal create object
16379functions that create and initialize a specific object type.  This
16380consolidates duplicated code wherever the object is created, thus
16381shrinking the size of the subsystem.
16382
16383Implemented improved debug/error messages for errors that occur
16384during nested method invocations.  All executing method pathnames
16385are displayed (with the error) as the call stack is unwound - thus
16386simplifying debug.
16387
16388Fixed a problem introduced in the 10/02 release that caused
16389premature deletion of a buffer object if a buffer was used as an
16390ASL operand where an integer operand is required (Thus causing an
16391implicit object conversion from Buffer to Integer.)  The change in
16392the 10/02 release was attempting to fix a memory leak (albeit
16393incorrectly.)
16394
16395Code and Data Size: Current core subsystem library sizes are shown
16396below.  These are the code and data sizes for the acpica.lib
16397produced by the Microsoft Visual C++ 6.0 compiler, and these
16398values do not include any ACPI driver or OSPM code.  The debug
16399version of the code includes the debug output trace mechanism and
16400has a much larger code and data size.  Note that these values will
16401vary depending on the efficiency of the compiler and the compiler
16402options used during generation.
16403
16404  Previous Release
16405    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
16406    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
16407  Current Release:
16408    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
16409    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
16410
16411
164122) Linux
16413
16414Changed the implementation of the ACPI semaphores to use down()
16415instead of down_interruptable().  It is important that the
16416execution of ACPI control methods not be interrupted by signals.
16417Methods must run to completion, or the system may be left in an
16418unknown/unstable state.
16419
16420Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
16421(Shawn Starr)
16422
16423
164243) iASL Compiler/Disassembler
16425
16426
16427Changed the default location of output files.  All output files
16428are now placed in the current directory by default instead of in
16429the directory of the source file.  This change may affect some
16430existing makefiles, but it brings the behavior of the compiler in
16431line with other similar tools.  The location of the output files
16432can be overridden with the -p command line switch.
16433
16434
16435----------------------------------------
1643611 November 2002.  Summary of changes for version 20021111.
16437
16438
164390) ACPI Specification 2.0B is released and is now available at:
16440http://www.acpi.info/index.html
16441
16442
164431) ACPI CA Core Subsystem:
16444
16445Implemented support for the ACPI 2.0 SMBus Operation Regions.
16446This includes the early detection and handoff of the request to
16447the SMBus region handler (avoiding all of the complex field
16448support code), and support for the bidirectional return packet
16449from an SMBus write operation.  This paves the way for the
16450development of SMBus drivers in each host operating system.
16451
16452Fixed a problem where the semaphore WAIT_FOREVER constant was
16453defined as 32 bits, but must be 16 bits according to the ACPI
16454specification.  This had the side effect of causing ASL
16455Mutex/Event timeouts even though the ASL code requested a wait
16456forever.  Changed all internal references to the ACPI timeout
16457parameter to 16 bits to prevent future problems.  Changed the name
16458of WAIT_FOREVER to ACPI_WAIT_FOREVER.
16459
16460Code and Data Size: Current core subsystem library sizes are shown
16461below.  These are the code and data sizes for the acpica.lib
16462produced by the Microsoft Visual C++ 6.0 compiler, and these
16463values do not include any ACPI driver or OSPM code.  The debug
16464version of the code includes the debug output trace mechanism and
16465has a much larger code and data size.  Note that these values will
16466vary depending on the efficiency of the compiler and the compiler
16467options used during generation.
16468
16469  Previous Release
16470    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16471    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
16472  Current Release:
16473    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
16474    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
16475
16476
164772) Linux
16478
16479Module loading/unloading fixes (John Cagle)
16480
16481
164823) iASL Compiler/Disassembler
16483
16484Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
16485
16486Implemented support for the disassembly of all SMBus protocol
16487keywords (SMBQuick, SMBWord, etc.)
16488
16489----------------------------------------
1649001 November 2002.  Summary of changes for version 20021101.
16491
16492
164931) ACPI CA Core Subsystem:
16494
16495Fixed a problem where platforms that have a GPE1 block but no GPE0
16496block were not handled correctly.  This resulted in a "GPE
16497overlap" error message.  GPE0 is no longer required.
16498
16499Removed code added in the previous release that inserted nodes
16500into the namespace in alphabetical order.  This caused some side-
16501effects on various machines.  The root cause of the problem is
16502still under investigation since in theory, the internal ordering
16503of the namespace nodes should not matter.
16504
16505
16506Enhanced error reporting for the case where a named object is not
16507found during control method execution.  The full ACPI namepath
16508(name reference) of the object that was not found is displayed in
16509this case.
16510
16511Note: as a result of the overhaul of the namespace object types in
16512the previous release, the namespace nodes for the predefined
16513scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
16514instead of ACPI_TYPE_ANY.  This simplifies the namespace
16515management code but may affect code that walks the namespace tree
16516looking for specific object types.
16517
16518Code and Data Size: Current core subsystem library sizes are shown
16519below.  These are the code and data sizes for the acpica.lib
16520produced by the Microsoft Visual C++ 6.0 compiler, and these
16521values do not include any ACPI driver or OSPM code.  The debug
16522version of the code includes the debug output trace mechanism and
16523has a much larger code and data size.  Note that these values will
16524vary depending on the efficiency of the compiler and the compiler
16525options used during generation.
16526
16527  Previous Release
16528    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
16529    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
16530  Current Release:
16531    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16532    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
16533
16534
165352) Linux
16536
16537Fixed a problem introduced in the previous release where the
16538Processor and Thermal objects were not recognized and installed in
16539/proc.  This was related to the scope type change described above.
16540
16541
165423) iASL Compiler/Disassembler
16543
16544Implemented the -g option to get all of the required ACPI tables
16545from the registry and save them to files (Windows version of the
16546compiler only.)  The required tables are the FADT, FACS, and DSDT.
16547
16548Added ACPI table checksum validation during table disassembly in
16549order to catch corrupted tables.
16550
16551
16552----------------------------------------
1655322 October 2002.  Summary of changes for version 20021022.
16554
165551) ACPI CA Core Subsystem:
16556
16557Implemented a restriction on the Scope operator that the target
16558must already exist in the namespace at the time the operator is
16559encountered (during table load or method execution).  In other
16560words, forward references are not allowed and Scope() cannot
16561create a new object. This changes the previous behavior where the
16562interpreter would create the name if not found.  This new behavior
16563correctly enables the search-to-root algorithm during namespace
16564lookup of the target name.  Because of this upsearch, this fixes
16565the known Compaq _SB_.OKEC problem and makes both the AML
16566interpreter and iASL compiler compatible with other ACPI
16567implementations.
16568
16569Completed a major overhaul of the internal ACPI object types for
16570the ACPI Namespace and the associated operand objects.  Many of
16571these types had become obsolete with the introduction of the two-
16572pass namespace load.  This cleanup simplifies the code and makes
16573the entire namespace load mechanism much clearer and easier to
16574understand.
16575
16576Improved debug output for tracking scope opening/closing to help
16577diagnose scoping issues.  The old scope name as well as the new
16578scope name are displayed.  Also improved error messages for
16579problems with ASL Mutex objects and error messages for GPE
16580problems.
16581
16582Cleaned up the namespace dump code, removed obsolete code.
16583
16584All string output (for all namespace/object dumps) now uses the
16585common ACPI string output procedure which handles escapes properly
16586and does not emit non-printable characters.
16587
16588Fixed some issues with constants in the 64-bit version of the
16589local C library (utclib.c)
16590
16591
165922) Linux
16593
16594EC Driver:  No longer attempts to acquire the Global Lock at
16595interrupt level.
16596
16597
165983) iASL Compiler/Disassembler
16599
16600Implemented ACPI 2.0B grammar change that disallows all Type 1 and
166012 opcodes outside of a control method.  This means that the
16602"executable" operators (versus the "namespace" operators) cannot
16603be used at the table level; they can only be used within a control
16604method.
16605
16606Implemented the restriction on the Scope() operator where the
16607target must already exist in the namespace at the time the
16608operator is encountered (during ASL compilation). In other words,
16609forward references are not allowed and Scope() cannot create a new
16610object.  This makes the iASL compiler compatible with other ACPI
16611implementations and makes the Scope() implementation adhere to the
16612ACPI specification.
16613
16614Fixed a problem where namepath optimization for the Alias operator
16615was optimizing the wrong path (of the two namepaths.)  This caused
16616a "Missing alias link" error message.
16617
16618Fixed a problem where an "unknown reserved name" warning could be
16619incorrectly generated for names like "_SB" when the trailing
16620underscore is not used in the original ASL.
16621
16622Fixed a problem where the reserved name check did not handle
16623NamePaths with multiple NameSegs correctly.  The first nameseg of
16624the NamePath was examined instead of the last NameSeg.
16625
16626
16627----------------------------------------
16628
1662902 October 2002.  Summary of changes for this release.
16630
16631
166321) ACPI CA Core Subsystem version 20021002:
16633
16634Fixed a problem where a store/copy of a string to an existing
16635string did not always set the string length properly in the String
16636object.
16637
16638Fixed a reported problem with the ToString operator where the
16639behavior was identical to the ToHexString operator instead of just
16640simply converting a raw buffer to a string data type.
16641
16642Fixed a problem where CopyObject and the other "explicit"
16643conversion operators were not updating the internal namespace node
16644type as part of the store operation.
16645
16646Fixed a memory leak during implicit source operand conversion
16647where the original object was not deleted if it was converted to a
16648new object of a different type.
16649
16650Enhanced error messages for all problems associated with namespace
16651lookups.  Common procedure generates and prints the lookup name as
16652well as the formatted status.
16653
16654Completed implementation of a new design for the Alias support
16655within the namespace.  The existing design did not handle the case
16656where a new object was assigned to one of the two names due to the
16657use of an explicit conversion operator, resulting in the two names
16658pointing to two different objects.  The new design simply points
16659the Alias name to the original name node - not to the object.
16660This results in a level of indirection that must be handled in the
16661name resolution mechanism.
16662
16663Code and Data Size: Current core subsystem library sizes are shown
16664below.  These are the code and data sizes for the acpica.lib
16665produced by the Microsoft Visual C++ 6.0 compiler, and these
16666values do not include any ACPI driver or OSPM code.  The debug
16667version of the code includes the debug output trace mechanism and
16668has a larger code and data size.  Note that these values will vary
16669depending on the efficiency of the compiler and the compiler
16670options used during generation.
16671
16672  Previous Release
16673    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
16674    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
16675  Current Release:
16676    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
16677    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
16678
16679
166802) Linux
16681
16682Initialize thermal driver's timer before it is used. (Knut
16683Neumann)
16684
16685Allow handling negative celsius values. (Kochi Takayoshi)
16686
16687Fix thermal management and make trip points. R/W (Pavel Machek)
16688
16689Fix /proc/acpi/sleep. (P. Christeas)
16690
16691IA64 fixes. (David Mosberger)
16692
16693Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
16694
16695Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
16696Brodowski)
16697
16698
166993) iASL Compiler/Disassembler
16700
16701Clarified some warning/error messages.
16702
16703
16704----------------------------------------
1670518 September 2002.  Summary of changes for this release.
16706
16707
167081) ACPI CA Core Subsystem version 20020918:
16709
16710Fixed a reported problem with reference chaining (via the Index()
16711and RefOf() operators) in the ObjectType() and SizeOf() operators.
16712The definition of these operators includes the dereferencing of
16713all chained references to return information on the base object.
16714
16715Fixed a problem with stores to indexed package elements - the
16716existing code would not complete the store if an "implicit
16717conversion" was not performed.  In other words, if the existing
16718object (package element) was to be replaced completely, the code
16719didn't handle this case.
16720
16721Relaxed typechecking on the ASL "Scope" operator to allow the
16722target name to refer to an object of type Integer, String, or
16723Buffer, in addition to the scoping object types (Device,
16724predefined Scopes, Processor, PowerResource, and ThermalZone.)
16725This allows existing AML code that has workarounds for a bug in
16726Windows to function properly.  A warning is issued, however.  This
16727affects both the AML interpreter and the iASL compiler. Below is
16728an example of this type of ASL code:
16729
16730      Name(DEB,0x00)
16731      Scope(DEB)
16732      {
16733
16734Fixed some reported problems with 64-bit integer support in the
16735local implementation of C library functions (clib.c)
16736
16737
167382) Linux
16739
16740Use ACPI fix map region instead of IOAPIC region, since it is
16741undefined in non-SMP.
16742
16743Ensure that the SCI has the proper polarity and trigger, even on
16744systems that do not have an interrupt override entry in the MADT.
16745
167462.5 big driver reorganization (Pat Mochel)
16747
16748Use early table mapping code from acpitable.c (Andi Kleen)
16749
16750New blacklist entries (Andi Kleen)
16751
16752Blacklist improvements. Split blacklist code out into a separate
16753file. Move checking the blacklist to very early. Previously, we
16754would use ACPI tables, and then halfway through init, check the
16755blacklist -- too late. Now, it's early enough to completely fall-
16756back to non-ACPI.
16757
16758
167593) iASL Compiler/Disassembler version 20020918:
16760
16761Fixed a problem where the typechecking code didn't know that an
16762alias could point to a method.  In other words, aliases were not
16763being dereferenced during typechecking.
16764
16765
16766----------------------------------------
1676729 August 2002.  Summary of changes for this release.
16768
167691) ACPI CA Core Subsystem Version 20020829:
16770
16771If the target of a Scope() operator already exists, it must be an
16772object type that actually opens a scope -- such as a Device,
16773Method, Scope, etc.  This is a fatal runtime error.  Similar error
16774check has been added to the iASL compiler also.
16775
16776Tightened up the namespace load to disallow multiple names in the
16777same scope.  This previously was allowed if both objects were of
16778the same type.  (i.e., a lookup was the same as entering a new
16779name).
16780
16781
167822) Linux
16783
16784Ensure that the ACPI interrupt has the proper trigger and
16785polarity.
16786
16787local_irq_disable is extraneous. (Matthew Wilcox)
16788
16789Make "acpi=off" actually do what it says, and not use the ACPI
16790interpreter *or* the tables.
16791
16792Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
16793Takayoshi)
16794
16795
167963) iASL Compiler/Disassembler  Version 20020829:
16797
16798Implemented namepath optimization for name declarations.  For
16799example, a declaration like "Method (\_SB_.ABCD)" would get
16800optimized to "Method (ABCD)" if the declaration is within the
16801\_SB_ scope.  This optimization is in addition to the named
16802reference path optimization first released in the previous
16803version. This would seem to complete all possible optimizations
16804for namepaths within the ASL/AML.
16805
16806If the target of a Scope() operator already exists, it must be an
16807object type that actually opens a scope -- such as a Device,
16808Method, Scope, etc.
16809
16810Implemented a check and warning for unreachable code in the same
16811block below a Return() statement.
16812
16813Fixed a problem where the listing file was not generated if the
16814compiler aborted if the maximum error count was exceeded (200).
16815
16816Fixed a problem where the typechecking of method return values was
16817broken.  This includes the check for a return value when the
16818method is invoked as a TermArg (a return value is expected.)
16819
16820Fixed a reported problem where EOF conditions during a quoted
16821string or comment caused a fault.
16822
16823
16824----------------------------------------
1682515 August 2002.  Summary of changes for this release.
16826
168271) ACPI CA Core Subsystem Version 20020815:
16828
16829Fixed a reported problem where a Store to a method argument that
16830contains a reference did not perform the indirect store correctly.
16831This problem was created during the conversion to the new
16832reference object model - the indirect store to a method argument
16833code was not updated to reflect the new model.
16834
16835Reworked the ACPI mode change code to better conform to ACPI 2.0,
16836handle corner cases, and improve code legibility (Kochi Takayoshi)
16837
16838Fixed a problem with the pathname parsing for the carat (^)
16839prefix.  The heavy use of the carat operator by the new namepath
16840optimization in the iASL compiler uncovered a problem with the AML
16841interpreter handling of this prefix.  In the case where one or
16842more carats precede a single nameseg, the nameseg was treated as
16843standalone and the search rule (to root) was inadvertently
16844applied.  This could cause both the iASL compiler and the
16845interpreter to find the wrong object or to miss the error that
16846should occur if the object does not exist at that exact pathname.
16847
16848Found and fixed the problem where the HP Pavilion DSDT would not
16849load.  This was a relatively minor tweak to the table loading code
16850(a problem caused by the unexpected encounter with a method
16851invocation not within a control method), but it does not solve the
16852overall issue of the execution of AML code at the table level.
16853This investigation is still ongoing.
16854
16855Code and Data Size: Current core subsystem library sizes are shown
16856below.  These are the code and data sizes for the acpica.lib
16857produced by the Microsoft Visual C++ 6.0 compiler, and these
16858values do not include any ACPI driver or OSPM code.  The debug
16859version of the code includes the debug output trace mechanism and
16860has a larger code and data size.  Note that these values will vary
16861depending on the efficiency of the compiler and the compiler
16862options used during generation.
16863
16864  Previous Release
16865    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
16866    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
16867  Current Release:
16868    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
16869    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
16870
16871
168722) Linux
16873
16874Remove redundant slab.h include (Brad Hards)
16875
16876Fix several bugs in thermal.c (Herbert Nachtnebel)
16877
16878Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
16879
16880Change acpi_system_suspend to use updated irq functions (Pavel
16881Machek)
16882
16883Export acpi_get_firmware_table (Matthew Wilcox)
16884
16885Use proper root proc entry for ACPI (Kochi Takayoshi)
16886
16887Fix early-boot table parsing (Bjorn Helgaas)
16888
16889
168903) iASL Compiler/Disassembler
16891
16892Reworked the compiler options to make them more consistent and to
16893use two-letter options where appropriate.  We were running out of
16894sensible letters.   This may break some makefiles, so check the
16895current options list by invoking the compiler with no parameters.
16896
16897Completed the design and implementation of the ASL namepath
16898optimization option for the compiler.  This option optimizes all
16899references to named objects to the shortest possible path.  The
16900first attempt tries to utilize a single nameseg (4 characters) and
16901the "search-to-root" algorithm used by the interpreter.  If that
16902cannot be used (because either the name is not in the search path
16903or there is a conflict with another object with the same name),
16904the pathname is optimized using the carat prefix (usually a
16905shorter string than specifying the entire path from the root.)
16906
16907Implemented support to obtain the DSDT from the Windows registry
16908(when the disassembly option is specified with no input file).
16909Added this code as the implementation for AcpiOsTableOverride in
16910the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
16911utility) to scan memory for the DSDT to the AcpiOsTableOverride
16912function in the DOS OSL to make the disassembler truly OS
16913independent.
16914
16915Implemented a new option to disassemble and compile in one step.
16916When used without an input filename, this option will grab the
16917DSDT from the local machine, disassemble it, and compile it in one
16918step.
16919
16920Added a warning message for invalid escapes (a backslash followed
16921by any character other than the allowable escapes).  This catches
16922the quoted string error "\_SB_" (which should be "\\_SB_" ).
16923
16924Also, there are numerous instances in the ACPI specification where
16925this error occurs.
16926
16927Added a compiler option to disable all optimizations.  This is
16928basically the "compatibility mode" because by using this option,
16929the AML code will come out exactly the same as other ASL
16930compilers.
16931
16932Added error messages for incorrectly ordered dependent resource
16933functions.  This includes: missing EndDependentFn macro at end of
16934dependent resource list, nested dependent function macros (both
16935start and end), and missing StartDependentFn macro.  These are
16936common errors that should be caught at compile time.
16937
16938Implemented _OSI support for the disassembler and compiler.  _OSI
16939must be included in the namespace for proper disassembly (because
16940the disassembler must know the number of arguments.)
16941
16942Added an "optimization" message type that is optional (off by
16943default).  This message is used for all optimizations - including
16944constant folding, integer optimization, and namepath optimization.
16945
16946----------------------------------------
1694725 July 2002.  Summary of changes for this release.
16948
16949
169501) ACPI CA Core Subsystem Version 20020725:
16951
16952The AML Disassembler has been enhanced to produce compilable ASL
16953code and has been integrated into the iASL compiler (see below) as
16954well as the single-step disassembly for the AML debugger and the
16955disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
16956resource templates and macros are fully supported.  The
16957disassembler has been tested on over 30 different AML files,
16958producing identical AML when the resulting disassembled ASL file
16959is recompiled with the same ASL compiler.
16960
16961Modified the Resource Manager to allow zero interrupts and zero
16962dma channels during the GetCurrentResources call.  This was
16963causing problems on some platforms.
16964
16965Added the AcpiOsRedirectOutput interface to the OSL to simplify
16966output redirection for the AcpiOsPrintf and AcpiOsVprintf
16967interfaces.
16968
16969Code and Data Size: Current core subsystem library sizes are shown
16970below.  These are the code and data sizes for the acpica.lib
16971produced by the Microsoft Visual C++ 6.0 compiler, and these
16972values do not include any ACPI driver or OSPM code.  The debug
16973version of the code includes the debug output trace mechanism and
16974has a larger code and data size.  Note that these values will vary
16975depending on the efficiency of the compiler and the compiler
16976options used during generation.
16977
16978  Previous Release
16979    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
16980    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
16981  Current Release:
16982    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
16983    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
16984
16985
169862) Linux
16987
16988Fixed a panic in the EC driver (Dominik Brodowski)
16989
16990Implemented checksum of the R/XSDT itself during Linux table scan
16991(Richard Schaal)
16992
16993
169943) iASL compiler
16995
16996The AML disassembler is integrated into the compiler.  The "-d"
16997option invokes the disassembler  to completely disassemble an
16998input AML file, producing as output a text ASL file with the
16999extension ".dsl" (to avoid name collisions with existing .asl
17000source files.)  A future enhancement will allow the disassembler
17001to obtain the BIOS DSDT from the registry under Windows.
17002
17003Fixed a problem with the VendorShort and VendorLong resource
17004descriptors where an invalid AML sequence was created.
17005
17006Implemented a fix for BufferData term in the ASL parser.  It was
17007inadvertently defined twice, allowing invalid syntax to pass and
17008causing reduction conflicts.
17009
17010Fixed a problem where the Ones opcode could get converted to a
17011value of zero if "Ones" was used where a byte, word or dword value
17012was expected.  The 64-bit value is now truncated to the correct
17013size with the correct value.
17014
17015
17016
17017----------------------------------------
1701802 July 2002.  Summary of changes for this release.
17019
17020
170211) ACPI CA Core Subsystem Version 20020702:
17022
17023The Table Manager code has been restructured to add several new
17024features.  Tables that are not required by the core subsystem
17025(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
17026validated in any way and are returned from AcpiGetFirmwareTable if
17027requested.  The AcpiOsTableOverride interface is now called for
17028each table that is loaded by the subsystem in order to allow the
17029host to override any table it chooses.  Previously, only the DSDT
17030could be overridden.  Added one new files, tbrsdt.c and
17031tbgetall.c.
17032
17033Fixed a problem with the conversion of internal package objects to
17034external objects (when a package is returned from a control
17035method.)  The return buffer length was set to zero instead of the
17036proper length of the package object.
17037
17038Fixed a reported problem with the use of the RefOf and DeRefOf
17039operators when passing reference arguments to control methods.  A
17040new type of Reference object is used internally for references
17041produced by the RefOf operator.
17042
17043Added additional error messages in the Resource Manager to explain
17044AE_BAD_DATA errors when they occur during resource parsing.
17045
17046Split the AcpiEnableSubsystem into two primitives to enable a
17047finer granularity initialization sequence.  These two calls should
17048be called in this order: AcpiEnableSubsystem (flags),
17049AcpiInitializeObjects (flags).  The flags parameter remains the
17050same.
17051
17052
170532) Linux
17054
17055Updated the ACPI utilities module to understand the new style of
17056fully resolved package objects that are now returned from the core
17057subsystem.  This eliminates errors of the form:
17058
17059    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
17060    acpi_utils-0430 [145] acpi_evaluate_reference:
17061        Invalid element in package (not a device reference)
17062
17063The method evaluation utility uses the new buffer allocation
17064scheme instead of calling AcpiEvaluate Object twice.
17065
17066Added support for ECDT. This allows the use of the Embedded
17067
17068Controller before the namespace has been fully initialized, which
17069is necessary for ACPI 2.0 support, and for some laptops to
17070initialize properly. (Laptops using ECDT are still rare, so only
17071limited testing was performed of the added functionality.)
17072
17073Fixed memory leaks in the EC driver.
17074
17075Eliminated a brittle code structure in acpi_bus_init().
17076
17077Eliminated the acpi_evaluate() helper function in utils.c. It is
17078no longer needed since acpi_evaluate_object can optionally
17079allocate memory for the return object.
17080
17081Implemented fix for keyboard hang when getting battery readings on
17082some systems (Stephen White)
17083
17084PCI IRQ routing update (Dominik Brodowski)
17085
17086Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
17087support
17088
17089----------------------------------------
1709011 June 2002.  Summary of changes for this release.
17091
17092
170931) ACPI CA Core Subsystem Version 20020611:
17094
17095Fixed a reported problem where constants such as Zero and One
17096appearing within _PRT packages were not handled correctly within
17097the resource manager code.  Originally reported against the ASL
17098compiler because the code generator now optimizes integers to
17099their minimal AML representation (i.e. AML constants if possible.)
17100The _PRT code now handles all AML constant opcodes correctly
17101(Zero, One, Ones, Revision).
17102
17103Fixed a problem with the Concatenate operator in the AML
17104interpreter where a buffer result object was incorrectly marked as
17105not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
17106
17107All package sub-objects are now fully resolved before they are
17108returned from the external ACPI interfaces.  This means that name
17109strings are resolved to object handles, and constant operators
17110(Zero, One, Ones, Revision) are resolved to Integers.
17111
17112Implemented immediate resolution of the AML Constant opcodes
17113(Zero, One, Ones, Revision) to Integer objects upon detection
17114within the AML stream. This has simplified and reduced the
17115generated code size of the subsystem by eliminating about 10
17116switch statements for these constants (which previously were
17117contained in Reference objects.)  The complicating issues are that
17118the Zero opcode is used as a "placeholder" for unspecified
17119optional target operands and stores to constants are defined to be
17120no-ops.
17121
17122Code and Data Size: Current core subsystem library sizes are shown
17123below. These are the code and data sizes for the acpica.lib
17124produced by the Microsoft Visual C++ 6.0 compiler, and these
17125values do not include any ACPI driver or OSPM code.  The debug
17126version of the code includes the debug output trace mechanism and
17127has a larger code and data size.  Note that these values will vary
17128depending on the efficiency of the compiler and the compiler
17129options used during generation.
17130
17131  Previous Release
17132    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
17133    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
17134  Current Release:
17135    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
17136    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
17137
17138
171392) Linux
17140
17141
17142Added preliminary support for obtaining _TRA data for PCI root
17143bridges (Bjorn Helgaas).
17144
17145
171463) iASL Compiler Version X2046:
17147
17148Fixed a problem where the "_DDN" reserved name was defined to be a
17149control method with one argument.  There are no arguments, and
17150_DDN does not have to be a control method.
17151
17152Fixed a problem with the Linux version of the compiler where the
17153source lines printed with error messages were the wrong lines.
17154This turned out to be the "LF versus CR/LF" difference between
17155Windows and Unix.  This appears to be the longstanding issue
17156concerning listing output and error messages.
17157
17158Fixed a problem with the Linux version of compiler where opcode
17159names within error messages were wrong.  This was caused by a
17160slight difference in the output of the Flex tool on Linux versus
17161Windows.
17162
17163Fixed a problem with the Linux compiler where the hex output files
17164contained some garbage data caused by an internal buffer overrun.
17165
17166
17167----------------------------------------
1716817 May 2002.  Summary of changes for this release.
17169
17170
171711) ACPI CA Core Subsystem Version 20020517:
17172
17173Implemented a workaround to an BIOS bug discovered on the HP
17174OmniBook where the FADT revision number and the table size are
17175inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
17176behavior is to fallback to using only the ACPI 1.0 fields of the
17177FADT if the table is too small to be a ACPI 2.0 table as claimed
17178by the revision number.  Although this is a BIOS bug, this is a
17179case where the workaround is simple enough and with no side
17180effects, so it seemed prudent to add it.  A warning message is
17181issued, however.
17182
17183Implemented minimum size checks for the fixed-length ACPI tables -
17184- the FADT and FACS, as well as consistency checks between the
17185revision number and the table size.
17186
17187Fixed a reported problem in the table override support where the
17188new table pointer was incorrectly treated as a physical address
17189instead of a logical address.
17190
17191Eliminated the use of the AE_AML_ERROR exception and replaced it
17192with more descriptive codes.
17193
17194Fixed a problem where an exception would occur if an ASL Field was
17195defined with no named Field Units underneath it (used by some
17196index fields).
17197
17198Code and Data Size: Current core subsystem library sizes are shown
17199below.  These are the code and data sizes for the acpica.lib
17200produced by the Microsoft Visual C++ 6.0 compiler, and these
17201values do not include any ACPI driver or OSPM code.  The debug
17202version of the code includes the debug output trace mechanism and
17203has a larger code and data size.  Note that these values will vary
17204depending on the efficiency of the compiler and the compiler
17205options used during generation.
17206
17207  Previous Release
17208    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
17209    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
17210  Current Release:
17211    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
17212    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
17213
17214
17215
172162) Linux
17217
17218Much work done on ACPI init (MADT and PCI IRQ routing support).
17219(Paul D. and Dominik Brodowski)
17220
17221Fix PCI IRQ-related panic on boot (Sam Revitch)
17222
17223Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
17224
17225Fix "MHz" typo (Dominik Brodowski)
17226
17227Fix RTC year 2000 issue (Dominik Brodowski)
17228
17229Preclude multiple button proc entries (Eric Brunet)
17230
17231Moved arch-specific code out of include/platform/aclinux.h
17232
172333) iASL Compiler Version X2044:
17234
17235Implemented error checking for the string used in the EISAID macro
17236(Usually used in the definition of the _HID object.)  The code now
17237strictly enforces the PnP format - exactly 7 characters, 3
17238uppercase letters and 4 hex digits.
17239
17240If a raw string is used in the definition of the _HID object
17241(instead of the EISAID macro), the string must contain all
17242alphanumeric characters (e.g., "*PNP0011" is not allowed because
17243of the asterisk.)
17244
17245Implemented checking for invalid use of ACPI reserved names for
17246most of the name creation operators (Name, Device, Event, Mutex,
17247OperationRegion, PowerResource, Processor, and ThermalZone.)
17248Previously, this check was only performed for control methods.
17249
17250Implemented an additional check on the Name operator to emit an
17251error if a reserved name that must be implemented in ASL as a
17252control method is used.  We know that a reserved name must be a
17253method if it is defined with input arguments.
17254
17255The warning emitted when a namespace object reference is not found
17256during the cross reference phase has been changed into an error.
17257The "External" directive should be used for names defined in other
17258modules.
17259
17260
172614) Tools and Utilities
17262
17263The 16-bit tools (adump16 and aexec16) have been regenerated and
17264tested.
17265
17266Fixed a problem with the output of both acpidump and adump16 where
17267the indentation of closing parentheses and brackets was not
17268
17269aligned properly with the parent block.
17270
17271
17272----------------------------------------
1727303 May 2002.  Summary of changes for this release.
17274
17275
172761) ACPI CA Core Subsystem Version 20020503:
17277
17278Added support a new OSL interface that allows the host operating
17279
17280system software to override the DSDT found in the firmware -
17281AcpiOsTableOverride.  With this interface, the OSL can examine the
17282version of the firmware DSDT and replace it with a different one
17283if desired.
17284
17285Added new external interfaces for accessing ACPI registers from
17286device drivers and other system software - AcpiGetRegister and
17287AcpiSetRegister.  This was simply an externalization of the
17288existing AcpiHwBitRegister interfaces.
17289
17290Fixed a regression introduced in the previous build where the
17291ASL/AML CreateField operator always returned an error,
17292"destination must be a NS Node".
17293
17294Extended the maximum time (before failure) to successfully enable
17295ACPI mode to 3 seconds.
17296
17297Code and Data Size: Current core subsystem library sizes are shown
17298below.  These are the code and data sizes for the acpica.lib
17299produced by the Microsoft Visual C++ 6.0 compiler, and these
17300values do not include any ACPI driver or OSPM code.  The debug
17301version of the code includes the debug output trace mechanism and
17302has a larger code and data size.  Note that these values will vary
17303depending on the efficiency of the compiler and the compiler
17304options used during generation.
17305
17306  Previous Release
17307    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
17308    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
17309  Current Release:
17310    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
17311    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
17312
17313
173142) Linux
17315
17316Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
17317free. While 3 out of 4 of our in-house systems work fine, the last
17318one still hangs when testing the LAPIC timer.
17319
17320Renamed many files in 2.5 kernel release to omit "acpi_" from the
17321name.
17322
17323Added warning on boot for Presario 711FR.
17324
17325Sleep improvements (Pavel Machek)
17326
17327ACPI can now be built without CONFIG_PCI enabled.
17328
17329IA64: Fixed memory map functions (JI Lee)
17330
17331
173323) iASL Compiler Version X2043:
17333
17334Added support to allow the compiler to be integrated into the MS
17335VC++ development environment for one-button compilation of single
17336files or entire projects -- with error-to-source-line mapping.
17337
17338Implemented support for compile-time constant folding for the
17339Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
17340specification.  This allows the ASL writer to use expressions
17341instead of Integer/Buffer/String constants in terms that must
17342evaluate to constants at compile time and will also simplify the
17343emitted AML in any such sub-expressions that can be folded
17344(evaluated at compile-time.)  This increases the size of the
17345compiler significantly because a portion of the ACPI CA AML
17346interpreter is included within the compiler in order to pre-
17347evaluate constant expressions.
17348
17349
17350Fixed a problem with the "Unicode" ASL macro that caused the
17351compiler to fault.  (This macro is used in conjunction with the
17352_STR reserved name.)
17353
17354Implemented an AML opcode optimization to use the Zero, One, and
17355Ones opcodes where possible to further reduce the size of integer
17356constants and thus reduce the overall size of the generated AML
17357code.
17358
17359Implemented error checking for new reserved terms for ACPI version
173602.0A.
17361
17362Implemented the -qr option to display the current list of ACPI
17363reserved names known to the compiler.
17364
17365Implemented the -qc option to display the current list of ASL
17366operators that are allowed within constant expressions and can
17367therefore be folded at compile time if the operands are constants.
17368
17369
173704) Documentation
17371
17372Updated the Programmer's Reference for new interfaces, data types,
17373and memory allocation model options.
17374
17375Updated the iASL Compiler User Reference to apply new format and
17376add information about new features and options.
17377
17378----------------------------------------
1737919 April 2002.  Summary of changes for this release.
17380
173811) ACPI CA Core Subsystem Version 20020419:
17382
17383The source code base for the Core Subsystem has been completely
17384cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
17385versions.  The Lint option files used are included in the
17386/acpi/generate/lint directory.
17387
17388Implemented enhanced status/error checking across the entire
17389Hardware manager subsystem.  Any hardware errors (reported from
17390the OSL) are now bubbled up and will abort a running control
17391method.
17392
17393
17394Fixed a problem where the per-ACPI-table integer width (32 or 64)
17395was stored only with control method nodes, causing a fault when
17396non-control method code was executed during table loading.  The
17397solution implemented uses a global variable to indicate table
17398width across the entire ACPI subsystem.  Therefore, ACPI CA does
17399not support mixed integer widths across different ACPI tables
17400(DSDT, SSDT).
17401
17402Fixed a problem where NULL extended fields (X fields) in an ACPI
174032.0 ACPI FADT caused the table load to fail.  Although the
17404existing ACPI specification is a bit fuzzy on this topic, the new
17405behavior is to fall back on a ACPI 1.0 field if the corresponding
17406ACPI 2.0 X field is zero (even though the table revision indicates
17407a full ACPI 2.0 table.)  The ACPI specification will be updated to
17408clarify this issue.
17409
17410Fixed a problem with the SystemMemory operation region handler
17411where memory was always accessed byte-wise even if the AML-
17412specified access width was larger than a byte.  This caused
17413problems on systems with memory-mapped I/O.  Memory is now
17414accessed with the width specified.  On systems that do not support
17415non-aligned transfers, a check is made to guarantee proper address
17416alignment before proceeding in order to avoid an AML-caused
17417alignment fault within the kernel.
17418
17419
17420Fixed a problem with the ExtendedIrq resource where only one byte
17421of the 4-byte Irq field was extracted.
17422
17423Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
17424function was out of date and required a rewrite.
17425
17426Code and Data Size: Current core subsystem library sizes are shown
17427below.  These are the code and data sizes for the acpica.lib
17428produced by the Microsoft Visual C++ 6.0 compiler, and these
17429values do not include any ACPI driver or OSPM code.  The debug
17430version of the code includes the debug output trace mechanism and
17431has a larger code and data size.  Note that these values will vary
17432depending on the efficiency of the compiler and the compiler
17433options used during generation.
17434
17435  Previous Release
17436    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
17437    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
17438  Current Release:
17439    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
17440    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
17441
17442
174432) Linux
17444
17445PCI IRQ routing fixes (Dominik Brodowski)
17446
17447
174483) iASL Compiler Version X2042:
17449
17450Implemented an additional compile-time error check for a field
17451unit whose size + minimum access width would cause a run-time
17452access beyond the end-of-region.  Previously, only the field size
17453itself was checked.
17454
17455The Core subsystem and iASL compiler now share a common parse
17456object in preparation for compile-time evaluation of the type
174573/4/5 ASL operators.
17458
17459
17460----------------------------------------
17461Summary of changes for this release: 03_29_02
17462
174631) ACPI CA Core Subsystem Version 20020329:
17464
17465Implemented support for late evaluation of TermArg operands to
17466Buffer and Package objects.  This allows complex expressions to be
17467used in the declarations of these object types.
17468
17469Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
174701.0, if the field was larger than 32 bits, it was returned as a
17471buffer - otherwise it was returned as an integer.  In ACPI 2.0,
17472the field is returned as a buffer only if the field is larger than
1747364 bits.  The TableRevision is now considered when making this
17474conversion to avoid incompatibility with existing ASL code.
17475
17476Implemented logical addressing for AcpiOsGetRootPointer.  This
17477allows an RSDP with either a logical or physical address.  With
17478this support, the host OS can now override all ACPI tables with
17479one logical RSDP.  Includes implementation of  "typed" pointer
17480support to allow a common data type for both physical and logical
17481pointers internally.  This required a change to the
17482AcpiOsGetRootPointer interface.
17483
17484Implemented the use of ACPI 2.0 Generic Address Structures for all
17485GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
17486mapped I/O for these ACPI features.
17487
17488Initialization now ignores not only non-required tables (All
17489tables other than the FADT, FACS, DSDT, and SSDTs), but also does
17490not validate the table headers of unrecognized tables.
17491
17492Fixed a problem where a notify handler could only be
17493installed/removed on an object of type Device.  All "notify"
17494
17495objects are now supported -- Devices, Processor, Power, and
17496Thermal.
17497
17498Removed most verbosity from the ACPI_DB_INFO debug level.  Only
17499critical information is returned when this debug level is enabled.
17500
17501Code and Data Size: Current core subsystem library sizes are shown
17502below.  These are the code and data sizes for the acpica.lib
17503produced by the Microsoft Visual C++ 6.0 compiler, and these
17504values do not include any ACPI driver or OSPM code.  The debug
17505version of the code includes the debug output trace mechanism and
17506has a larger code and data size.  Note that these values will vary
17507depending on the efficiency of the compiler and the compiler
17508options used during generation.
17509
17510  Previous Release
17511    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
17512    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
17513  Current Release:
17514    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
17515    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
17516
17517
175182) Linux:
17519
17520The processor driver (acpi_processor.c) now fully supports ACPI
175212.0-based processor performance control (e.g. Intel(R)
17522SpeedStep(TM) technology) Note that older laptops that only have
17523the Intel "applet" interface are not supported through this.  The
17524'limit' and 'performance' interface (/proc) are fully functional.
17525[Note that basic policy for controlling performance state
17526transitions will be included in the next version of ospmd.]  The
17527idle handler was modified to more aggressively use C2, and PIIX4
17528errata handling underwent a complete overhaul (big thanks to
17529Dominik Brodowski).
17530
17531Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
17532based devices in the ACPI namespace are now dynamically bound
17533(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
17534This allows, among other things, ACPI to resolve bus numbers for
17535subordinate PCI bridges.
17536
17537Enhanced PCI IRQ routing to get the proper bus number for _PRT
17538entries defined underneath PCI bridges.
17539
17540Added IBM 600E to bad bios list due to invalid _ADR value for
17541PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
17542
17543In the process of adding full MADT support (e.g. IOAPIC) for IA32
17544(acpi.c, mpparse.c) -- stay tuned.
17545
17546Added back visual differentiation between fixed-feature and
17547control-method buttons in dmesg.  Buttons are also subtyped (e.g.
17548button/power/PWRF) to simplify button identification.
17549
17550We no longer use -Wno-unused when compiling debug. Please ignore
17551any "_THIS_MODULE defined but not used" messages.
17552
17553Can now shut down the system using "magic sysrq" key.
17554
17555
175563) iASL Compiler version 2041:
17557
17558Fixed a problem where conversion errors for hex/octal/decimal
17559constants were not reported.
17560
17561Implemented a fix for the General Register template Address field.
17562This field was 8 bits when it should be 64.
17563
17564Fixed a problem where errors/warnings were no longer being emitted
17565within the listing output file.
17566
17567Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
17568exactly 4 characters, alphanumeric only.
17569
17570
17571
17572
17573----------------------------------------
17574Summary of changes for this release: 03_08_02
17575
17576
175771) ACPI CA Core Subsystem Version 20020308:
17578
17579Fixed a problem with AML Fields where the use of the "AccessAny"
17580keyword could cause an interpreter error due to attempting to read
17581or write beyond the end of the parent Operation Region.
17582
17583Fixed a problem in the SystemMemory Operation Region handler where
17584an attempt was made to map memory beyond the end of the region.
17585This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
17586errors on some Linux systems.
17587
17588Fixed a problem where the interpreter/namespace "search to root"
17589algorithm was not functioning for some object types.  Relaxed the
17590internal restriction on the search to allow upsearches for all
17591external object types as well as most internal types.
17592
17593
175942) Linux:
17595
17596We now use safe_halt() macro versus individual calls to sti | hlt.
17597
17598Writing to the processor limit interface should now work. "echo 1"
17599will increase the limit, 2 will decrease, and 0 will reset to the
17600
17601default.
17602
17603
176043) ASL compiler:
17605
17606Fixed segfault on Linux version.
17607
17608
17609----------------------------------------
17610Summary of changes for this release: 02_25_02
17611
176121) ACPI CA Core Subsystem:
17613
17614
17615Fixed a problem where the GPE bit masks were not initialized
17616properly, causing erratic GPE behavior.
17617
17618Implemented limited support for multiple calling conventions.  The
17619code can be generated with either the VPL (variable parameter
17620list, or "C") convention, or the FPL (fixed parameter list, or
17621"Pascal") convention.  The core subsystem is about 3.4% smaller
17622when generated with FPL.
17623
17624
176252) Linux
17626
17627Re-add some /proc/acpi/event functionality that was lost during
17628the rewrite
17629
17630Resolved issue with /proc events for fixed-feature buttons showing
17631up as the system device.
17632
17633Fixed checks on C2/C3 latencies to be inclusive of maximum values.
17634
17635Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
17636
17637Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
17638
17639Fixed limit interface & usage to fix bugs with passive cooling
17640hysterisis.
17641
17642Restructured PRT support.
17643
17644
17645----------------------------------------
17646Summary of changes for this label: 02_14_02
17647
17648
176491) ACPI CA Core Subsystem:
17650
17651Implemented support in AcpiLoadTable to allow loading of FACS and
17652FADT tables.
17653
17654Support for the now-obsolete interim 0.71 64-bit ACPI tables has
17655been removed.  All 64-bit platforms should be migrated to the ACPI
176562.0 tables.  The actbl71.h header has been removed from the source
17657tree.
17658
17659All C macros defined within the subsystem have been prefixed with
17660"ACPI_" to avoid collision with other system include files.
17661
17662Removed the return value for the two AcpiOsPrint interfaces, since
17663it is never used and causes lint warnings for ignoring the return
17664value.
17665
17666Added error checking to all internal mutex acquire and release
17667calls.  Although a failure from one of these interfaces is
17668probably a fatal system error, these checks will cause the
17669immediate abort of the currently executing method or interface.
17670
17671Fixed a problem where the AcpiSetCurrentResources interface could
17672fault.  This was a side effect of the deployment of the new memory
17673allocation model.
17674
17675Fixed a couple of problems with the Global Lock support introduced
17676in the last major build.  The "common" (1.0/2.0) internal FACS was
17677being overwritten with the FACS signature and clobbering the
17678Global Lock pointer.  Also, the actual firmware FACS was being
17679unmapped after construction of the "common" FACS, preventing
17680access to the actual Global Lock field within it.  The "common"
17681internal FACS is no longer installed as an actual ACPI table; it
17682is used simply as a global.
17683
17684Code and Data Size: Current core subsystem library sizes are shown
17685below.  These are the code and data sizes for the acpica.lib
17686produced by the Microsoft Visual C++ 6.0 compiler, and these
17687values do not include any ACPI driver or OSPM code.  The debug
17688version of the code includes the debug output trace mechanism and
17689has a larger code and data size.  Note that these values will vary
17690depending on the efficiency of the compiler and the compiler
17691options used during generation.
17692
17693  Previous Release (02_07_01)
17694    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
17695    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
17696  Current Release:
17697    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
17698    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
17699
17700
177012) Linux
17702
17703Updated Linux-specific code for core macro and OSL interface
17704changes described above.
17705
17706Improved /proc/acpi/event. It now can be opened only once and has
17707proper poll functionality.
17708
17709Fixed and restructured power management (acpi_bus).
17710
17711Only create /proc "view by type" when devices of that class exist.
17712
17713Fixed "charging/discharging" bug (and others) in acpi_battery.
17714
17715Improved thermal zone code.
17716
17717
177183) ASL Compiler, version X2039:
17719
17720
17721Implemented the new compiler restriction on ASL String hex/octal
17722escapes to non-null, ASCII values.  An error results if an invalid
17723value is used.  (This will require an ACPI 2.0 specification
17724change.)
17725
17726AML object labels that are output to the optional C and ASM source
17727are now prefixed with both the ACPI table signature and table ID
17728to help guarantee uniqueness within a large BIOS project.
17729
17730
17731----------------------------------------
17732Summary of changes for this label: 02_01_02
17733
177341) ACPI CA Core Subsystem:
17735
17736ACPI 2.0 support is complete in the entire Core Subsystem and the
17737ASL compiler. All new ACPI 2.0 operators are implemented and all
17738other changes for ACPI 2.0 support are complete.  With
17739simultaneous code and data optimizations throughout the subsystem,
17740ACPI 2.0 support has been implemented with almost no additional
17741cost in terms of code and data size.
17742
17743Implemented a new mechanism for allocation of return buffers.  If
17744the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
17745be allocated on behalf of the caller.  Consolidated all return
17746buffer validation and allocation to a common procedure.  Return
17747buffers will be allocated via the primary OSL allocation interface
17748since it appears that a separate pool is not needed by most users.
17749If a separate pool is required for these buffers, the caller can
17750still use the original mechanism and pre-allocate the buffer(s).
17751
17752Implemented support for string operands within the DerefOf
17753operator.
17754
17755Restructured the Hardware and Event managers to be table driven,
17756simplifying the source code and reducing the amount of generated
17757code.
17758
17759Split the common read/write low-level ACPI register bitfield
17760procedure into a separate read and write, simplifying the code
17761considerably.
17762
17763Obsoleted the AcpiOsCallocate OSL interface.  This interface was
17764used only a handful of times and didn't have enough critical mass
17765for a separate interface.  Replaced with a common calloc procedure
17766in the core.
17767
17768Fixed a reported problem with the GPE number mapping mechanism
17769that allows GPE1 numbers to be non-contiguous with GPE0.
17770Reorganized the GPE information and shrunk a large array that was
17771originally large enough to hold info for all possible GPEs (256)
17772to simply large enough to hold all GPEs up to the largest GPE
17773number on the machine.
17774
17775Fixed a reported problem with resource structure alignment on 64-
17776bit platforms.
17777
17778Changed the AcpiEnableEvent and AcpiDisableEvent external
17779interfaces to not require any flags for the common case of
17780enabling/disabling a GPE.
17781
17782Implemented support to allow a "Notify" on a Processor object.
17783
17784Most TBDs in comments within the source code have been resolved
17785and eliminated.
17786
17787
17788Fixed a problem in the interpreter where a standalone parent
17789prefix (^) was not handled correctly in the interpreter and
17790debugger.
17791
17792Removed obsolete and unnecessary GPE save/restore code.
17793
17794Implemented Field support in the ASL Load operator.  This allows a
17795table to be loaded from a named field, in addition to loading a
17796table directly from an Operation Region.
17797
17798Implemented timeout and handle support in the external Global Lock
17799interfaces.
17800
17801Fixed a problem in the AcpiDump utility where pathnames were no
17802longer being generated correctly during the dump of named objects.
17803
17804Modified the AML debugger to give a full display of if/while
17805predicates instead of just one AML opcode at a time.  (The
17806predicate can have several nested ASL statements.)  The old method
17807was confusing during single stepping.
17808
17809Code and Data Size: Current core subsystem library sizes are shown
17810below. These are the code and data sizes for the acpica.lib
17811produced by the Microsoft Visual C++ 6.0 compiler, and these
17812values do not include any ACPI driver or OSPM code.  The debug
17813version of the code includes the debug output trace mechanism and
17814has a larger code and data size.  Note that these values will vary
17815depending on the efficiency of the compiler and the compiler
17816options used during generation.
17817
17818  Previous Release (12_18_01)
17819     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
17820     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
17821   Current Release:
17822     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
17823     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
17824
178252) Linux
17826
17827 Implemented fix for PIIX reverse throttling errata (Processor
17828driver)
17829
17830Added new Limit interface (Processor and Thermal drivers)
17831
17832New thermal policy (Thermal driver)
17833
17834Many updates to /proc
17835
17836Battery "low" event support (Battery driver)
17837
17838Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
17839
17840IA32 - IA64 initialization unification, no longer experimental
17841
17842Menuconfig options redesigned
17843
178443) ASL Compiler, version X2037:
17845
17846Implemented several new output features to simplify integration of
17847AML code into  firmware: 1) Output the AML in C source code with
17848labels for each named ASL object.  The    original ASL source code
17849is interleaved as C comments. 2) Output the AML in ASM source code
17850with labels and interleaved ASL    source. 3) Output the AML in
17851raw hex table form, in either C or ASM.
17852
17853Implemented support for optional string parameters to the
17854LoadTable operator.
17855
17856Completed support for embedded escape sequences within string
17857literals.  The compiler now supports all single character escapes
17858as well as the Octal and Hex escapes.  Note: the insertion of a
17859null byte into a string literal (via the hex/octal escape) causes
17860the string to be immediately terminated.  A warning is issued.
17861
17862Fixed a problem where incorrect AML was generated for the case
17863where an ASL namepath consists of a single parent prefix (
17864
17865) with no trailing name segments.
17866
17867The compiler has been successfully generated with a 64-bit C
17868compiler.
17869
17870
17871
17872
17873----------------------------------------
17874Summary of changes for this label: 12_18_01
17875
178761) Linux
17877
17878Enhanced blacklist with reason and severity fields. Any table's
17879signature may now be used to identify a blacklisted system.
17880
17881Call _PIC control method to inform the firmware which interrupt
17882model the OS is using. Turn on any disabled link devices.
17883
17884Cleaned up busmgr /proc error handling (Andreas Dilger)
17885
17886 2) ACPI CA Core Subsystem:
17887
17888Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
17889while loop)
17890
17891Completed implementation of the ACPI 2.0 "Continue",
17892"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
17893operators.  All new ACPI 2.0 operators are now implemented in both
17894the ASL compiler and the AML interpreter.  The only remaining ACPI
178952.0 task is support for the String data type in the DerefOf
17896operator.  Fixed a problem with AcquireMutex where the status code
17897was lost if the caller had to actually wait for the mutex.
17898
17899Increased the maximum ASL Field size from 64K bits to 4G bits.
17900
17901Completed implementation of the external Global Lock interfaces --
17902AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
17903Handler parameters were added.
17904
17905Completed another pass at removing warnings and issues when
17906compiling with 64-bit compilers.  The code now compiles cleanly
17907with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
17908add and subtract (diff) macros have changed considerably.
17909
17910
17911Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1791264-bit platforms, 32-bits on all others.  This type is used
17913wherever memory allocation and/or the C sizeof() operator is used,
17914and affects the OSL memory allocation interfaces AcpiOsAllocate
17915and AcpiOsCallocate.
17916
17917Implemented sticky user breakpoints in the AML debugger.
17918
17919Code and Data Size: Current core subsystem library sizes are shown
17920below. These are the code and data sizes for the acpica.lib
17921produced by the Microsoft Visual C++ 6.0 compiler, and these
17922values do not include any ACPI driver or OSPM code.  The debug
17923version of the code includes the debug output trace mechanism and
17924has a larger code and data size. Note that these values will vary
17925depending on the efficiency of the compiler and the compiler
17926options used during generation.
17927
17928  Previous Release (12_05_01)
17929     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
17930     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
17931   Current Release:
17932     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
17933     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
17934
17935 3) ASL Compiler, version X2034:
17936
17937Now checks for (and generates an error if detected) the use of a
17938Break or Continue statement without an enclosing While statement.
17939
17940
17941Successfully generated the compiler with the Intel 64-bit C
17942compiler.
17943
17944 ----------------------------------------
17945Summary of changes for this label: 12_05_01
17946
17947 1) ACPI CA Core Subsystem:
17948
17949The ACPI 2.0 CopyObject operator is fully implemented.  This
17950operator creates a new copy of an object (and is also used to
17951bypass the "implicit conversion" mechanism of the Store operator.)
17952
17953The ACPI 2.0 semantics for the SizeOf operator are fully
17954implemented.  The change is that performing a SizeOf on a
17955reference object causes an automatic dereference of the object to
17956the actual value before the size is evaluated. This behavior was
17957undefined in ACPI 1.0.
17958
17959The ACPI 2.0 semantics for the Extended IRQ resource descriptor
17960have been implemented.  The interrupt polarity and mode are now
17961independently set.
17962
17963Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
17964appearing in Package objects were not properly converted to
17965integers when the internal Package was converted to an external
17966object (via the AcpiEvaluateObject interface.)
17967
17968Fixed a problem with the namespace object deletion mechanism for
17969objects created by control methods.  There were two parts to this
17970problem: 1) Objects created during the initialization phase method
17971parse were not being deleted, and 2) The object owner ID mechanism
17972to track objects was broken.
17973
17974Fixed a problem where the use of the ASL Scope operator within a
17975control method would result in an invalid opcode exception.
17976
17977Fixed a problem introduced in the previous label where the buffer
17978length required for the _PRT structure was not being returned
17979correctly.
17980
17981Code and Data Size: Current core subsystem library sizes are shown
17982below. These are the code and data sizes for the acpica.lib
17983produced by the Microsoft Visual C++ 6.0 compiler, and these
17984values do not include any ACPI driver or OSPM code.  The debug
17985version of the code includes the debug output trace mechanism and
17986has a larger code and data size.  Note that these values will vary
17987depending on the efficiency of the compiler and the compiler
17988options used during generation.
17989
17990  Previous Release (11_20_01)
17991     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
17992     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
17993
17994  Current Release:
17995     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
17996     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
17997
17998 2) Linux:
17999
18000Updated all files to apply cleanly against 2.4.16.
18001
18002Added basic PCI Interrupt Routing Table (PRT) support for IA32
18003(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
18004version supports both static and dynamic PRT entries, but dynamic
18005entries are treated as if they were static (not yet
18006reconfigurable).  Architecture- specific code to use this data is
18007absent on IA32 but should be available shortly.
18008
18009Changed the initialization sequence to start the ACPI interpreter
18010(acpi_init) prior to initialization of the PCI driver (pci_init)
18011in init/main.c.  This ordering is required to support PRT and
18012facilitate other (future) enhancement.  A side effect is that the
18013ACPI bus driver and certain device drivers can no longer be loaded
18014as modules.
18015
18016Modified the 'make menuconfig' options to allow PCI Interrupt
18017Routing support to be included without the ACPI Bus and other
18018device drivers.
18019
18020 3) ASL Compiler, version X2033:
18021
18022Fixed some issues with the use of the new CopyObject and
18023DataTableRegion operators.  Both are fully functional.
18024
18025 ----------------------------------------
18026Summary of changes for this label: 11_20_01
18027
18028 20 November 2001.  Summary of changes for this release.
18029
18030 1) ACPI CA Core Subsystem:
18031
18032Updated Index support to match ACPI 2.0 semantics.  Storing a
18033Integer, String, or Buffer to an Index of a Buffer will store only
18034the least-significant byte of the source to the Indexed buffer
18035byte.  Multiple writes are not performed.
18036
18037Fixed a problem where the access type used in an AccessAs ASL
18038operator was not recorded correctly into the field object.
18039
18040Fixed a problem where ASL Event objects were created in a
18041signalled state. Events are now created in an unsignalled state.
18042
18043The internal object cache is now purged after table loading and
18044initialization to reduce the use of dynamic kernel memory -- on
18045the assumption that object use is greatest during the parse phase
18046of the entire table (versus the run-time use of individual control
18047methods.)
18048
18049ACPI 2.0 variable-length packages are now fully operational.
18050
18051Code and Data Size: Code and Data optimizations have permitted new
18052feature development with an actual reduction in the library size.
18053Current core subsystem library sizes are shown below.  These are
18054the code and data sizes for the acpica.lib produced by the
18055Microsoft Visual C++ 6.0 compiler, and these values do not include
18056any ACPI driver or OSPM code.  The debug version of the code
18057includes the debug output trace mechanism and has a larger code
18058and data size.  Note that these values will vary depending on the
18059efficiency of the compiler and the compiler options used during
18060generation.
18061
18062  Previous Release (11_09_01):
18063     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
18064     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
18065
18066  Current Release:
18067     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
18068     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
18069
18070 2) Linux:
18071
18072Enhanced the ACPI boot-time initialization code to allow the use
18073of Local APIC tables for processor enumeration on IA-32, and to
18074pave the way for a fully MPS-free boot (on SMP systems) in the
18075near future.  This functionality replaces
18076arch/i386/kernel/acpitables.c, which was introduced in an earlier
180772.4.15-preX release.  To enable this feature you must add
18078"acpi_boot=on" to the kernel command line -- see the help entry
18079for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
18080the works...
18081
18082Restructured the configuration options to allow boot-time table
18083parsing support without inclusion of the ACPI Interpreter (and
18084other) code.
18085
18086NOTE: This release does not include fixes for the reported events,
18087power-down, and thermal passive cooling issues (coming soon).
18088
18089 3) ASL Compiler:
18090
18091Added additional typechecking for Fields within restricted access
18092Operation Regions.  All fields within EC and CMOS regions must be
18093declared with ByteAcc. All fields within SMBus regions must be
18094declared with the BufferAcc access type.
18095
18096Fixed a problem where the listing file output of control methods
18097no longer interleaved the actual AML code with the ASL source
18098code.
18099
18100
18101
18102
18103----------------------------------------
18104Summary of changes for this label: 11_09_01
18105
181061) ACPI CA Core Subsystem:
18107
18108Implemented ACPI 2.0-defined support for writes to fields with a
18109Buffer, String, or Integer source operand that is smaller than the
18110target field. In these cases, the source operand is zero-extended
18111to fill the target field.
18112
18113Fixed a problem where a Field starting bit offset (within the
18114parent operation region) was calculated incorrectly if the
18115
18116alignment of the field differed from the access width.  This
18117affected CreateWordField, CreateDwordField, CreateQwordField, and
18118possibly other fields that use the "AccessAny" keyword.
18119
18120Fixed a problem introduced in the 11_02_01 release where indirect
18121stores through method arguments did not operate correctly.
18122
181232) Linux:
18124
18125Implemented boot-time ACPI table parsing support
18126(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
18127facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
18128legacy BIOS interfaces (e.g. MPS) for the configuration of system
18129processors, memory, and interrupts during setup_arch().  Note that
18130this patch does not include the required architecture-specific
18131changes required to apply this information -- subsequent patches
18132will be posted for both IA32 and IA64 to achieve this.
18133
18134Added low-level sleep support for IA32 platforms, courtesy of Pat
18135Mochel. This allows IA32 systems to transition to/from various
18136sleeping states (e.g. S1, S3), although the lack of a centralized
18137driver model and power-manageable drivers will prevent its
18138(successful) use on most systems.
18139
18140Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
18141submenu, unified IA32 and IA64 options, added new "Boot using ACPI
18142tables" option, etc.
18143
18144Increased the default timeout for the EC driver from 1ms to 10ms
18145(1000 cycles of 10us) to try to address AE_TIME errors during EC
18146transactions.
18147
18148 ----------------------------------------
18149Summary of changes for this label: 11_02_01
18150
181511) ACPI CA Core Subsystem:
18152
18153ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
18154(QWordAcc keyword). All ACPI 2.0 64-bit support is now
18155implemented.
18156
18157OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
18158changes to support ACPI 2.0 Qword field access.  Read/Write
18159PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
18160accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
18161the value parameter for the address space handler interface is now
18162an ACPI_INTEGER.  OSL implementations of these interfaces must now
18163handle the case where the Width parameter is 64.
18164
18165Index Fields: Fixed a problem where unaligned bit assembly and
18166disassembly for IndexFields was not supported correctly.
18167
18168Index and Bank Fields:  Nested Index and Bank Fields are now
18169supported. During field access, a check is performed to ensure
18170that the value written to an Index or Bank register is not out of
18171the range of the register.  The Index (or Bank) register is
18172written before each access to the field data. Future support will
18173include allowing individual IndexFields to be wider than the
18174DataRegister width.
18175
18176Fields: Fixed a problem where the AML interpreter was incorrectly
18177attempting to write beyond the end of a Field/OpRegion.  This was
18178a boundary case that occurred when a DWORD field was written to a
18179BYTE access OpRegion, forcing multiple writes and causing the
18180interpreter to write one datum too many.
18181
18182Fields: Fixed a problem with Field/OpRegion access where the
18183starting bit address of a field was incorrectly calculated if the
18184current access type was wider than a byte (WordAcc, DwordAcc, or
18185QwordAcc).
18186
18187Fields: Fixed a problem where forward references to individual
18188FieldUnits (individual Field names within a Field definition) were
18189not resolved during the AML table load.
18190
18191Fields: Fixed a problem where forward references from a Field
18192definition to the parent Operation Region definition were not
18193resolved during the AML table load.
18194
18195Fields: Duplicate FieldUnit names within a scope are now detected
18196during AML table load.
18197
18198Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
18199returned an incorrect name for the root node.
18200
18201Code and Data Size: Code and Data optimizations have permitted new
18202feature development with an actual reduction in the library size.
18203Current core subsystem library sizes are shown below.  These are
18204the code and data sizes for the acpica.lib produced by the
18205Microsoft Visual C++ 6.0 compiler, and these values do not include
18206any ACPI driver or OSPM code.  The debug version of the code
18207includes the debug output trace mechanism and has a larger code
18208and data size.  Note that these values will vary depending on the
18209efficiency of the compiler and the compiler options used during
18210generation.
18211
18212  Previous Release (10_18_01):
18213     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
18214     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
18215
18216  Current Release:
18217     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
18218     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
18219
18220 2) Linux:
18221
18222Improved /proc processor output (Pavel Machek) Re-added
18223MODULE_LICENSE("GPL") to all modules.
18224
18225 3) ASL Compiler version X2030:
18226
18227Duplicate FieldUnit names within a scope are now detected and
18228flagged as errors.
18229
18230 4) Documentation:
18231
18232Programmer Reference updated to reflect OSL and address space
18233handler interface changes described above.
18234
18235----------------------------------------
18236Summary of changes for this label: 10_18_01
18237
18238ACPI CA Core Subsystem:
18239
18240Fixed a problem with the internal object reference count mechanism
18241that occasionally caused premature object deletion. This resolves
18242all of the outstanding problem reports where an object is deleted
18243in the middle of an interpreter evaluation.  Although this problem
18244only showed up in rather obscure cases, the solution to the
18245problem involved an adjustment of all reference counts involving
18246objects attached to namespace nodes.
18247
18248Fixed a problem with Field support in the interpreter where
18249writing to an aligned field whose length is an exact multiple (2
18250or greater) of the field access granularity would cause an attempt
18251to write beyond the end of the field.
18252
18253The top level AML opcode execution functions within the
18254interpreter have been renamed with a more meaningful and
18255consistent naming convention.  The modules exmonad.c and
18256exdyadic.c were eliminated.  New modules are exoparg1.c,
18257exoparg2.c, exoparg3.c, and exoparg6.c.
18258
18259Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
18260
18261Fixed a problem where the AML debugger was causing some internal
18262objects to not be deleted during subsystem termination.
18263
18264Fixed a problem with the external AcpiEvaluateObject interface
18265where the subsystem would fault if the named object to be
18266evaluated referred to a constant such as Zero, Ones, etc.
18267
18268Fixed a problem with IndexFields and BankFields where the
18269subsystem would fault if the index, data, or bank registers were
18270not defined in the same scope as the field itself.
18271
18272Added printf format string checking for compilers that support
18273this feature.  Corrected more than 50 instances of issues with
18274format specifiers within invocations of ACPI_DEBUG_PRINT
18275throughout the core subsystem code.
18276
18277The ASL "Revision" operator now returns the ACPI support level
18278implemented in the core - the value "2" since the ACPI 2.0 support
18279is more than 50% implemented.
18280
18281Enhanced the output of the AML debugger "dump namespace" command
18282to output in a more human-readable form.
18283
18284Current core subsystem library code sizes are shown below.  These
18285
18286are the code and data sizes for the acpica.lib produced by the
18287Microsoft Visual C++ 6.0 compiler, and these values do not include
18288any ACPI driver or OSPM code.  The debug version of the code
18289includes the full debug trace mechanism -- leading to a much
18290
18291larger code and data size.  Note that these values will vary
18292depending on the efficiency of the compiler and the compiler
18293options used during generation.
18294
18295     Previous Label (09_20_01):
18296     Non-Debug Version:    65K Code,     5K Data,     70K Total
18297     Debug Version:       138K Code,    58K Data,    196K Total
18298
18299     This Label:
18300
18301     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
18302     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
18303
18304Linux:
18305
18306Implemented a "Bad BIOS Blacklist" to track machines that have
18307known ASL/AML problems.
18308
18309Enhanced the /proc interface for the thermal zone driver and added
18310support for _HOT (the critical suspend trip point).  The 'info'
18311file now includes threshold/policy information, and allows setting
18312of _SCP (cooling preference) and _TZP (polling frequency) values
18313to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
18314frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
18315preference to the passive/quiet mode (if supported by the ASL).
18316
18317Implemented a workaround for a gcc bug that resuted in an OOPs
18318when loading the control method battery driver.
18319
18320 ----------------------------------------
18321Summary of changes for this label: 09_20_01
18322
18323 ACPI CA Core Subsystem:
18324
18325The AcpiEnableEvent and AcpiDisableEvent interfaces have been
18326modified to allow individual GPE levels to be flagged as wake-
18327enabled (i.e., these GPEs are to remain enabled when the platform
18328sleeps.)
18329
18330The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
18331support wake-enabled GPEs.  This means that upon entering the
18332sleep state, all GPEs that are not wake-enabled are disabled.
18333When leaving the sleep state, these GPEs are re-enabled.
18334
18335A local double-precision divide/modulo module has been added to
18336enhance portability to OS kernels where a 64-bit math library is
18337not available.  The new module is "utmath.c".
18338
18339Several optimizations have been made to reduce the use of CPU
18340stack.  Originally over 2K, the maximum stack usage is now below
183412K at 1860  bytes (1.82k)
18342
18343Fixed a problem with the AcpiGetFirmwareTable interface where the
18344root table pointer was not mapped into a logical address properly.
18345
18346Fixed a problem where a NULL pointer was being dereferenced in the
18347interpreter code for the ASL Notify operator.
18348
18349Fixed a problem where the use of the ASL Revision operator
18350returned an error. This operator now returns the current version
18351of the ACPI CA core subsystem.
18352
18353Fixed a problem where objects passed as control method parameters
18354to AcpiEvaluateObject were always deleted at method termination.
18355However, these objects may end up being stored into the namespace
18356by the called method.  The object reference count mechanism was
18357applied to these objects instead of a force delete.
18358
18359Fixed a problem where static strings or buffers (contained in the
18360AML code) that are declared as package elements within the ASL
18361code could cause a fault because the interpreter would attempt to
18362delete them.  These objects are now marked with the "static
18363object" flag to prevent any attempt to delete them.
18364
18365Implemented an interpreter optimization to use operands directly
18366from the state object instead of extracting the operands to local
18367variables.  This reduces stack use and code size, and improves
18368performance.
18369
18370The module exxface.c was eliminated as it was an unnecessary extra
18371layer of code.
18372
18373Current core subsystem library code sizes are shown below.  These
18374are the code and data sizes for the acpica.lib produced by the
18375Microsoft Visual C++ 6.0 compiler, and these values do not include
18376any ACPI driver or OSPM code.  The debug version of the code
18377includes the full debug trace mechanism -- leading to a much
18378larger code and data size.  Note that these values will vary
18379depending on the efficiency of the compiler and the compiler
18380options used during generation.
18381
18382  Non-Debug Version:  65K Code,   5K Data,   70K Total
18383(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
18384Total  (Previously 195K)
18385
18386Linux:
18387
18388Support for ACPI 2.0 64-bit integers has been added.   All ACPI
18389Integer objects are now 64 bits wide
18390
18391All Acpi data types and structures are now in lower case.  Only
18392Acpi macros are upper case for differentiation.
18393
18394 Documentation:
18395
18396Changes to the external interfaces as described above.
18397
18398 ----------------------------------------
18399Summary of changes for this label: 08_31_01
18400
18401 ACPI CA Core Subsystem:
18402
18403A bug with interpreter implementation of the ASL Divide operator
18404was found and fixed.  The implicit function return value (not the
18405explicit store operands) was returning the remainder instead of
18406the quotient.  This was a longstanding bug and it fixes several
18407known outstanding issues on various platforms.
18408
18409The ACPI_DEBUG_PRINT and function trace entry/exit macros have
18410been further optimized for size.  There are 700 invocations of the
18411DEBUG_PRINT macro alone, so each optimization reduces the size of
18412the debug version of the subsystem significantly.
18413
18414A stack trace mechanism has been implemented.  The maximum stack
18415usage is about 2K on 32-bit platforms.  The debugger command "stat
18416stack" will display the current maximum stack usage.
18417
18418All public symbols and global variables within the subsystem are
18419now prefixed with the string "Acpi".  This keeps all of the
18420symbols grouped together in a kernel map, and avoids conflicts
18421with other kernel subsystems.
18422
18423Most of the internal fixed lookup tables have been moved into the
18424code segment via the const operator.
18425
18426Several enhancements have been made to the interpreter to both
18427reduce the code size and improve performance.
18428
18429Current core subsystem library code sizes are shown below.  These
18430are the code and data sizes for the acpica.lib produced by the
18431Microsoft Visual C++ 6.0 compiler, and these values do not include
18432any ACPI driver or OSPM code.  The debug version of the code
18433includes the full debug trace mechanism which contains over 700
18434invocations of the DEBUG_PRINT macro, 500 function entry macro
18435invocations, and over 900 function exit macro invocations --
18436leading to a much larger code and data size.  Note that these
18437values will vary depending on the efficiency of the compiler and
18438the compiler options used during generation.
18439
18440        Non-Debug Version:  64K Code,   5K Data,   69K Total
18441Debug Version:     137K Code,  58K Data,  195K Total
18442
18443 Linux:
18444
18445Implemented wbinvd() macro, pending a kernel-wide definition.
18446
18447Fixed /proc/acpi/event to handle poll() and short reads.
18448
18449 ASL Compiler, version X2026:
18450
18451Fixed a problem introduced in the previous label where the AML
18452
18453code emitted for package objects produced packages with zero
18454length.
18455
18456 ----------------------------------------
18457Summary of changes for this label: 08_16_01
18458
18459ACPI CA Core Subsystem:
18460
18461The following ACPI 2.0 ASL operators have been implemented in the
18462AML interpreter (These are already supported by the Intel ASL
18463compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
18464ToBuffer.  Support for 64-bit AML constants is implemented in the
18465AML parser, debugger, and disassembler.
18466
18467The internal memory tracking mechanism (leak detection code) has
18468been upgraded to reduce the memory overhead (a separate tracking
18469block is no longer allocated for each memory allocation), and now
18470supports all of the internal object caches.
18471
18472The data structures and code for the internal object caches have
18473been coelesced and optimized so that there is a single cache and
18474memory list data structure and a single group of functions that
18475implement generic cache management.  This has reduced the code
18476size in both the debug and release versions of the subsystem.
18477
18478The DEBUG_PRINT macro(s) have been optimized for size and replaced
18479by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
18480different, because it generates a single call to an internal
18481function.  This results in a savings of about 90 bytes per
18482invocation, resulting in an overall code and data savings of about
1848316% in the debug version of the subsystem.
18484
18485 Linux:
18486
18487Fixed C3 disk corruption problems and re-enabled C3 on supporting
18488machines.
18489
18490Integrated low-level sleep code by Patrick Mochel.
18491
18492Further tweaked source code Linuxization.
18493
18494Other minor fixes.
18495
18496 ASL Compiler:
18497
18498Support for ACPI 2.0 variable length packages is fixed/completed.
18499
18500Fixed a problem where the optional length parameter for the ACPI
185012.0 ToString operator.
18502
18503Fixed multiple extraneous error messages when a syntax error is
18504detected within the declaration line of a control method.
18505
18506 ----------------------------------------
18507Summary of changes for this label: 07_17_01
18508
18509ACPI CA Core Subsystem:
18510
18511Added a new interface named AcpiGetFirmwareTable to obtain any
18512ACPI table via the ACPI signature.  The interface can be called at
18513any time during kernel initialization, even before the kernel
18514virtual memory manager is initialized and paging is enabled.  This
18515allows kernel subsystems to obtain ACPI tables very early, even
18516before the ACPI CA subsystem is initialized.
18517
18518Fixed a problem where Fields defined with the AnyAcc attribute
18519could be resolved to the incorrect address under the following
18520conditions: 1) the field width is larger than 8 bits and 2) the
18521parent operation region is not defined on a DWORD boundary.
18522
18523Fixed a problem where the interpreter is not being locked during
18524namespace initialization (during execution of the _INI control
18525methods), causing an error when an attempt is made to release it
18526later.
18527
18528ACPI 2.0 support in the AML Interpreter has begun and will be
18529ongoing throughout the rest of this year.  In this label, The Mod
18530operator is implemented.
18531
18532Added a new data type to contain full PCI addresses named
18533ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
18534and Function values.
18535
18536 Linux:
18537
18538Enhanced the Linux version of the source code to change most
18539capitalized ACPI type names to lowercase. For example, all
18540instances of ACPI_STATUS are changed to acpi_status.  This will
18541result in a large diff, but the change is strictly cosmetic and
18542aligns the CA code closer to the Linux coding standard.
18543
18544OSL Interfaces:
18545
18546The interfaces to the PCI configuration space have been changed to
18547add the PCI Segment number and to split the single 32-bit combined
18548DeviceFunction field into two 16-bit fields.  This was
18549accomplished by moving the four values that define an address in
18550PCI configuration space (segment, bus, device, and function) to
18551the new ACPI_PCI_ID structure.
18552
18553The changes to the PCI configuration space interfaces led to a
18554reexamination of the complete set of address space access
18555interfaces for PCI, I/O, and Memory.  The previously existing 18
18556interfaces have proven difficult to maintain (any small change
18557must be propagated across at least 6 interfaces) and do not easily
18558allow for future expansion to 64 bits if necessary.  Also, on some
18559systems, it would not be appropriate to demultiplex the access
18560width (8, 16, 32,or 64) before calling the OSL if the
18561corresponding native OS interfaces contain a similar access width
18562parameter.  For these reasons, the 18 address space interfaces
18563have been replaced by these 6 new ones:
18564
18565AcpiOsReadPciConfiguration
18566AcpiOsWritePciConfiguration
18567AcpiOsReadMemory
18568AcpiOsWriteMemory
18569AcpiOsReadPort
18570AcpiOsWritePort
18571
18572Added a new interface named AcpiOsGetRootPointer to allow the OSL
18573to perform the platform and/or OS-specific actions necessary to
18574obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
18575interface will simply call down to the CA core to perform the low-
18576memory search for the table.  On IA-64, the RSDP is obtained from
18577EFI.  Migrating this interface to the OSL allows the CA core to
18578
18579remain OS and platform independent.
18580
18581Added a new interface named AcpiOsSignal to provide a generic
18582"function code and pointer" interface for various miscellaneous
18583signals and notifications that must be made to the host OS.   The
18584first such signals are intended to support the ASL Fatal and
18585Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
18586interface has been obsoleted.
18587
18588The definition of the AcpiFormatException interface has been
18589changed to simplify its use.  The caller no longer must supply a
18590buffer to the call; A pointer to a const string is now returned
18591directly.  This allows the call to be easily used in printf
18592statements, etc. since the caller does not have to manage a local
18593buffer.
18594
18595
18596 ASL Compiler, Version X2025:
18597
18598The ACPI 2.0 Switch/Case/Default operators have been implemented
18599and are fully functional.  They will work with all ACPI 1.0
18600interpreters, since the operators are simply translated to If/Else
18601pairs.
18602
18603The ACPI 2.0 ElseIf operator is implemented and will also work
18604with 1.0 interpreters, for the same reason.
18605
18606Implemented support for ACPI 2.0 variable-length packages.  These
18607packages have a separate opcode, and their size is determined by
18608the interpreter at run-time.
18609
18610Documentation The ACPI CA Programmer Reference has been updated to
18611reflect the new interfaces and changes to existing interfaces.
18612
18613 ------------------------------------------
18614Summary of changes for this label: 06_15_01
18615
18616 ACPI CA Core Subsystem:
18617
18618Fixed a problem where a DWORD-accessed field within a Buffer
18619object would get its byte address inadvertently rounded down to
18620the nearest DWORD.  Buffers are always Byte-accessible.
18621
18622 ASL Compiler, version X2024:
18623
18624Fixed a problem where the Switch() operator would either fault or
18625hang the compiler.  Note however, that the AML code for this ACPI
186262.0 operator is not yet implemented.
18627
18628Compiler uses the new AcpiOsGetTimer interface to obtain compile
18629timings.
18630
18631Implementation of the CreateField operator automatically converts
18632a reference to a named field within a resource descriptor from a
18633byte offset to a bit offset if required.
18634
18635Added some missing named fields from the resource descriptor
18636support. These are the names that are automatically created by the
18637compiler to reference fields within a descriptor.  They are only
18638valid at compile time and are not passed through to the AML
18639interpreter.
18640
18641Resource descriptor named fields are now typed as Integers and
18642subject to compile-time typechecking when used in expressions.
18643
18644 ------------------------------------------
18645Summary of changes for this label: 05_18_01
18646
18647 ACPI CA Core Subsystem:
18648
18649Fixed a couple of problems in the Field support code where bits
18650from adjacent fields could be returned along with the proper field
18651bits. Restructured the field support code to improve performance,
18652readability and maintainability.
18653
18654New DEBUG_PRINTP macro automatically inserts the procedure name
18655into the output, saving hundreds of copies of procedure name
18656strings within the source, shrinking the memory footprint of the
18657debug version of the core subsystem.
18658
18659 Source Code Structure:
18660
18661The source code directory tree was restructured to reflect the
18662current organization of the component architecture.  Some files
18663and directories have been moved and/or renamed.
18664
18665 Linux:
18666
18667Fixed leaking kacpidpc processes.
18668
18669Fixed queueing event data even when /proc/acpi/event is not
18670opened.
18671
18672 ASL Compiler, version X2020:
18673
18674Memory allocation performance enhancement - over 24X compile time
18675improvement on large ASL files.  Parse nodes and namestring
18676buffers are now allocated from a large internal compiler buffer.
18677
18678The temporary .SRC file is deleted unless the "-s" option is
18679specified
18680
18681The "-d" debug output option now sends all output to the .DBG file
18682instead of the console.
18683
18684"External" second parameter is now optional
18685
18686"ElseIf" syntax now properly allows the predicate
18687
18688Last operand to "Load" now recognized as a Target operand
18689
18690Debug object can now be used anywhere as a normal object.
18691
18692ResourceTemplate now returns an object of type BUFFER
18693
18694EISAID now returns an object of type INTEGER
18695
18696"Index" now works with a STRING operand
18697
18698"LoadTable" now accepts optional parameters
18699
18700"ToString" length parameter is now optional
18701
18702"Interrupt (ResourceType," parse error fixed.
18703
18704"Register" with a user-defined region space parse error fixed
18705
18706Escaped backslash at the end of a string ("\\") scan/parse error
18707fixed
18708
18709"Revision" is now an object of type INTEGER.
18710
18711
18712
18713------------------------------------------
18714Summary of changes for this label: 05_02_01
18715
18716Linux:
18717
18718/proc/acpi/event now blocks properly.
18719
18720Removed /proc/sys/acpi. You can still dump your DSDT from
18721/proc/acpi/dsdt.
18722
18723 ACPI CA Core Subsystem:
18724
18725Fixed a problem introduced in the previous label where some of the
18726"small" resource descriptor types were not recognized.
18727
18728Improved error messages for the case where an ASL Field is outside
18729the range of the parent operation region.
18730
18731 ASL Compiler, version X2018:
18732
18733
18734Added error detection for ASL Fields that extend beyond the length
18735of the parent operation region (only if the length of the region
18736is known at compile time.)  This includes fields that have a
18737minimum access width that is smaller than the parent region, and
18738individual field units that are partially or entirely beyond the
18739extent of the parent.
18740
18741
18742
18743------------------------------------------
18744Summary of changes for this label: 04_27_01
18745
18746 ACPI CA Core Subsystem:
18747
18748Fixed a problem where the namespace mutex could be released at the
18749wrong time during execution of AcpiRemoveAddressSpaceHandler.
18750
18751Added optional thread ID output for debug traces, to simplify
18752debugging of multiple threads.  Added context switch notification
18753when the debug code realizes that a different thread is now
18754executing ACPI code.
18755
18756Some additional external data types have been prefixed with the
18757string "ACPI_" for consistency.  This may effect existing code.
18758The data types affected are the external callback typedefs - e.g.,
18759
18760WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
18761
18762 Linux:
18763
18764Fixed an issue with the OSL semaphore implementation where a
18765thread was waking up with an error from receiving a SIGCHLD
18766signal.
18767
18768Linux version of ACPI CA now uses the system C library for string
18769manipulation routines instead of a local implementation.
18770
18771Cleaned up comments and removed TBDs.
18772
18773 ASL Compiler, version X2017:
18774
18775Enhanced error detection and reporting for all file I/O
18776operations.
18777
18778 Documentation:
18779
18780Programmer Reference updated to version 1.06.
18781
18782
18783
18784------------------------------------------
18785Summary of changes for this label: 04_13_01
18786
18787 ACPI CA Core Subsystem:
18788
18789Restructured support for BufferFields and RegionFields.
18790BankFields support is now fully operational.  All known 32-bit
18791limitations on field sizes have been removed.  Both BufferFields
18792and (Operation) RegionFields are now supported by the same field
18793management code.
18794
18795Resource support now supports QWORD address and IO resources. The
1879616/32/64 bit address structures and the Extended IRQ structure
18797have been changed to properly handle Source Resource strings.
18798
18799A ThreadId of -1 is now used to indicate a "mutex not acquired"
18800condition internally and must never be returned by AcpiOsThreadId.
18801This reserved value was changed from 0 since Unix systems allow a
18802thread ID of 0.
18803
18804Linux:
18805
18806Driver code reorganized to enhance portability
18807
18808Added a kernel configuration option to control ACPI_DEBUG
18809
18810Fixed the EC driver to honor _GLK.
18811
18812ASL Compiler, version X2016:
18813
18814Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
18815address space was set to 0, not 0x7f as it should be.
18816
18817 ------------------------------------------
18818Summary of changes for this label: 03_13_01
18819
18820 ACPI CA Core Subsystem:
18821
18822During ACPI initialization, the _SB_._INI method is now run if
18823present.
18824
18825Notify handler fix - notifies are deferred until the parent method
18826completes execution.  This fixes the "mutex already acquired"
18827issue seen occasionally.
18828
18829Part of the "implicit conversion" rules in ACPI 2.0 have been
18830found to cause compatibility problems with existing ASL/AML.  The
18831convert "result-to-target-type" implementation has been removed
18832for stores to method Args and Locals.  Source operand conversion
18833is still fully implemented.  Possible changes to ACPI 2.0
18834specification pending.
18835
18836Fix to AcpiRsCalculatePciRoutingTableLength to return correct
18837length.
18838
18839Fix for compiler warnings for 64-bit compiles.
18840
18841 Linux:
18842
18843/proc output aligned for easier parsing.
18844
18845Release-version compile problem fixed.
18846
18847New kernel configuration options documented in Configure.help.
18848
18849IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
18850context" message.
18851
18852 OSPM:
18853
18854Power resource driver integrated with bus manager.
18855
18856Fixed kernel fault during active cooling for thermal zones.
18857
18858Source Code:
18859
18860The source code tree has been restructured.
18861
18862
18863
18864------------------------------------------
18865Summary of changes for this label: 03_02_01
18866
18867 Linux OS Services Layer (OSL):
18868
18869Major revision of all Linux-specific code.
18870
18871Modularized all ACPI-specific drivers.
18872
18873Added new thermal zone and power resource drivers.
18874
18875Revamped /proc interface (new functionality is under /proc/acpi).
18876
18877New kernel configuration options.
18878
18879 Linux known issues:
18880
18881New kernel configuration options not documented in Configure.help
18882yet.
18883
18884
18885Module dependencies not currently implemented. If used, they
18886should be loaded in this order: busmgr, power, ec, system,
18887processor, battery, ac_adapter, button, thermal.
18888
18889Modules will not load if CONFIG_MODVERSION is set.
18890
18891IBM 600E - entering S5 may reboot instead of shutting down.
18892
18893IBM 600E - Sleep button may generate "Invalid <NULL> context"
18894message.
18895
18896Some systems may fail with "execution mutex already acquired"
18897message.
18898
18899 ACPI CA Core Subsystem:
18900
18901Added a new OSL Interface, AcpiOsGetThreadId.  This was required
18902for the  deadlock detection code. Defined to return a non-zero, 32-
18903bit thread ID for the currently executing thread.  May be a non-
18904zero constant integer on single-thread systems.
18905
18906Implemented deadlock detection for internal subsystem mutexes.  We
18907may add conditional compilation for this code (debug only) later.
18908
18909ASL/AML Mutex object semantics are now fully supported.  This
18910includes multiple acquires/releases by owner and support for the
18911
18912Mutex SyncLevel parameter.
18913
18914A new "Force Release" mechanism automatically frees all ASL
18915Mutexes that have been acquired but not released when a thread
18916exits the interpreter.  This forces conformance to the ACPI spec
18917("All mutexes must be released when an invocation exits") and
18918prevents deadlocked ASL threads.  This mechanism can be expanded
18919(later) to monitor other resource acquisitions if OEM ASL code
18920continues to misbehave (which it will).
18921
18922Several new ACPI exception codes have been added for the Mutex
18923support.
18924
18925Recursive method calls are now allowed and supported (the ACPI
18926spec does in fact allow recursive method calls.)  The number of
18927recursive calls is subject to the restrictions imposed by the
18928SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
18929parameter.
18930
18931Implemented support for the SyncLevel parameter for control
18932methods (ACPI 2.0 feature)
18933
18934Fixed a deadlock problem when multiple threads attempted to use
18935the interpreter.
18936
18937Fixed a problem where the string length of a String package
18938element was not always set in a package returned from
18939AcpiEvaluateObject.
18940
18941Fixed a problem where the length of a String package element was
18942not always included in the length of the overall package returned
18943from AcpiEvaluateObject.
18944
18945Added external interfaces (Acpi*) to the ACPI debug memory
18946manager.  This manager keeps a list of all outstanding
18947allocations, and can therefore detect memory leaks and attempts to
18948free memory blocks more than once. Useful for code such as the
18949power manager, etc.  May not be appropriate for device drivers.
18950Performance with the debug code enabled is slow.
18951
18952The ACPI Global Lock is now an optional hardware element.
18953
18954 ASL Compiler Version X2015:
18955
18956Integrated changes to allow the compiler to be generated on
18957multiple platforms.
18958
18959Linux makefile added to generate the compiler on Linux
18960
18961 Source Code:
18962
18963All platform-specific headers have been moved to their own
18964subdirectory, Include/Platform.
18965
18966New source file added, Interpreter/ammutex.c
18967
18968New header file, Include/acstruct.h
18969
18970 Documentation:
18971
18972The programmer reference has been updated for the following new
18973interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
18974
18975 ------------------------------------------
18976Summary of changes for this label: 02_08_01
18977
18978Core ACPI CA Subsystem: Fixed a problem where an error was
18979incorrectly returned if the return resource buffer was larger than
18980the actual data (in the resource interfaces).
18981
18982References to named objects within packages are resolved to the
18983
18984full pathname string before packages are returned directly (via
18985the AcpiEvaluateObject interface) or indirectly via the resource
18986interfaces.
18987
18988Linux OS Services Layer (OSL):
18989
18990Improved /proc battery interface.
18991
18992
18993Added C-state debugging output and other miscellaneous fixes.
18994
18995ASL Compiler Version X2014:
18996
18997All defined method arguments can now be used as local variables,
18998including the ones that are not actually passed in as parameters.
18999The compiler tracks initialization of the arguments and issues an
19000exception if they are used without prior assignment (just like
19001locals).
19002
19003The -o option now specifies a filename prefix that is used for all
19004output files, including the AML output file.  Otherwise, the
19005default behavior is as follows:  1) the AML goes to the file
19006specified in the DSDT.  2) all other output files use the input
19007source filename as the base.
19008
19009 ------------------------------------------
19010Summary of changes for this label: 01_25_01
19011
19012Core ACPI CA Subsystem: Restructured the implementation of object
19013store support within the  interpreter.  This includes support for
19014the Store operator as well  as any ASL operators that include a
19015target operand.
19016
19017Partially implemented support for Implicit Result-to-Target
19018conversion. This is when a result object is converted on the fly
19019to the type of  an existing target object.  Completion of this
19020support is pending  further analysis of the ACPI specification
19021concerning this matter.
19022
19023CPU-specific code has been removed from the subsystem (hardware
19024directory).
19025
19026New Power Management Timer functions added
19027
19028Linux OS Services Layer (OSL): Moved system state transition code
19029to the core, fixed it, and modified  Linux OSL accordingly.
19030
19031Fixed C2 and C3 latency calculations.
19032
19033
19034We no longer use the compilation date for the version message on
19035initialization, but retrieve the version from AcpiGetSystemInfo().
19036
19037Incorporated for fix Sony VAIO machines.
19038
19039Documentation:  The Programmer Reference has been updated and
19040reformatted.
19041
19042
19043ASL Compiler:  Version X2013: Fixed a problem where the line
19044numbering and error reporting could get out  of sync in the
19045presence of multiple include files.
19046
19047 ------------------------------------------
19048Summary of changes for this label: 01_15_01
19049
19050Core ACPI CA Subsystem:
19051
19052Implemented support for type conversions in the execution of the
19053ASL  Concatenate operator (The second operand is converted to
19054match the type  of the first operand before concatenation.)
19055
19056Support for implicit source operand conversion is partially
19057implemented.   The ASL source operand types Integer, Buffer, and
19058String are freely  interchangeable for most ASL operators and are
19059converted by the interpreter  on the fly as required.  Implicit
19060Target operand conversion (where the  result is converted to the
19061target type before storing) is not yet implemented.
19062
19063Support for 32-bit and 64-bit BCD integers is implemented.
19064
19065Problem fixed where a field read on an aligned field could cause a
19066read  past the end of the field.
19067
19068New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
19069does not return a value, but the caller expects one.  (The ASL
19070compiler flags this as a warning.)
19071
19072ASL Compiler:
19073
19074Version X2011:
190751. Static typechecking of all operands is implemented. This
19076prevents the use of invalid objects (such as using a Package where
19077an Integer is required) at compile time instead of at interpreter
19078run-time.
190792. The ASL source line is printed with ALL errors and warnings.
190803. Bug fix for source EOF without final linefeed.
190814. Debug option is split into a parse trace and a namespace trace.
190825. Namespace output option (-n) includes initial values for
19083integers and strings.
190846. Parse-only option added for quick syntax checking.
190857. Compiler checks for duplicate ACPI name declarations
19086
19087Version X2012:
190881. Relaxed typechecking to allow interchangeability between
19089strings, integers, and buffers.  These types are now converted by
19090the interpreter at runtime.
190912. Compiler reports time taken by each internal subsystem in the
19092debug         output file.
19093
19094
19095 ------------------------------------------
19096Summary of changes for this label: 12_14_00
19097
19098ASL Compiler:
19099
19100This is the first official release of the compiler. Since the
19101compiler requires elements of the Core Subsystem, this label
19102synchronizes everything.
19103
19104------------------------------------------
19105Summary of changes for this label: 12_08_00
19106
19107
19108Fixed a problem where named references within the ASL definition
19109of both OperationRegions and CreateXXXFields did not work
19110properly.  The symptom was an AE_AML_OPERAND_TYPE during
19111initialization of the region/field. This is similar (but not
19112related internally) to the problem that was fixed in the last
19113label.
19114
19115Implemented both 32-bit and 64-bit support for the BCD ASL
19116functions ToBCD and FromBCD.
19117
19118Updated all legal headers to include "2000" in the copyright
19119years.
19120
19121 ------------------------------------------
19122Summary of changes for this label: 12_01_00
19123
19124Fixed a problem where method invocations within the ASL definition
19125of both OperationRegions and CreateXXXFields did not work
19126properly.  The symptom was an AE_AML_OPERAND_TYPE during
19127initialization of the region/field:
19128
19129  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
19130[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
19131(0x3005)
19132
19133Fixed a problem where operators with more than one nested
19134subexpression would fail.  The symptoms were varied, by mostly
19135AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
19136problem that has gone unnoticed until now.
19137
19138  Subtract (Add (1,2), Multiply (3,4))
19139
19140Fixed a problem where AcpiGetHandle didn't quite get fixed in the
19141previous build (The prefix part of a relative path was handled
19142incorrectly).
19143
19144Fixed a problem where Operation Region initialization failed if
19145the operation region name was a "namepath" instead of a simple
19146"nameseg". Symptom was an AE_NO_OPERAND error.
19147
19148Fixed a problem where an assignment to a local variable via the
19149indirect RefOf mechanism only worked for the first such
19150assignment.  Subsequent assignments were ignored.
19151
19152 ------------------------------------------
19153Summary of changes for this label: 11_15_00
19154
19155ACPI 2.0 table support with backwards support for ACPI 1.0 and the
191560.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
19157the AML  interpreter does NOT have support for the new 2.0 ASL
19158grammar terms at this time.
19159
19160All ACPI hardware access is via the GAS structures in the ACPI 2.0
19161FADT.
19162
19163All physical memory addresses across all platforms are now 64 bits
19164wide. Logical address width remains dependent on the platform
19165(i.e., "void *").
19166
19167AcpiOsMapMemory interface changed to a 64-bit physical address.
19168
19169The AML interpreter integer size is now 64 bits, as per the ACPI
191702.0 specification.
19171
19172For backwards compatibility with ACPI 1.0, ACPI tables with a
19173revision number less than 2 use 32-bit integers only.
19174
19175Fixed a problem where the evaluation of OpRegion operands did not
19176always resolve them to numbers properly.
19177
19178------------------------------------------
19179Summary of changes for this label: 10_20_00
19180
19181Fix for CBN_._STA issue.  This fix will allow correct access to
19182CBN_ OpRegions when the _STA returns 0x8.
19183
19184Support to convert ACPI constants (Ones, Zeros, One) to actual
19185values before a package object is returned
19186
19187Fix for method call as predicate to if/while construct causing
19188incorrect if/while behavior
19189
19190Fix for Else block package lengths sometimes calculated wrong (if
19191block > 63 bytes)
19192
19193Fix for Processor object length field, was always zero
19194
19195Table load abort if FACP sanity check fails
19196
19197Fix for problem with Scope(name) if name already exists
19198
19199Warning emitted if a named object referenced cannot be found
19200(resolved) during method execution.
19201
19202
19203
19204
19205
19206------------------------------------------
19207Summary of changes for this label: 9_29_00
19208
19209New table initialization interfaces: AcpiInitializeSubsystem no
19210longer has any parameters AcpiFindRootPointer - Find the RSDP (if
19211necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
19212>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
19213AcpiLoadTables
19214
19215Note: These interface changes require changes to all existing OSDs
19216
19217The PCI_Config default address space handler is always installed
19218at the root namespace object.
19219
19220-------------------------------------------
19221Summary of changes for this label: 09_15_00
19222
19223The new initialization architecture is implemented.  New
19224interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
19225AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
19226
19227(Namespace is automatically loaded when a table is loaded)
19228
19229The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1923052 bytes to 32 bytes.  There is usually one of these for every
19231namespace object, so the memory savings is significant.
19232
19233Implemented just-in-time evaluation of the CreateField operators.
19234
19235Bug fixes for IA-64 support have been integrated.
19236
19237Additional code review comments have been implemented
19238
19239The so-called "third pass parse" has been replaced by a final walk
19240through the namespace to initialize all operation regions (address
19241spaces) and fields that have not yet been initialized during the
19242execution of the various _INI and REG methods.
19243
19244New file - namespace/nsinit.c
19245
19246-------------------------------------------
19247Summary of changes for this label: 09_01_00
19248
19249Namespace manager data structures have been reworked to change the
19250primary  object from a table to a single object.  This has
19251resulted in dynamic memory  savings of 3X within the namespace and
192522X overall in the ACPI CA subsystem.
19253
19254Fixed problem where the call to AcpiEvFindPciRootBuses was
19255inadvertently left  commented out.
19256
19257Reduced the warning count when generating the source with the GCC
19258compiler.
19259
19260Revision numbers added to each module header showing the
19261SourceSafe version of the file.  Please refer to this version
19262number when giving us feedback or comments on individual modules.
19263
19264The main object types within the subsystem have been renamed to
19265clarify their  purpose:
19266
19267ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
19268ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
19269ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
19270
19271NOTE: no changes to the initialization sequence are included in
19272this label.
19273
19274-------------------------------------------
19275Summary of changes for this label: 08_23_00
19276
19277Fixed problem where TerminateControlMethod was being called
19278multiple times per  method
19279
19280Fixed debugger problem where single stepping caused a semaphore to
19281be  oversignalled
19282
19283Improved performance through additional parse object caching -
19284added  ACPI_EXTENDED_OP type
19285
19286-------------------------------------------
19287Summary of changes for this label: 08_10_00
19288
19289Parser/Interpreter integration:  Eliminated the creation of
19290complete parse trees  for ACPI tables and control methods.
19291Instead, parse subtrees are created and  then deleted as soon as
19292they are processed (Either entered into the namespace or  executed
19293by the interpreter).  This reduces the use of dynamic kernel
19294memory  significantly. (about 10X)
19295
19296Exception codes broken into classes and renumbered.  Be sure to
19297recompile all  code that includes acexcep.h.  Hopefully we won't
19298have to renumber the codes  again now that they are split into
19299classes (environment, programmer, AML code,  ACPI table, and
19300internal).
19301
19302Fixed some additional alignment issues in the Resource Manager
19303subcomponent
19304
19305Implemented semaphore tracking in the AcpiExec utility, and fixed
19306several places  where mutexes/semaphores were being unlocked
19307without a corresponding lock  operation.  There are no known
19308semaphore or mutex "leaks" at this time.
19309
19310Fixed the case where an ASL Return operator is used to return an
19311unnamed  package.
19312
19313-------------------------------------------
19314Summary of changes for this label: 07_28_00
19315
19316Fixed a problem with the way addresses were calculated in
19317AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
19318manifested itself when a Field was  created with WordAccess or
19319DwordAccess, but the field unit defined within the  Field was less
19320
19321than a Word or Dword.
19322
19323Fixed a problem in AmlDumpOperands() module's loop to pull
19324operands off of the  operand stack to display information. The
19325problem manifested itself as a TLB  error on 64-bit systems when
19326accessing an operand stack with two or more  operands.
19327
19328Fixed a problem with the PCI configuration space handlers where
19329context was  getting confused between accesses. This required a
19330change to the generic address  space handler and address space
19331setup definitions. Handlers now get both a  global handler context
19332(this is the one passed in by the user when executing
19333AcpiInstallAddressSpaceHandler() and a specific region context
19334that is unique to  each region (For example, the _ADR, _SEG and
19335_BBN values associated with a  specific region). The generic
19336function definitions have changed to the  following:
19337
19338typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
19339UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
19340*HandlerContext, // This used to be void *Context void
19341*RegionContext); // This is an additional parameter
19342
19343typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
19344RegionHandle, UINT32 Function, void *HandlerContext,  void
19345**RegionContext); // This used to be **ReturnContext
19346
19347-------------------------------------------
19348Summary of changes for this label: 07_21_00
19349
19350Major file consolidation and rename.  All files within the
19351interpreter have been  renamed as well as most header files.  This
19352was done to prevent collisions with  existing files in the host
19353OSs -- filenames such as "config.h" and "global.h"  seem to be
19354quite common.  The VC project files have been updated.  All
19355makefiles  will require modification.
19356
19357The parser/interpreter integration continues in Phase 5 with the
19358implementation  of a complete 2-pass parse (the AML is parsed
19359twice) for each table;  This  avoids the construction of a huge
19360parse tree and therefore reduces the amount of  dynamic memory
19361required by the subsystem.  Greater use of the parse object cache
19362means that performance is unaffected.
19363
19364Many comments from the two code reviews have been rolled in.
19365
19366The 64-bit alignment support is complete.
19367
19368-------------------------------------------
19369Summary of changes for this label: 06_30_00
19370
19371With a nod and a tip of the hat to the technology of yesteryear,
19372we've added  support in the source code for 80 column output
19373devices.  The code is now mostly  constrained to 80 columns or
19374less to support environments and editors that 1)  cannot display
19375or print more than 80 characters on a single line, and 2) cannot
19376disable line wrapping.
19377
19378A major restructuring of the namespace data structure has been
19379completed.  The  result is 1) cleaner and more
19380understandable/maintainable code, and 2) a  significant reduction
19381in the dynamic memory requirement for each named ACPI  object
19382(almost half).
19383
19384-------------------------------------------
19385Summary of changes for this label: 06_23_00
19386
19387Linux support has been added.  In order to obtain approval to get
19388the ACPI CA  subsystem into the Linux kernel, we've had to make
19389quite a few changes to the  base subsystem that will affect all
19390users (all the changes are generic and OS- independent).  The
19391effects of these global changes have been somewhat far  reaching.
19392Files have been merged and/or renamed and interfaces have been
19393renamed.   The major changes are described below.
19394
19395Osd* interfaces renamed to AcpiOs* to eliminate namespace
19396pollution/confusion  within our target kernels.  All OSD
19397interfaces must be modified to match the new  naming convention.
19398
19399Files merged across the subsystem.  A number of the smaller source
19400and header  files have been merged to reduce the file count and
19401increase the density of the  existing files.  There are too many
19402to list here.  In general, makefiles that  call out individual
19403files will require rebuilding.
19404
19405Interpreter files renamed.  All interpreter files now have the
19406prefix am*  instead of ie* and is*.
19407
19408Header files renamed:  The acapi.h file is now acpixf.h.  The
19409acpiosd.h file is  now acpiosxf.h.  We are removing references to
19410the acronym "API" since it is  somewhat windowsy. The new name is
19411"external interface" or xface or xf in the  filenames.j
19412
19413
19414All manifest constants have been forced to upper case (some were
19415mixed case.)   Also, the string "ACPI_" has been prepended to many
19416(not all) of the constants,  typedefs, and structs.
19417
19418The globals "DebugLevel" and "DebugLayer" have been renamed
19419"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
19420
19421All other globals within the subsystem are now prefixed with
19422"AcpiGbl_" Internal procedures within the subsystem are now
19423prefixed with "Acpi" (with only  a few exceptions).  The original
19424two-letter abbreviation for the subcomponent  remains after "Acpi"
19425- for example, CmCallocate became AcpiCmCallocate.
19426
19427Added a source code translation/conversion utility.  Used to
19428generate the Linux  source code, it can be modified to generate
19429other types of source as well. Can  also be used to cleanup
19430existing source by removing extraneous spaces and blank  lines.
19431Found in tools/acpisrc/*
19432
19433OsdUnMapMemory was renamed to OsdUnmapMemory and then
19434AcpiOsUnmapMemory.  (UnMap  became Unmap).
19435
19436A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
19437When set to  one, this indicates that the caller wants to use the
19438
19439semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
19440both types.  However, implementers of this  call may want to use
19441different OS primitives depending on the type of semaphore
19442requested.  For example, some operating systems provide separate
19443
19444"mutex" and  "semaphore" interfaces - where the mutex interface is
19445much faster because it  doesn't have all the overhead of a full
19446semaphore implementation.
19447
19448Fixed a deadlock problem where a method that accesses the PCI
19449address space can  block forever if it is the first access to the
19450space.
19451
19452-------------------------------------------
19453Summary of changes for this label: 06_02_00
19454
19455Support for environments that cannot handle unaligned data
19456accesses (e.g.  firmware and OS environments devoid of alignment
19457handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
19458been added (via configurable macros) in  these three areas: -
19459Transfer of data from the raw AML byte stream is done via byte
19460moves instead of    word/dword/qword moves. - External objects are
19461aligned within the user buffer, including package   elements (sub-
19462objects). - Conversion of name strings to UINT32 Acpi Names is now
19463done byte-wise.
19464
19465The Store operator was modified to mimic Microsoft's
19466implementation when storing  to a Buffer Field.
19467
19468Added a check of the BM_STS bit before entering C3.
19469
19470The methods subdirectory has been obsoleted and removed.  A new
19471file, cmeval.c  subsumes the functionality.
19472
19473A 16-bit (DOS) version of AcpiExec has been developed.  The
19474makefile is under  the acpiexec directory.
19475