xref: /dragonfly/sys/contrib/dev/acpica/changes.txt (revision a31d3627)
1----------------------------------------
2
3
425 September 2020. Summary of changes for version 20200925:
5
6This release is available at https://acpica.org/downloads
7
8
91) ACPICA kernel-resident subsystem:
10
11Preserve memory opregion mappings. The ACPICA's strategy with respect to
12the handling of memory mappings associated with memory operation regions
13is to avoid mapping the entire region at once which may be problematic at
14least in principle (for example, it may lead to conflicts with
15overlapping mappings having different attributes created by drivers).  It
16may also be wasteful, because memory opregions on some systems take up
17vastchunks of address space while the fields in those regions actually
18accessed by AML are sparsely distributed.
19
20For this reason, a one-page "window" is mapped for a given opregion on
21the first memory access through it and if that "window" does not cover an
22address range accessed through that opregion subsequently, it is unmapped
23and a new "window" is mapped to replace it.  Next, if the new "window" is
24not sufficient to access memory through the opregion in question in the
25future, it will be replaced with yet another "window" and so on.  That
26may lead to a suboptimal sequence of memory mapping and unmapping
27operations, for example if two fields in one opregion separated from each
28other by a sufficiently wide chunk of unused address space are accessed
29in an alternating pattern.
30
31Added support for 64 bit risc-v compilation.  Useful for acpica tools and
32incorporating ACPICA into the Firmware Test Suite. Colin Ian King
33<colin.king@canonical.com>.
34
35Added support for SMBus predefined names (from SMBus Control Method
36Interface Specification, Version 1.0, December 10, 1999. New predefined
37names:
38    _SBA
39    _SBI
40    _SBR
41    _SBT
42    _SBW
43
44AML Disassembler: Added a new command, "All <NameSeg". This command will
45evaluate all objects in the current namespace whose NameString contains
46the input NameSeg as the last element of the NameString. Useful for
47debugging.
48
49
502) iASL Compiler/Disassembler and ACPICA tools:
51
52iASL: fixed a crash that occurred when predefined objects return packages
53with lengths that exceed the initializer list.
54
55iASL: added more detail to external resolution error message when
56compiling multiple definition blocks.
57
58iASL: improve alias analysis by saving object type. If the alias is a
59method type, the parameter count is also recorded.
60
61AcpiExec: Increase the default loop timeout value. Was 1 second, is now
6210 seconds. Prevents unnecessary timeouts when executing control methods
63from the command line.
64
65AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal
66list. Includes:
67    Memory Device
68    Generic Buttons Device
69    NVDIMM Root Device
70    Control Method Battery
71    Device Graphs for _DSD method
72    Hierarchical Data Extension
73....ARM CoreSight Graph
74
75----------------------------------------
76
77
7817 July 2020. Summary of changes for version 20200717:
79
80This release is available at https://acpica.org/downloads
81
82
831) ACPICA kernel-resident subsystem:
84
85Do not increment OperationRegion reference counts for field units. Recent
86server firmware has revealed that this reference count can overflow on
87large servers that declare many field units (thousands) under the same
88OperationRegion. This occurs because each field unit declaration will add
89a reference count to the source OperationRegion. This release solves the
90reference count overflow for OperationRegion objects by preventing
91fieldUnits from incrementing their parent OperationRegion's reference
92count.
93
94Replaced one-element arrays with flexible-arrays, which were introduced
95in C99.
96
97Restored the readme file containing the directions for generation of
98ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is
99located at: generate/msvc2017/readme.txt
100
1012) iASL Compiler/Disassembler and ACPICA tools:
102
103iASL: Fixed a regression found in version 20200214. Prevent iASL from
104emitting an extra byte of garbage data when control methods declared a
105single parameter type without using braces. This extra byte is known to
106cause a blue screen on the Windows AML interpreter.
107
108iASL: Made a change to allow external declarations to specify the type of
109a named object even when some name segments are not defined.
110This change allows the following ASL code to compile (When DEV0 is not
111defined or not defined yet):
112
113    External (\_SB.DEV0.OBJ1, IntObj)
114    External (\_SB.DEV0, DeviceObj)
115
116iASL: Fixed a problem where method names in "Alias ()" statement could be
117misinterpreted. They are now interpreted correctly as method invocations.
118
119iASL: capture a method parameter count (Within the Method info segment,
120as well as the argument node) when using parameter type lists.
121
122----------------------------------------
123
124
12528 May 2020. Summary of changes for version 20200528:
126
127
1281) ACPICA kernel-resident subsystem:
129
130Removed old/obsolete Visual Studio files which were used to build the
131Windows versions of the ACPICA tools. Since we have moved to Visual
132Studio 2017, we are no longer supporting Visual Studio 2006 and 2009
133project files. The new subdirectory and solution file are located at:
134
135    acpica/generate/msvc2017/AcpiComponents.sln
136
137
1382) iASL Compiler/Disassembler and ACPICA tools:
139
140iASL: added support for a new OperationRegion Address Space (subtype):
141PlatformRtMechanism. Support for this new keyword is being released for
142early prototyping. It will appear in the next release of the ACPI
143specification.
144
145iASL: do not optimize the NameString parameter of the CondRefOf operator.
146In the previous iASL compiler release, the NameString parameter of the
147CondRefOf was optimized. There is evidence that some implementations of
148the AML interpreter do not perform the recursive search-to-parent search
149during the execution of the CondRefOf operator. Therefore, the CondRefOf
150operator behaves differently when the NameString parameter is a single
151name segment (a NameSeg) as opposed to a full NamePath (starting at the
152root scope) or a NameString containing parent prefixes.
153
154iASL: Prevent an inadvertent remark message. This change prevents a
155remark if within a control method the following exist:
1561) An Operation Region is defined, and
1572) A Field operator is defined that refers to the region.
158This happens because at the top level, the Field operator does not
159actually create a new named object, it simply references the operation
160region.
161
162Removed support for the acpinames utility. The acpinames was a simple
163utility used to populate and display the ACPI namespace without executing
164any AML code. However, ACPICA now supports executable opcodes outside of
165control methods. This means that executable AML opcodes such as If and
166Store opcodes need to be executed during table load. Therefore, acpinames
167would need to be updated to match the same behavior as the acpiexec
168utility and since acpiexec can already dump the entire namespace (via the
169'namespace' command), we no longer have the need to maintain acpinames.
170
171    In order to dump the contents of the ACPI namespace using acpiexec,
172execute the following command from the command line:
173
174        acpiexec -b "n" [aml files]
175
176----------------------------------------
177
178
17930 April 2020. Summary of changes for version 20200430:
180
1811) ACPICA kernel-resident subsystem:
182
183Cleaned up the coding style of a couple of global variables
184(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers.
185AcpiProtocolLengths was made static, and the definition of
186AcpiGbl_NextCmdNum was moved to acglobal.h.
187
188
1892) iASL Compiler/Disassembler and ACPICA tools:
190
191iASL DataTable Compiler:  Fixed a segfault on errors that aren't directly
192associated with a field.
193
194Disassembler: has been made more resilient so that it will continue to
195parse AML even if the AML generates ACPI namespace errors. This enables
196iASL to disassemble some AML that may have been compiled using older
197versions of iASL that no longer compile with newer versions of iASL.
198
199iASL: Fixed the required parameters for _NIH and _NIG. Previously, there
200was a mixup where _NIG required one parameter and _NIH required zero
201parameters. This change swaps these parameter requirements. Now it is
202required that _NIH must be called with one parameter and _NIG requires
203zero parameters.
204
205iASL: Allow use of undefined externals as long as they are protected by
206an if (CondRefOf (...)) block when compiling multiple definition blocks.
207
208iASL: Fixed the type override behavior of named objects that are declared
209as External. External declarations will no longer override the type of
210the actual definition if it already exists.
211
212AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable
213command line wildcard support on Windows. Note: the AcpiNames utility is
214essentially redundant with the AcpiExec utility (using the "namespace"
215command) and is therefore deprecated. It will be removed in future
216releases of ACPICA.
217
218Disassembler: ignore AE_ALREADY_EXISTS status when parsing create*
219operators. The disassembler is intended to emit existing ASL code as-is.
220Therefore, error messages emitted during disassembly should be ignored or
221handled in a way such that the disassembler can continue to parse the
222AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op
223parsing for create operators in order to complete parsing ASL termlists.
224
225iASL DataTable Compiler: IVRS table: fix potentially uninitialized
226variable warning. Some compilers catch potential uninitialized variables.
227This is done by examining branches of if/else statements. This change
228replaces an "else if" with an "else" to fix the uninitialized variable
229warning.
230
231
232----------------------------------------
23326 March 2020. Summary of changes for version 20200326:
234
235
2361) ACPICA kernel-resident subsystem:
237
238Performed a code clean-up to prevent build errors on early versions of
239GCC-10.
240
241Added the NHLT table signature. iASL data table compiler/disassembler
242support for this table is coming soon.
243
244
2452) iASL Compiler/Disassembler and ACPICA tools:
246
247AcpiExec: Fixed several problems with the namespace initialization file
248(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS
249errors, several seg faults, and enhancements to line parsing within the
250init file. In addition, each object found in the init file and it's new
251value is displayed, as well as any such entries that do not have a
252corresponding name in the namespace. For reference, the syntax for the
253various supported data types are presented below:
254	PCHG 0x777788889999BBBB	// Integer
255	\DEV1.STR1 "XYZ"			// String
256	BUF1 (88 99 AA)			// Buffer
257	PKG1 [0x1111 0x2222]		// Package
258	\BF1 0x7980				// BufferField
259	RCRV 0x0123456789ABCDEF	// Field Unit
260
261iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro
262can be used anywhere in a given ASL file to configure iASL to expect an
263iASL compiler error code on the line where this macro was placed. If the
264error code does not exist, an error is generated. This is intended to be
265used for ACPICA's ASL test suite, but can be used by ASL developers as
266well.
267
268iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD
269IVRS table parsing supported only IVHD type 10h structures. Parsing an
270IVHD type 11h caused the iasl to report unknown subtable type. Add
271necessary structure definition for IVHD type 11h and apply correct
272parsing method based on subtable type. Micha? ?ygowski.
273
274iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name
275According to AMD IOMMU Specification Revision 3.05 the reserved field
276should be IOMMU Feature Reporting. Change the name of the field to the
277correct one. Micha? ?ygowski.
278
279acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch
280based on suggestions by David Seifert and Benjamin Berg.
281
282iASL: table compiler: removed an unused variable (DtCompilerParserResult)
283causing linking errors. Patch based on suggestions by David Seifert and
284Benjamin Berg.
285
286iASL: table compiler: make LexBuffer static to avoid linking errors in
287newer compilers. Patch based on suggestions by David Seifert and Benjamin
288Berg.
289
290iASL: fixed type matching between External and Named objects. External
291object types can only be expressed with ACPI object type values that are
292defined in the ACPI spec. However, iASL uses ACPI object type values that
293are local to ACPICA in addition to the values defined in the ACPI spec.
294This change implements type matching to map some object type values
295specific to ACPICA to ones that are defined in the ACPI spec.
296
297iASL: Dropped the type mismatch compiler error that can arise from
298External declarations to a warning. This warning can occur when there is
299a type difference between the external declaration and the actual object
300declaration (when compiling multiple files/modules simultaneously).
301
302iASL: removed an incorrect error message regarding externals. This change
303removes an incorrect error that is emitted when a duplicate external
304declaration does not contain a type that opens a scope. This is incorrect
305because the duplicate external with conflicting types are already caught
306by iASL and it doesn't make any sense to enforce what this conflicting
307type should be.
308
309AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be
310surrounded by parens. Otherwise, a logical statement that applies a
311logical not operator to this macro could result in a computation that
312applies the operator to the left side of the logical and but not the
313right. Reported-by: John Levon <john.levon@joyent.com>
314
315Fixed a problem with the local version of sprint(): On 32-bit, the
316provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX,
317String + Size will wrap, meaning End < Start, and
318AcpiUtBoundStringOutput() will never output anything as a result. The
319symptom seen of this was acpixtract failing to output anything -- with a
320custom build that included utprint.c. Signed-off-by: John Levon
321<john.levon@joyent.com>
322
323iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the
324ACPI specification.
325
326
327----------------------------------------
32814 February 2020. Summary of changes for version 20200214:
329
330
3311) ACPICA kernel-resident subsystem:
332
333Enable sleep button on ACPI legacy wake:  Hibernation (S4) is triggered
334in a guest when it receives a sleep trigger from the hypervisor. When the
335guest resumes from this power state, it does not see the SleepEnabled
336bit. In other words, the sleepHibernation (S4) is triggered in a guest
337when it receives a sleep trigger from the hypervisor. When the guest
338resumes from this power state, it does not see the SleepEnabled bit. In
339other words, the sleep button is not enabled on waking from an S4 state.
340This causes subsequent invocation of sleep state to fail since the
341guest.button is not enabled on waking from an S4 state. This causes
342subsequent invocation of sleep state to fail in the guest. Fix this
343problem by enabling the sleep button in ACPI legacy wake. From Anchal
344Agarwal <anchalag@amazon.com>.
345
346Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used
347for checking the status bits of all enabled GPEs in one go. It is needed
348to distinguish spurious SCIs from genuine ones when deciding whether or
349not to wake up the system from suspend-to-idle.
350
351Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be
352using HOST in their environment to represent the host name for their
353machines. Avoid this problem by renaming this variable from HOST to
354ACPI_HOST.
355
356MSVC 2017 project files: Enable multiprocessor generation to improve
357build performance.
358
359Added a macro to get the byte width of a Generic Address structure. New
360ACPI_ACCESS_BYTE_WIDTH is in addition to the existing
361ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg.
362
363
3642) iASL Compiler/Disassembler and ACPICA tools:
365
366iASL: Implemented full support for the (optional, rarely used) ReturnType
367and ParameterTypesList for the Method, Function, and External operators.
368For Method declarations, the number of individual ParameterTypes must
369match the declaration of the number of arguments (NumArgs). This also
370Fixes a problem with the External operator where extra/extraneous bytes
371were emitted in the AML code if the optional ReturnType/ParameterTypes
372were specified for a MethodObj declaration.
373New error message:
3741) Method NumArgs count does not match length of ParameterTypes list
375
376iASL: Implemented detection of type mismatches between External
377declarations and named object declarations. Also, detect type mismatches
378between multiple External declarations of the same Name.
379New error messages:
3801) Type mismatch between external declaration and actual object
381declaration detected
3822) Type mismatch between multiple external declarations detected
383
384iASL: Implemented new error messages for External operators that specify
385a ReturnType and/or ParameterTypesList for any object type other than
386control methods (MethodObj).
387New error messages:
3881) Return type is only allowed for Externals declared as MethodObj
3892) Parameter type is only allowed for Externals declared as MethodObj
390
391iASL: Implemented two new remark/warning messages for ASL code that
392creates named objects from within a control method. This is very
393inefficient since the named object must be created and deleted each time
394the method is executed.
395New messages:
3961) Creation of named objects within a method is highly inefficient, use
397globals or method local variables instead (remark)
3982) Static OperationRegion should be declared outside control method
399(warning)
400
401iASL: Improved illegal forward reference detection by adding support to
402detect forward-reference method invocations.
403
404iASL: Detect and issue an error message for NameStrings that contain too
405many individual NameSegs (>255). This is an AML limitation that is
406defined in the ACPI specification.
407New message:
4081) NameString contains too many NameSegs (>255)
409
410acpidump: windows: use GetSystemFirmwareTable API for all tables except
411SSDT. By using this API, acpidump is able to get all tables in the XSDT
412
413iASL: Removed unused parser file and updated msvc2017 project files.
414Removed the obsolete AslCompiler.y from the repository.
415
416iASL: msvc2017: Fixed macros in the file dependency list to prevent
417unnecessary rebuilds. Replace %(Directory) with %(RelativeDir).
418
419Disassembler: Prevent spilling error messages to the output file. All
420errors are directed to the console instead. These error messages
421prevented re-compilation of the resulting disassembled ASL output file
422(.DSL).
423
424
425----------------------------------------
42610 January 2020. Summary of changes for version 20200110:
427
428
4291) ACPICA kernel-resident subsystem:
430
431Updated all copyrights to 2020. This affects all ACPICA source code
432modules.
433
434
4352) iASL Compiler/Disassembler and ACPICA tools:
436
437ASL test suite (ASLTS): Updated all copyrights to 2020.
438
439Tools and utilities: Updated all signon copyrights to 2020.
440
441iASL: fix forward reference analysis for field declarations. Fixes
442forward reference analysis for field declarations by searching the
443parent scope for the named object when the object is not present in
444the current scope.
445
446iASL: Improved the error output for ALREADY_EXISTS errors. Now, the
447full pathname of the name that already exists is printed.
448
449iASL: Enhance duplicate Case() detection for buffers. Add check for
450buffers with no initializer list (these buffers will be filled with
451zeros at runtime.)
452
453
454----------------------------------------
45513 December 2019. Summary of changes for version 20191213:
456
457
4581) ACPICA kernel-resident subsystem:
459
460Return a Buffer object for all fields created via the CreateField
461operator. Previously, an Integer would be returned if the size of
462the field was less than or equal to the current size of an Integer.
463Although this goes against the ACPI specification, it provides
464compatibility with other ACPI implementations. Also updated the
465ASLTS test suite to reflect this new behavior.
466
4672) iASL Compiler/Disassembler and ACPICA tools:
468
469iASL: Implemented detection of (and throw an error for) duplicate
470values for Case statements within a single Switch statement. Duplicate
471Integers, Strings, and Buffers are supported.
472
473iASL: Fix error logging issue during multiple file compilation --
474Switch to the correct input file during error node creation.
475
476iASL: For duplicate named object creation, now emit an error instead
477of a warning - since this will cause a runtime error.
478
479AcpiSrc: Add unix line-ending support for non-Windows builds.
480
481iASL: Add an error condition for an attempt to create a NameString
482with > 255 NameSegs (the max allowable via the AML definition).
483
484
485----------------------------------------
48618 October 2019. Summary of changes for version 20191018:
487
488
4891) ACPICA kernel-resident subsystem:
490
491Debugger: added a new command: ?Fields [address space ID]?. This command
492dumps the contents of all field units that are defined within the
493namespace with a particular address space ID.
494
495Modified the external interface AcpiLoadTable() to return a table index.
496This table index can be used for unloading a table for debugging.
497    ACPI_STATUS
498    AcpiLoadTable (
499        ACPI_TABLE_HEADER       *Table,
500        UINT32                  *TableIndex))
501
502Implemented a new external interface: AcpiUnloadTable() This new function
503takes a table index as an argument and unloads the table. Useful for
504debugging only.
505    ACPI_STATUS
506    AcpiUnloadTable (
507        UINT32                  TableIndex))
508
509Ported the AcpiNames utility to use the new table initialization
510sequence. The utility was broken before this change. Also, it was
511required to include most of the AML interpreter into the utility in order
512to process table initialization (module-level code execution.)
513
514Update for results from running Clang V8.0.1. This fixes all "dead
515assignment" warnings. There are still several "Dereference of NULL
516pointer" warnings, but these have been found to be false positive
517warnings.
518
519
5202) iASL Compiler/Disassembler and ACPICA tools:
521
522iASL: numerous table compiler changes to ensure that the usage of
523yacc/bison syntax is POSIX-compliant.
524
525iASL/disassembler: several simple bug fixes in the data table
526disassembler.
527
528Acpiexec: expanded the initialization file (the -fi option) to initialize
529strings, buffers, packages, and field units.
530
531
532----------------------------------------
53316 August 2019. Summary of changes for version 20190816:
534
535This release is available at https://acpica.org/downloads
536
537
5381) ACPICA kernel-resident subsystem:
539
540Modified the OwnerId mechanism to allow for more Owner Ids. The previous
541limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT
542exceptions on machines with a large number of initialization threads,
543many CPU cores and nested initialization control methods.
544
545Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for
546checking if the given GPE (as represented by a GPE device handle and a
547GPE number) is currently active and dispatching it (if that's the case)
548outside of interrupt context.
549
550Table load: exit the interpreter before initializing objects within the
551new table This prevents re-acquiring the interpreter lock when loading
552tables
553
554Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
555uk Kim
556
557Macros: removed pointer math on a null pointer. Causes warnings on some
558compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR
559instead of using arithmetic.
560
561Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used
562across all "printf-like" internal functions. Also, cleanup all calls to
563such functions (both in 32-bit mode and 64-bit mode) now that they are
564analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
565
566
5672) iASL Compiler/Disassembler and ACPICA tools:
568
569iASL: implemented a new data table compiler flex/bison front-end. This
570change is internal and is not intended to result in changes to the
571compiled code. This new compiler front-end can be invoked using the -tp
572option for now, until the old mechanism is removed.
573
574ASLTS: Implemented a new data table compiler test suite. This test suite
575generates all table templates and compile/disassemble/re-compile/binary-
576compare each file.
577
578iASL: return -1 if AML files were not generated due to compiler errors
579
580iASL: added a warning on use of the now-legacy ASL Processor () keyword.
581
582iASL: added an error on _UID object declaration that returns a String
583within a Processor () declaration. A _UID for a processor must be an
584Integer.
585
586iASL: added a null terminator to name strings that consist only of
587multiple parent prefixes (^)
588
589iASL: added support to compile both ASL and data table files in a single
590command.
591
592Updated the tool generation project files that were recently migrated to
593MSVC 2017 to eliminate all new warnings. The new project files appear in
594the directory \acpica\generate\msvc2017. This change effectively
595deprecates the older project files in \acpica\generate\msvc9.
596
597
598----------------------------------------
59903 July 2019. Summary of changes for version 20190703:
600
601
6021) ACPICA kernel-resident subsystem:
603
604Remove legacy module-level support code. There were still some remnants
605of the legacy module-level code executions. Since we no longer support
606this option, this is essentially dead code and has been removed from the
607ACPICA source.
608
609iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
610scope. If these named objects are declared outside the root scope, they
611will not be invoked by any host Operating System.
612
613Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC
614one) can be enabled in two situations. First, the GPEs with existing _Lxx
615and _Exx methods are enabled implicitly by ACPICA during system
616initialization.  Second, the GPEs without these methods (like GPEs listed
617by _PRW objects for wakeup devices) need to be enabled directly by the
618code that is going to use them (e.g. ACPI power management or device
619drivers).
620
621In the former case, if the status of a given GPE is set to start with,
622its handler method (either _Lxx or _Exx) needs to be invoked to take care
623of the events (possibly) signaled before the GPE was enabled. In the
624latter case, however, the first caller of AcpiEnableGpe() for a given GPE
625should not be expected to care about any events that might be signaled
626through it earlier.  In that case, it is better to clear the status of
627the GPE before enabling it, to prevent stale events from triggering
628unwanted actions (like spurious system resume, for example).
629
630For this reason, modify AcpiEvAddGpeReference() to take an additional
631boolean argument indicating whether or not the GPE status needs to be
632cleared when its reference counter changes from zero to one and make
633AcpiEnableGpe() pass TRUE to it through that new argument.
634
635
6362) iASL Compiler/Disassembler and ACPICA tools:
637
638The tool generation process has been migrated to MSVC 2017, and all
639project files have been upgraded. The new project files appear in the
640directory \acpica\generate\msvc2017. This change effectively deprecates
641the older project files in \acpica\generate\msvc9.
642
643iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
644scope. If these named objects are declared outside the root scope, they
645will not be invoked by any host Operating System
646
647----------------------------------------
64809 May 2019. Summary of changes for version 20190509:
649
650
6511) ACPICA kernel-resident subsystem:
652
653Revert commit  6c43e1a ("ACPICA: Clear status of GPEs before enabling
654them") that causes problems with Thunderbolt controllers to occur if a
655dock device is connected at init time (the xhci_hcd and thunderbolt
656modules crash which prevents peripherals connected through them from
657working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA:
658Dispatch active GPEs at init time") to get undone, so the problem
659addressed by commit ecc1165b8b74 appears again as a result of it.
660
661
6622) iASL Compiler/Disassembler and ACPICA tools:
663
664Reverted iASL: Additional forward reference detection. This change
665reverts forward reference detection for field declarations. The feature
666unintentionally emitted AML bytecode with incorrect package lengths for
667some ASL code related to Fields and OperationRegions. This malformed AML
668can cause systems to crash
669during boot. The malformed AML bytecode is emitted in iASL version
67020190329 and 20190405.
671
672iASL: improve forward reference detection. This change improves forward
673reference detection for named objects inside of scopes. If a parse object
674has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to
675a named object that is declared later in the AML bytecode. This is
676allowed if the reference is inside of a method and the declaration is
677outside of a method like so:
678
679DefinitionBlock(...)
680{
681    Method (TEST)
682    {
683        Return (NUM0)
684    }
685    Name (NUM0,0)
686}
687
688However, if the declaration and reference are both in the same method or
689outside any methods, this is a forward reference and should be marked as
690an error because it would result in runtime errors.
691
692DefinitionBlock(...)
693{
694    Name (BUFF, Buffer (NUM0) {}) // Forward reference
695    Name (NUM0, 0x0)
696
697    Method (TEST)
698    {
699        Local0 = NUM1
700        Name (NUM1, 0x1) // Forward reference
701        return (Local0)
702    }
703}
704
705iASL: Implemented additional buffer overflow analysis for BufferField
706declarations. Check if a buffer index argument to a create buffer field
707operation is beyond the end of the target buffer.
708
709This affects these AML operators:
710
711   AML_CREATE_FIELD_OP
712   AML_CREATE_BIT_FIELD_OP
713   AML_CREATE_BYTE_FIELD_OP
714   AML_CREATE_WORD_FIELD_OP
715   AML_CREATE_DWORD_FIELD_OP
716   AML_CREATE_QWORD_FIELD_OP
717
718 There are three conditions that must be satisfied in order to allow this
719validation at compile time:
720
721   1) The length of the target buffer must be an integer constant
722   2) The index specified in the create* must be an integer constant
723   3) For CreateField, the bit length argument must be non-zero.
724
725Example:
726    Name (BUF1, Buffer() {1,2})
727    CreateField (BUF1, 7, 9, CF03)  // 3: ERR
728
729dsdt.asl     14:     CreateField (BUF1, 7, 9, CF03)  // 3: ERR
730Error    6165 -                           ^ Buffer index beyond end of
731target buffer
732
733
734----------------------------------------
73505 April 2019. Summary of changes for version 20190405:
736
737
7381) ACPICA kernel-resident subsystem:
739
740Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop
741unconditionally clearing ACPI IRQs during suspend/resume") was added
742earlier to stop clearing of event status bits unconditionally on suspend
743and resume paths. Though this change fixed an issue on suspend path, it
744introduced regressions on several resume paths. In the case of S0ix,
745events are enabled as part of device suspend path. If status bits for the
746events are set when they are enabled, it could result in premature wake
747from S0ix. If status is cleared for any event that is being enabled so
748that any stale events are cleared out. In case of S0ix, events are
749enabled as part of device suspend path. If status bits for the events are
750set when they are enabled, it could result in premature wake from S0ix.
751
752This change ensures that status is cleared for any event that is being
753enabled so that any stale events are cleared out.
754
755
7562) iASL Compiler/Disassembler and ACPICA tools:
757
758iASL: Implemented an enhanced multiple file compilation that combines
759named objects from all input files to a single namespace. With this
760feature, any unresolved external declarations as well as duplicate named
761object declarations can be detected during compilation rather than
762generating errors much later at runtime. The following commands are
763examples that utilize this feature:
764    iasl dsdt.asl ssdt.asl
765    iasl dsdt.asl ssdt1.asl ssdt2.asl
766    iasl dsdt.asl ssdt*.asl
767
768----------------------------------------
76929 March 2019. Summary of changes for version 20190329:
770
771
7721) ACPICA kernel-resident subsystem:
773
774Namespace support: Remove the address nodes from global list after method
775termination. The global address list contains pointers to namespace nodes
776that represent Operation Regions. This change properly removes Operation
777Region namespace nodes that are declared dynamically during method
778execution.
779
780Linux: Use a different debug default than ACPICA. There was a divergence
781between Linux and the ACPICA codebases. In order to resolve this
782divergence, Linux now declares its own debug default in aclinux.h
783
784Renamed some internal macros to improve code understanding and
785maintenance. The macros below all operate on single 4-character ACPI
786NameSegs, not generic strings (old -> new):
787    ACPI_NAME_SIZE    -> ACPI_NAMESEG_SIZE
788    ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
789    ACPI_MOVE_NAME    -> ACPI_COPY_NAMESEG
790
791Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
792table.
793
794Test suite: Update makefiles, add PCC operation region support
795
796
7972) iASL Compiler/Disassembler and Tools:
798
799iASL: Implemented additional illegal forward reference detection. Now
800detect and emit an error upon detection of a forward reference from a
801Field to an Operation Region. This will fail at runtime if allowed to
802pass the compiler.
803
804AcpiExec: Add an address list check for dynamic Operation Regions. This
805feature performs a sanity test for each node the global address list.
806This is done in order to ensure that all dynamic operation regions are
807properly removed from the global address list and no dangling pointers
808are left behind.
809
810Disassembler: Improved generation of resource pathnames. This change
811improves the code that generates resource descriptor and resource tag
812pathnames. The original code used a bunch of str* C library functions
813that caused warnings on some compilers.
814
815iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
816function can overwrite buffers if the calling code is not very careful.
817In the case of generating a module/table header, use of memmove is a
818better implementation.
819
820
8213) Status of new features that have not been completed at this time:
822
823iASL: Implementing an enhanced multiple file compilation into a single
824namespace feature (Status): This feature will be released soon, and
825allows multiple ASL files to be compiled into the same single namespace.
826By doing so, any unresolved external declarations as well as duplicate
827named object declarations can be detected during compilation (rather than
828later during runtime). The following commands are examples that utilize
829this feature:
830    iasl dsdt.asl ssdt.asl
831    iasl dsdt.asl ssdt1.asl ssdt2.asl
832    iasl dsdt.asl ssdt*.asl
833
834ASL tutorial status: Feedback is being gathered internally and the
835current plan is to publish this tutorial on the ACPICA website after a
836final review by a tech writer.
837
838----------------------------------------
83915 February 2019. Summary of changes for version 20190215:
840
841
8420) Support for ACPI specification version 6.3:
843
844Add PCC operation region support for the AML interpreter. This adds PCC
845operation region support in the AML interpreter and a default handler for
846acpiexec. The change also renames the PCC region address space keyword to
847PlatformCommChannel.
848
849Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG.
850These methods provide OSPM with health information and device boot
851status.
852
853PDTT: Add TriggerOrder to the PCC Identifier structure. The field value
854defines if the trigger needs to be invoked by OSPM before or at the end
855of kernel crash dump processing/handling operation.
856
857SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT
858is used for describing devices such as heterogeneous processors,
859accelerators, GPUs, and IO devices with integrated compute or DMA
860engines.
861
862MADT: Add support for statistical profiling in GICC. Statistical
863profiling extension (SPE) is an architecture-specific feature for ARM.
864
865MADT: Add online capable flag. If this bit is set, system hardware
866supports enabling this processor during OS runtime.
867
868New Error Disconnect Recover Notification value. There are a number of
869scenarios where system Firmware in collaboration with hardware may
870disconnect one or more devices from the rest of the system for purposes
871of error containment. Firmware can use this new notification value to
872alert OSPM of such a removal.
873
874PPTT: New additional fields in Processor Structure Flags. These flags
875provide more information about processor topology.
876
877NFIT/Disassembler: Change a field name from "Address Range" to "Region
878Type".
879
880HMAT updates: make several existing fields to be reserved as well as
881rename subtable 0 to "memory proximity domain attributes".
882
883GTDT: Add support for new GTDT Revision 3. This revision adds information
884for the EL2 timer.
885
886iASL: Update the HMAT example template for new fields.
887
888iASL: Add support for the new revision of the GTDT (Rev 3).
889
890
8911) ACPICA kernel-resident subsystem:
892
893AML Parser: fix the main AML parse loop to correctly skip erroneous
894extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
895byte extended opcodes. If an error occurs during an AML table load, the
896AML parser will continue loading the table by skipping the offending
897opcode. This implements a "load table at any cost" philosophy.
898
899
9002) iASL Compiler/Disassembler and Tools:
901
902iASL: Add checks for illegal object references, such as a reference
903outside of method to an object within a method. Such an object is only
904temporary.
905
906iASL: Emit error for creation of a zero-length operation region. Such a
907region is rather pointless. If encountered, a runtime error is also
908implemented in the interpreter.
909
910Debugger: Fix a possible fault with the "test objects" command.
911
912iASL: Makefile: support parent directory filenames containing embedded
913spaces.
914
915iASL: Update the TPM2 template to revision 4.
916
917iASL: Add the ability to report specific warnings or remarks as errors.
918
919Disassembler: Disassemble OEMx tables as actual AML byte code.
920Previously, these tables were treated as "unknown table".
921
922iASL: Add definition and disassembly for TPM2 revision 3.
923
924iASL: Add support for TPM2 rev 3 compilation.
925
926
927----------------------------------------
92808 January 2019. Summary of changes for version 20190108:
929
930
9311) ACPICA kernel-resident subsystem:
932
933Updated all copyrights to 2019. This affects all source code modules.
934
935
9362) iASL Compiler/Disassembler and Tools:
937
938ASL test suite (ASLTS): Updated all copyrights to 2019.
939
940Tools: Updated all signon copyrights to 2019.
941
942AcpiExec: Added a new option to dump extra information concerning any
943memory leaks detected by the internal object/cache tracking mechanism. -
944va
945
946iASL: Updated the table template for the TPM2 table to the newest version
947of the table (Revision 4)
948
949
950----------------------------------------
95113 December 2018. Summary of changes for version 20181213:
952
953
9541) ACPICA Kernel-resident Subsystem:
955
956Fixed some buffer length issues with the GenericSerialBus, related to two
957of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
958which are rarely seen in the field. For these, the LEN field of the ASL
959buffer is now ignored. Hans de Goede
960
961Implemented a new object evaluation trace mechanism for control methods
962and data objects. This includes nested control methods. It is
963particularly useful for examining the ACPI execution during system
964initialization since the output is relatively terse. The flag below
965enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
966   #define ACPI_LV_EVALUATION          0x00080000
967
968Examples:
969   Enter evaluation       :  _SB.PCI0._INI (Method)
970   Exit evaluation        :  _SB.PCI0._INI
971   Enter evaluation       :  _OSI (Method)
972   Exit evaluation        :  _OSI
973   Enter evaluation       :  _SB.PCI0.TEST (Method)
974   Nested method call     :     _SB.PCI0.NST1
975   Exit nested method     :     _SB.PCI0.NST1
976   Exit evaluation        :  _SB.PCI0.TEST
977
978Added two recently-defined _OSI strings. See
979https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
980osi.
981   "Windows 2018"
982   "Windows 2018.2"
983
984Update for buffer-to-string conversions via the ToHexString ASL operator.
985A "0x" is now prepended to each of the hex values in the output string.
986This provides compatibility with other ACPI implementations. The ACPI
987specification is somewhat vague on this issue.
988   Example output string after conversion:
989"0x01,0x02,0x03,0x04,0x05,0x06"
990
991Return a run-time error for TermArg expressions within individual package
992elements. Although this is technically supported by the ASL grammar,
993other ACPI implementations do not support this either. Also, this fixes a
994fault if this type of construct is ever encountered (it never has been).
995
996
9972) iASL Compiler/Disassembler and Tools:
998
999iASL: Implemented a new compile option (-ww) that will promote individual
1000warnings and remarks to errors. This is intended to enhance the firmware
1001build process.
1002
1003AcpiExec: Implemented a new command-line option (-eo) to support the new
1004object evaluation trace mechanism described above.
1005
1006Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
1007instead of a "unknown table" message.
1008
1009AcpiHelp: Improved support for the "special" predefined names such as
1010_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be
1011used for "xx" and "x".
1012
1013----------------------------------------
101431 October 2018. Summary of changes for version 20181031:
1015
1016
1017An Operation Region regression was fixed by properly adding address
1018ranges to a global list during initialization. This allows OS to
1019accurately check for overlapping regions between native devices (such as
1020PCI) and Operation regions as well as checking for region conflicts
1021between two Operation Regions.
1022
1023Added support for the 2-byte extended opcodes in the code/feature that
1024attempts to continue parsing during the table load phase. Skip parsing
1025Device declarations (and other extended opcodes) when an error occurs
1026during parsing. Previously, only single-byte opcodes were supported.
1027
1028Cleanup: Simplified the module-level code support by eliminating a
1029useless global variable (AcpiGbl_GroupModuleLeveCode).
1030
1031
10322) iASL Compiler/Disassembler and Tools:
1033
1034iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
1035could cause a fault in the preprocessor. This was an inadvertent side-
1036effect from moving more allocations/frees to the local cache/memory
1037mechanism.
1038
1039iASL: Enhanced error detection by validating that all NameSeg elements
1040within a NamePatch actually exist. The previous behavior was spotty at
1041best, and such errors could be improperly ignored at compiler time (never
1042at runtime, however. There are two new error messages, as shown in the
1043examples below:
1044
1045dsdt.asl     33:     CreateByteField (TTTT.BXXX, 1, CBF1)
1046Error    6161 -                              ^ One or more objects within
1047the Pathname do not exist (TTTT.BXXX)
1048
1049dsdt.asl     34:     CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
1050Error    6160 -        One or more prefix Scopes do not exist ^
1051(BBBB.CBF1)
1052
1053iASL: Disassembler/table-compiler: Added support for the static data
1054table TPM2 revision 3 (an older version of TPM2). The support has been
1055added for the compiler and the disassembler.
1056
1057Fixed compilation of DOS format data table file on Unix/Linux systems.
1058iASL now properly detects line continuations (\) for DOS format data
1059table definition language files on when executing on Unix/Linux.
1060
1061----------------------------------------
106203 October 2018. Summary of changes for version 20181003:
1063
1064
10652) iASL Compiler/Disassembler and Tools:
1066
1067Fixed a regression introduced in version 20180927 that could cause the
1068compiler to fault, especially with NamePaths containing one or more
1069carats (^). Such as: ^^_SB_PCI0
1070
1071Added a new remark for the Sleep() operator when the sleep time operand
1072is larger than one second. This is a very long time for the ASL/BIOS code
1073and may not be what was intended by the ASL writer.
1074
1075----------------------------------------
107627 September 2018. Summary of changes for version 20180927:
1077
1078
10791) ACPICA kernel-resident subsystem:
1080
1081Updated the GPE support to clear the status of all ACPI events when
1082entering any/all sleep states in order to avoid premature wakeups. In
1083theory, this may cause some wakeup events to be missed, but the
1084likelihood of this is small. This change restores the original behavior
1085of the ACPICA code in order to fix a regression seen from the previous
1086"Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
1087This regression could cause some systems to incorrectly wake immediately.
1088
1089Updated the execution of the _REG methods during initialization and
1090namespace loading to bring the behavior into closer conformance to the
1091ACPI specification and other ACPI implementations:
1092
1093From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
1094    "Control methods must assume all operation regions are inaccessible
1095until the _REG(RegionSpace, 1) method is executed"
1096
1097    "The exceptions to this rule are:
10981.  OSPM must guarantee that the following operation regions are always
1099accessible:
1100    SystemIO operation regions.
1101    SystemMemory operation regions when accessing memory returned by the
1102System Address Map reporting interfaces."
1103
1104Since the state of both the SystemIO and SystemMemory address spaces are
1105defined by the specification to never change, this ACPICA change ensures
1106that now _REG is never called on them. This solves some problems seen in
1107the field and provides compatibility with other ACPI implementations. An
1108update to the upcoming new version of the ACPI specification will help
1109clarify this behavior.
1110
1111Updated the implementation of support for the Generic Serial Bus. For the
1112"bidirectional" protocols, the internal implementation now automatically
1113creates a return data buffer of the maximum size (255). This handles the
1114worst-case for data that is returned from the serial bus handler, and
1115fixes some problems seen in the field. This new buffer is directly
1116returned to the ASL. As such, there is no true "bidirectional" buffer,
1117which matches the ACPI specification. This is the reason for the "double
1118store" seen in the example ASL code in the specification, shown below:
1119
1120Word Process Call (AttribProcessCall):
1121    OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
1122    Field(TOP1, BufferAcc, NoLock, Preserve)
1123    {
1124        FLD1, 8, // Virtual register at command value 1.
1125    }
1126
1127    Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
1128                             // as BUFF
1129    CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
1130
1131    Store(0x5416, DATA)               // Save 0x5416 into the data buffer
1132    Store(Store(BUFF, FLD1), BUFF)    // Invoke a write/read Process Call
1133transaction
1134                           // This is the "double store". The write to
1135                           // FLD1 returns a new buffer, which is stored
1136                           // back into BUFF with the second Store.
1137
1138
11392) iASL Compiler/Disassembler and Tools:
1140
1141iASL: Implemented detection of extraneous/redundant uses of the Offset()
1142operator within a Field Unit list. A remark is now issued for these. For
1143example, the first two of the Offset() operators below are extraneous.
1144Because both the compiler and the interpreter track the offsets
1145automatically, these Offsets simply refer to the current offset and are
1146unnecessary. Note, when optimization is enabled, the iASL compiler will
1147in fact remove the redundant Offset operators and will not emit any AML
1148code for them.
1149
1150    OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
1151    Field (OPR1)
1152    {
1153        Offset (0),     // Never needed
1154        FLD1, 32,
1155        Offset (4),     // Redundant, offset is already 4 (bytes)
1156        FLD2, 8,
1157        Offset (64),    // OK use of Offset.
1158        FLD3, 16,
1159    }
1160dsdt.asl     14:         Offset (0),
1161Remark   2158 -                 ^ Unnecessary/redundant use of Offset
1162operator
1163
1164dsdt.asl     16:         Offset (4),
1165Remark   2158 -                 ^ Unnecessary/redundant use of Offset
1166operator
1167
1168----------------------------------------
116910 August 2018. Summary of changes for version 20180810:
1170
1171
11721) ACPICA kernel-resident subsystem:
1173
1174Initial ACPI table loading: Attempt to continue loading ACPI tables
1175regardless of malformed AML. Since migrating table initialization to the
1176new module-level code support, the AML interpreter rejected tables upon
1177any ACPI error encountered during table load. This is a problem because
1178non-serious ACPI errors during table load do not necessarily mean that
1179the entire definition block (DSDT or SSDT) is invalid. This change
1180improves the table loading by ignoring some types of errors that can be
1181generated by incorrect AML. This can range from object type errors, scope
1182errors, and index errors.
1183
1184Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
1185during suspend/resume. The status of ACPI events is no longer cleared
1186when entering the ACPI S5 system state (power off) which caused some
1187systems to power up immediately after turning off power in certain
1188situations. This was a functional regression. It was fixed by clearing
1189the status of all ACPI events again when entering S5 (for system-wide
1190suspend or hibernation the clearing of the status of all events is not
1191desirable, as it might cause the kernel to miss wakeup events sometimes).
1192Rafael Wysocki.
1193
1194
11952) iASL Compiler/Disassembler and Tools:
1196
1197AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
1198elements listed in the initialization file were previously initialized
1199after the table load and before executing module-level code blocks.
1200Recent changes in the module-level code support means that the table load
1201becomes a large control method execution. If fields are used within
1202module-level code and we are executing with the -fi option, the
1203initialization values were used to initialize the namespace object(s)
1204only after the table was finished loading. This change Provides an early
1205initialization of objects specified in the initialization file so that
1206field unit values are populated during the table load (not after the
1207load).
1208
1209AcpiExec: Fixed a small memory leak regression that could result in
1210warnings during exit of the utility. These warnings were similar to
1211these:
1212    0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
1213    0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
1214
1215----------------------------------------
121629 June 2018. Summary of changes for version 20180629:
1217
1218
12191) iASL Compiler/Disassembler and Tools:
1220
1221iASL: Fixed a regression related to the use of the ASL External
1222statement. Error checking for the use of the External() statement has
1223been relaxed. Previously, a restriction on the use of External meant that
1224the referenced named object was required to be defined in a different
1225table (an SSDT). Thus it would be an error to declare an object as an
1226external and then define the same named object in the same table. For
1227example:
1228    DefinitionBlock (...)
1229    {
1230        External (DEV1)
1231        Device (DEV1){...} // This was an error
1232    }
1233However, this behavior has caused regressions in some existing ASL code,
1234because there is code that depends on named objects and externals (with
1235the same name) being declared in the same table. This change will allow
1236the ASL code above to compile without errors or warnings.
1237
1238iASL: Implemented ASL language extensions for four operators to make some
1239of their arguments optional instead of required:
1240    1) Field (RegionName, AccessType, LockRule, UpdateRule)
1241    2) BankField (RegionName, BankName, BankValue,
1242                AccessType, LockRule, UpdateRule)
1243    3) IndexField (IndexName, DataName,
1244                AccessType, LockRule, UpdateRule)
1245For the Field operators above, the AccessType, LockRule, and UpdateRule
1246are now optional arguments. The default values are:
1247        AccessType: AnyAcc
1248        LockRule:   NoLock
1249        UpdateRule: Preserve
1250    4) Mutex (MutexName, SyncLevel)
1251For this operator, the SyncLevel argument is now optional. This argument
1252is rarely used in any meaningful way by ASL code, and thus it makes sense
1253to make it optional. The default value is:
1254        SyncLevel:  0
1255
1256iASL: Attempted use of the ASL Unload() operator now results in the
1257following warning:
1258    "Unload is not supported by all operating systems"
1259This is in fact very true, and the Unload operator may be completely
1260deprecated in the near future.
1261
1262AcpiExec: Fixed a regression for the -fi option (Namespace initialization
1263file. Recent changes in the ACPICA module-level code support altered the
1264table load/initialization sequence . This means that the table load has
1265become a large method execution of the table itself. If Operation Region
1266Fields are used within any module-level code and the -fi option was
1267specified, the initialization values were populated only after the table
1268had completely finished loading (and thus the module-level code had
1269already been executed). This change moves the initialization of objects
1270listed in the initialization file to before the table is executed as a
1271method. Field unit values are now initialized before the table execution
1272is performed.
1273
1274----------------------------------------
127531 May 2018. Summary of changes for version 20180531:
1276
1277
12781) ACPICA kernel-resident Subsystem:
1279
1280Implemented additional support to help ensure that a DSDT or SSDT is
1281fully loaded even if errors are incurred during the load. The majority of
1282the problems that are seen is the failure of individual AML operators
1283that occur during execution of any module-level code (MLC) existing in
1284the table. This support adds a mechanism to abort the current ASL
1285statement (AML opcode), emit an error message, and to simply move on to
1286the next opcode -- instead of aborting the entire table load. This is
1287different than the execution of a control method where the entire method
1288is aborted upon any error. The goal is to perform a very "best effort" to
1289load the ACPI tables. The most common MLC errors that have been seen in
1290the field are direct references to unresolved ASL/AML symbols (referenced
1291directly without the use of the CondRefOf operator to validate the
1292symbol). This new ACPICA behavior is now compatible with other ACPI
1293implementations.
1294
1295Interpreter: The Unload AML operator is no longer supported for the
1296reasons below. An AE_NOT_IMPLEMENTED exception is returned.
12971) A correct implementation on at least some hosts may not be possible.
12982) Other ACPI implementations do not correctly/fully support it.
12993) It requires host device driver support which is not known to exist.
1300    (To properly support namespace unload out from underneath.)
13014) This AML operator has never been seen in the field.
1302
1303Parser: Added a debug option to dump AML parse sub-trees as they are
1304being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
1305ACPI_DB_PARSE_TREES.
1306
1307Debugger: Reduced the verbosity for errors incurred during table load and
1308module-level code execution.
1309
1310Completed an investigation into adding a namespace node "owner list"
1311instead of the current "owner ID" associated with namespace nodes. This
1312list would link together all nodes that are owned by an individual
1313control method. The purpose would be to enhance control method execution
1314by speeding up cleanup during method exit (all namespace nodes created by
1315a method are deleted upon method termination.) Currently, the entire
1316namespace must be searched for matching owner IDs if (and only if) the
1317method creates named objects outside of the local scope. However, by far
1318the most common case is that methods create objects locally, not outside
1319the method scope. There is already an ACPICA optimization in place that
1320only searches the entire namespace in the rare case of a method creating
1321objects elsewhere in the namespace. Therefore, it is felt that the
1322overhead of adding an additional pointer to each namespace node to
1323implement the owner list makes this feature unnecessary.
1324
1325
13262) iASL Compiler/Disassembler and Tools:
1327
1328iASL, Disassembler, and Template generator: Implemented support for
1329Revision D of the IORT table. Adds a new subtable that is used to specify
1330SMMUv3 PMCGs. rmurphy-arm.
1331
1332Disassembler: Restored correct table header validation for the "special"
1333ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
1334table header and must be special-cased. This was a regression that has
1335been present for apparently a long time.
1336
1337AcpiExec: Reduced verbosity of the local exception handler implemented
1338within acpiexec. This handler is invoked by ACPICA upon any exceptions
1339generated during control method execution. A new option was added: -vh
1340restores the original verbosity level if desired.
1341
1342AcpiExec: Changed the default base from decimal to hex for the -x option
1343(set debug level). This simplifies the use of this option and matches the
1344behavior of the corresponding iASL -x option.
1345
1346AcpiExec: Restored a force-exit on multiple control-c (sigint)
1347interrupts. This allows program termination even if other issues cause
1348the control-c to fail.
1349
1350ASL test suite (ASLTS): Added tests for the recently implemented package
1351element resolution mechanism that allows forward references to named
1352objects from individual package elements (this mechanism provides
1353compatibility with other ACPI implementations.)
1354
1355
1356----------------------------------------
13578 May 2018. Summary of changes for version 20180508:
1358
1359
13601) ACPICA kernel-resident subsystem:
1361
1362Completed the new (recently deployed) package resolution mechanism for
1363the Load and LoadTable ASL/AML operators. This fixes a regression that
1364was introduced in version 20180209 that could result in an
1365AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
1366(SSDT) that contains package objects.
1367
1368
13692) iASL Compiler/Disassembler and Tools:
1370
1371AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
13721 MB. This change allows for table offsets within the acpidump file to be
1373up to 8 characters. These changes are backwards compatible with existing
1374acpidump files.
1375
1376
1377----------------------------------------
137827 April 2018. Summary of changes for version 20180427:
1379
1380
13811) ACPICA kernel-resident subsystem:
1382
1383Debugger: Added support for Package objects in the "Test Objects"
1384command. This command walks the entire namespace and evaluates all named
1385data objects (Integers, Strings, Buffers, and now Packages).
1386
1387Improved error messages for the namespace root node. Originally, the root
1388was referred to by the confusing string "\___". This has been replaced by
1389"Namespace Root" for clarification.
1390
1391Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
1392Ian King <colin.king@canonical.com>.
1393
1394
13952) iASL Compiler/Disassembler and Tools:
1396
1397iASL: Implemented support to detect and flag illegal forward references.
1398For compatibility with other ACPI implementations, these references are
1399now illegal at the root level of the DSDT or SSDTs. Forward references
1400have always been illegal within control methods. This change should not
1401affect existing ASL/AML code because of the fact that these references
1402have always been illegal in the other ACPI implementation.
1403
1404iASL: Added error messages for the case where a table OEM ID and OEM
1405TABLE ID strings are longer than the ACPI-defined length. Previously,
1406these strings were simply silently truncated.
1407
1408iASL: Enhanced the -tc option (which creates an AML hex file in C,
1409suitable for import into a firmware project):
1410  1) Create a unique name for the table, to simplify use of multiple
1411SSDTs.
1412  2) Add a protection #ifdef in the file, similar to a .h header file.
1413With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd,
1414evan.lloyd@arm.com
1415
1416AcpiExec: Added a new option, -df, to disable the local fault handler.
1417This is useful during debugging, where it may be desired to drop into a
1418debugger on a fault.
1419
1420----------------------------------------
142113 March 2018. Summary of changes for version 20180313:
1422
1423
14241) ACPICA kernel-resident subsystem:
1425
1426Implemented various improvements to the GPE support:
1427
14281) Dispatch all active GPEs at initialization time so that no GPEs are
1429lost.
14302) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
1431before devices are enumerated.
14323) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
1433IRQs are not lost.
14344) Add parallel GPE handling to eliminate the possibility of dispatching
1435the same GPE twice.
14365) Dispatch any pending GPEs after enabling for the first time.
1437
1438AcpiGetObjectInfo - removed support for the _STA method. This was causing
1439problems on some platforms.
1440
1441Added a new _OSI string, "Windows 2017.2".
1442
1443Cleaned up and simplified the module-level code support. These changes
1444are in preparation for the eventual removal of the legacy MLC support
1445(deferred execution), replaced by the new MLC architecture which executes
1446the MLC as a table is loaded (DSDT/SSDTs).
1447
1448Changed a compile-time option to a runtime option. Changes the option to
1449ignore ACPI table load-time package resolution errors into a runtime
1450option. Used only for platforms that generate many AE_NOT_FOUND errors
1451during boot. AcpiGbl_IgnorePackageResolutionErrors.
1452
1453Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
1454ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
1455compilation errors from unused variables (seen with some compilers).
1456
1457
14582) iASL Compiler/Disassembler and Tools:
1459
1460ASLTS: parallelized execution in order to achieve an (approximately) 2X
1461performance increase.
1462
1463ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
1464error reporting.
1465
1466----------------------------------------
146709 February 2018. Summary of changes for version 20180209:
1468
1469
14701) ACPICA kernel-resident subsystem:
1471
1472Completed the final integration of the recent changes to Package Object
1473handling and the module-level AML code support. This allows forward
1474references from individual package elements when the package object is
1475declared from within module-level code blocks. Provides compatibility
1476with other ACPI implementations.
1477
1478The new architecture for the AML module-level code has been completed and
1479is now the default for the ACPICA code. This new architecture executes
1480the module-level code in-line as the ACPI table is loaded/parsed instead
1481of the previous architecture which deferred this code until after the
1482table was fully loaded. This solves some ASL code ordering issues and
1483provides compatibility with other ACPI implementations. At this time,
1484there is an option to fallback to the earlier architecture, but this
1485support is deprecated and is planned to be completely removed later this
1486year.
1487
1488Added a compile-time option to ignore AE_NOT_FOUND exceptions during
1489resolution of named reference elements within Package objects. Although
1490this is potentially a serious problem, it can generate a lot of
1491noise/errors on platforms whose firmware carries around a bunch of unused
1492Package objects. To disable these errors, define
1493ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
1494errors are always reported for ACPICA applications such as AcpiExec.
1495
1496Fixed a regression related to the explicit type-conversion AML operators
1497(ToXXXX). The regression was introduced early in 2017 but was not seen
1498until recently because these operators are not fully supported by other
1499ACPI implementations and are thus rarely used by firmware developers. The
1500operators are defined by the ACPI specification to not implement the
1501"implicit result object conversion". The regression incorrectly
1502introduced this object conversion for the following explicit conversion
1503operators:
1504    ToInteger
1505    ToString
1506    ToBuffer
1507    ToDecimalString
1508    ToHexString
1509    ToBCD
1510    FromBCD
1511
1512
15132) iASL Compiler/Disassembler and Tools:
1514
1515iASL: Fixed a problem with the compiler constant folding feature as
1516related to the ToXXXX explicit conversion operators. These operators do
1517not support the "implicit result object conversion" by definition. Thus,
1518ASL expressions that use these operators cannot be folded to a simple
1519Store operator because Store implements the implicit conversion. This
1520change uses the CopyObject operator for the ToXXXX operator folding
1521instead. CopyObject is defined to not implement implicit result
1522conversions and is thus appropriate for folding the ToXXXX operators.
1523
1524iASL: Changed the severity of an error condition to a simple warning for
1525the case where a symbol is declared both locally and as an external
1526symbol. This accommodates existing ASL code.
1527
1528AcpiExec: The -ep option to enable the new architecture for module-level
1529code has been removed. It is replaced by the -dp option which instead has
1530the opposite effect: it disables the new architecture (the default) and
1531enables the legacy architecture. When the legacy code is removed in the
1532future, the -dp option will be removed also.
1533
1534----------------------------------------
153505 January 2018. Summary of changes for version 20180105:
1536
1537
15381) ACPICA kernel-resident subsystem:
1539
1540Updated all copyrights to 2018. This affects all source code modules.
1541
1542Fixed a possible build error caused by an unresolved reference to the
1543AcpiUtSafeStrncpy function.
1544
1545Removed NULL pointer arithmetic in the various pointer manipulation
1546macros. All "(void *) NULL" constructs are converted to "(void *) 0".
1547This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
1548
1549Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
1550Mittal.
1551
1552
15532) iASL Compiler/Disassembler and Tools:
1554
1555ASLTS: Updated all copyrights to 2018.
1556
1557Tools: Updated all signon copyrights to 2018.
1558
1559AcpiXtract: Fixed a regression related to ACPI table signatures where the
1560signature was truncated to 3 characters (instead of 4).
1561
1562AcpiExec: Restore the original terminal mode after the use of the -v and
1563-vd options.
1564
1565ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
1566
1567----------------------------------------
156814 December 2017. Summary of changes for version 20171214:
1569
1570
15711) ACPICA kernel-resident subsystem:
1572
1573Fixed a regression in the external (public) AcpiEvaluateObjectTyped
1574interface where the optional "pathname" argument had inadvertently become
1575a required argument returning an error if omitted (NULL pointer
1576argument).
1577
1578Fixed two possible memory leaks related to the recently developed "late
1579resolution" of reference objects within ASL Package Object definitions.
1580
1581Added two recently defined _OSI strings: "Windows 2016" and "Windows
15822017". Mario Limonciello.
1583
1584Implemented and deployed a safer version of the C library function
1585strncpy:  AcpiUtSafeStrncpy. The intent is to at least prevent the
1586creation of unterminated strings as a possible result of a standard
1587strncpy.
1588
1589Cleaned up and restructured the global variable file (acglobal.h). There
1590are many changes, but no functional changes.
1591
1592
15932) iASL Compiler/Disassembler and Tools:
1594
1595iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
1596optional OemData field at the end of the table was incorrectly required
1597for proper compilation. It is now correctly an optional field.
1598
1599ASLTS: The entire suite was converted from standard ASL to the ASL+
1600language, using the ASL-to-ASL+ converter which is integrated into the
1601iASL compiler. A binary compare of all output files has verified the
1602correctness of the conversion.
1603
1604iASL: Fixed the source code build for platforms where "char" is unsigned.
1605This affected the iASL lexer only. Jung-uk Kim.
1606
1607----------------------------------------
160810 November 2017. Summary of changes for version 20171110:
1609
1610
16111) ACPICA kernel-resident subsystem:
1612
1613This release implements full support for ACPI 6.2A:
1614    NFIT - Added a new subtable, "Platform Capabilities Structure"
1615No other changes to ACPICA were required, since ACPI 6.2A is primarily an
1616errata release of the specification.
1617
1618Other ACPI table changes:
1619    IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
1620    PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
1621Linton
1622
1623Utilities: Modified the string/integer conversion functions to use
1624internal 64-bit divide support instead of a native divide. On 32-bit
1625platforms, a 64-bit divide typically requires a library function which
1626may not be present in the build (kernel or otherwise).
1627
1628Implemented a targeted error message for timeouts returned from the
1629Embedded Controller device driver. This is seen frequently enough to
1630special-case an AE_TIME returned from an EC operation region access:
1631    "Timeout from EC hardware or EC device driver"
1632
1633Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
1634runtime error messages have the identical prefix.
1635
1636
16372) iASL Compiler/Disassembler and Tools:
1638
1639AcpiXtract: Fixed a problem with table header detection within the
1640acpidump file. Processing a table could be ended early if a 0x40 (@)
1641appears in the original binary table, resulting in the @ symbol appearing
1642in the decoded ASCII field at the end of the acpidump text line. The
1643symbol caused acpixtract to incorrectly think it had reached the end of
1644the current table and the beginning of a new table.
1645
1646AcpiXtract: Added an option (-f) to ignore some errors during table
1647extraction. This initial implementation ignores non-ASCII and non-
1648printable characters found in the acpidump text file.
1649
1650TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
1651for ASLTS. This feature is used to track memory allocations from
1652different memory caches within the ACPICA code. At the end of an ASLTS
1653run, these memory statistics are recorded and stored in a log file.
1654
1655Debugger (user-space version): Implemented a simple "Background" command.
1656Creates a new thread to execute a control method in the background, while
1657control returns to the debugger prompt to allow additional commands.
1658    Syntax: Background <Namepath> [Arguments]
1659
1660----------------------------------------
166129 September 2017. Summary of changes for version 20170929:
1662
1663
16641) ACPICA kernel-resident subsystem:
1665
1666Redesigned and implemented an improved ASL While() loop timeout
1667mechanism. This mechanism is used to prevent infinite loops in the kernel
1668AML interpreter caused by either non-responsive hardware or incorrect AML
1669code. The new implementation uses AcpiOsGetTimer instead of a simple
1670maximum loop count, and is thus more accurate and constant across
1671different machines. The default timeout is currently 30 seconds, but this
1672may be adjusted later.
1673
1674Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
1675better reflect the new implementation of the loop timeout mechanism.
1676
1677Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
1678and to fix an off-by-one error. Jung-uk Kim.
1679
1680Fixed an EFI build problem by updating the makefiles to for a new file
1681that was added, utstrsuppt.c
1682
1683
16842) iASL Compiler/Disassembler and Tools:
1685
1686Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
1687includes support in the table disassembler, compiler, and template
1688generator.
1689
1690iASL: Added an exception for an illegal type of recursive method
1691invocation. If a method creates named objects, the first recursive call
1692will fail at runtime. This change adds an error detection at compile time
1693to catch the problem up front. Note: Marking such a method as
1694"serialized" will not help with this problem, because the same thread can
1695acquire the method mutex more than once. Example compiler and runtime
1696output:
1697
1698    Method (MTH1)
1699    {
1700        Name (INT1, 1)
1701        MTH1 ()
1702    }
1703
1704    dsdt.asl     22: MTH1 ()
1705    Error    6152 -  ^ Illegal recursive call to method
1706                       that creates named objects (MTH1)
1707
1708Previous runtime exception:
1709    ACPI Error: [INT1] Namespace lookup failure,
1710    AE_ALREADY_EXISTS (20170831/dswload2-465)
1711
1712iASL: Updated support for External() opcodes to improve namespace
1713management and error detection. These changes are related to issues seen
1714with multiple-segment namespace pathnames within External declarations,
1715such as below:
1716
1717    External(\_SB.PCI0.GFX0, DeviceObj)
1718    External(\_SB.PCI0.GFX0.ALSI)
1719
1720iASL: Implemented support for multi-line error/warning messages. This
1721enables more detailed and helpful error messages as below, from the
1722initial deployment for the duplicate names error:
1723
1724    DSDT.iiii   1692:       Device(PEG2) {
1725    Error    6074 -                  ^ Name already exists in scope
1726(PEG2)
1727
1728        Original name creation/declaration below:
1729        DSDT.iiii     93:   External(\_SB.PCI0.PEG2, DeviceObj)
1730
1731AcpiXtract: Added additional flexibility to support differing input hex
1732dump formats. Specifically, hex dumps that contain partial disassembly
1733and/or comments within the ACPI table data definition. There exist some
1734dump utilities seen in the field that create this type of hex dump (such
1735as Simics). For example:
1736
1737    DSDT @ 0xdfffd0c0 (10999 bytes)
1738        Signature DSDT
1739        Length 10999
1740        Revision 1
1741        Checksum 0xf3 (Ok)
1742        OEM_ID BXPC
1743        OEM_table_id BXDSDT
1744        OEM_revision 1
1745        Creator_id 1280593481
1746        Creator_revision 537399345
1747      0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
1748      ...
1749      2af0: 5f 4c 30 46 00 a4 01
1750
1751Test suite: Miscellaneous changes/fixes:
1752    More cleanup and simplification of makefiles
1753    Continue compilation of test cases after a compile failure
1754    Do not perform binary compare unless both files actually exist
1755
1756iASL: Performed some code/module restructuring. Moved all memory
1757allocation functions to new modules. Two new files, aslallocate.c and
1758aslcache.c
1759
1760----------------------------------------
176131 August 2017. Summary of changes for version 20170831:
1762
1763
17641) ACPICA kernel-resident subsystem:
1765
1766Implemented internal support for full 64-bit addresses that appear in all
1767Generic Address Structure (GAS) structures. Previously, only the lower 32
1768bits were used. Affects the use of GAS structures in the FADT and other
1769tables, as well as the GAS structures passed to the AcpiRead and
1770AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
1771
1772Added header support for the PDTT ACPI table (Processor Debug Trigger
1773Table). Full support in the iASL Data Table Compiler and disassembler is
1774forthcoming.
1775
1776
17772) iASL Compiler/Disassembler and Tools:
1778
1779iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
1780Properties Topology Table) where a flag bit was specified in the wrong
1781bit position ("Line Size Valid", bit 6).
1782
1783iASL: Implemented support for Octal integer constants as defined by the
1784ASL language grammar, per the ACPI specification. Any integer constant
1785that starts with a zero is an octal constant. For example,
1786    Store (037777, Local0) /* Octal constant */
1787    Store (0x3FFF, Local0) /* Hex equivalent */
1788    Store (16383,  Local0) /* Decimal equivalent */
1789
1790iASL: Improved overflow detection for 64-bit string conversions during
1791compilation of integer constants. "Overflow" in this case means a string
1792that represents an integer that is too large to fit into a 64-bit value.
1793Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
1794the low-order 32 bits with a warning, as previously implemented. Several
1795new exceptions are defined that indicate a 64-bit overflow, as well as
1796the base (radix) that was used during the attempted conversion. Examples:
1797    Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF        // AE_HEX_OVERFLOW
1798    Local0 = 01111222233334444555566667777     // AE_OCTAL_OVERFLOW
1799    Local0 = 11112222333344445555666677778888  // AE_DECIMAL_OVERFLOW
1800
1801iASL: Added a warning for the case where a ResourceTemplate is declared
1802with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
1803this case, the resulting template is created with a single END_TAG
1804descriptor, which is essentially useless.
1805
1806iASL: Expanded the -vw option (ignore specific warnings/remarks) to
1807include compilation error codes as well.
1808
1809----------------------------------------
181028 July 2017. Summary of changes for version 20170728:
1811
1812
18131) ACPICA kernel-resident subsystem:
1814
1815Fixed a regression seen with small resource descriptors that could cause
1816an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
1817
1818AML interpreter: Implemented a new feature that allows forward references
1819from individual named references within package objects that are
1820contained within blocks of "module-level code". This provides
1821compatibility with other ACPI implementations and supports existing
1822firmware that depends on this feature. Example:
1823
1824    Name (ABCD, 1)
1825    If (ABCD)                       /* An If() at module-level */
1826    {
1827        Name (PKG1, Package()
1828        {
1829            INT1                    /* Forward reference to object INT1
1830*/
1831        })
1832        Name (INT1, 0x1234)
1833    }
1834
1835AML Interpreter: Fixed a problem with the Alias() operator where aliases
1836to some ASL objects were not handled properly. Objects affected are:
1837Mutex, Event, and OperationRegion.
1838
1839AML Debugger: Enhanced to properly handle AML Alias objects. These
1840objects have one level of indirection which was not fully supported by
1841the debugger.
1842
1843Table Manager: Added support to detect and ignore duplicate SSDTs within
1844the XSDT/RSDT. This error in the XSDT has been seen in the field.
1845
1846EFI and EDK2 support:
1847    Enabled /WX flag for MSVC builds
1848    Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
1849    Added local support for 64-bit multiply and shift operations
1850    Added support to compile acpidump.efi on Windows
1851    Added OSL function stubs for interfaces not used under EFI
1852
1853Added additional support for the _DMA predefined name. _DMA returns a
1854buffer containing a resource template. This change add support within the
1855resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
1856resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
1857
1858
18592) iASL Compiler/Disassembler and Tools:
1860
1861iASL: Fixed a problem where the internal input line buffer(s) could
1862overflow if there are very long lines in the input ASL source code file.
1863Implemented buffer management that automatically increases the size of
1864the buffers as necessary.
1865
1866iASL: Added an option (-vx) to "expect" particular remarks, warnings and
1867errors. If the specified exception is not raised during compilation, the
1868compiler emits an error. This is intended to support the ASL test suite,
1869but may be useful in other contexts.
1870
1871iASL: Implemented a new predefined macro, __METHOD__, which returns a
1872string containing the name of the current control method that is being
1873compiled.
1874
1875iASL: Implemented debugger and table compiler support for the SDEI ACPI
1876table (Software Delegated Exception Interface). James Morse
1877<james.morse@arm.com>
1878
1879Unix/Linux makefiles: Added an option to disable compile optimizations.
1880The disable occurs when the NOOPT flag is set to TRUE.
1881theracermaster@gmail.com
1882
1883Acpidump: Added support for multiple DSDT and FACS tables. This can occur
1884when there are different tables for 32-bit versus 64-bit.
1885
1886Enhanced error reporting for the ASL test suite (ASLTS) by removing
1887unnecessary/verbose text, and emit the actual line number where an error
1888has occurred. These changes are intended to improve the usefulness of the
1889test suite.
1890
1891----------------------------------------
189229 June 2017. Summary of changes for version 20170629:
1893
1894
18951) ACPICA kernel-resident subsystem:
1896
1897Tables: Implemented a deferred ACPI table verification. This is useful
1898for operating systems where the tables cannot be verified in the early
1899initialization stage due to early memory mapping limitations on some
1900architectures. Lv Zheng.
1901
1902Tables: Removed the signature validation for dynamically loaded tables.
1903Provides compatibility with other ACPI implementations. Previously, only
1904SSDT tables were allowed, as per the ACPI specification. Now, any table
1905signature can be used via the Load() operator. Lv Zheng.
1906
1907Tables: Fixed several mutex issues that could cause errors during table
1908acquisition. Lv Zheng.
1909
1910Tables: Fixed a problem where an ACPI warning could be generated if a
1911null pointer was passed to the AcpiPutTable interface. Lv Zheng.
1912
1913Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
1914AcpiPutTable interfaces. This applies to the "late stage" table loading
1915when the use of AcpiPutTable is no longer required (since the system
1916memory manager is fully running and available). Lv Zheng.
1917
1918Fixed/Reverted a regression during processing of resource descriptors
1919that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
1920exception in this case.
1921
1922Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
1923I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
1924
1925Interpreter: Fixed a possible fault if an Alias operator with an invalid
1926or duplicate target is encountered during Alias creation in
1927AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
1928
1929Added an option to use designated initializers for function pointers.
1930Kees Cook <keescook@google.com>
1931
1932
19332) iASL Compiler/Disassembler and Tools:
1934
1935iASL: Allow compilation of External declarations with target pathnames
1936that refer to existing named objects within the table. Erik Schmauss.
1937
1938iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
1939FieldUnit name also is declared via External in the same table. Erik
1940Schmauss.
1941
1942iASL: Allow existing scope names within pathnames used in External
1943statements. For example:
1944    External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
1945    Device (ABCD)
1946
1947iASL: IORT ACPI table: Implemented changes required to decode the new
1948Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
1949compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
1950
1951Disassembler: Don't abort disassembly on errors from External()
1952statements. Erik Schmauss.
1953
1954Disassembler: fixed a possible fault when one of the Create*Field
1955operators references a Resource Template. ACPICA Bugzilla 1396.
1956
1957iASL: In the source code, resolved some naming inconsistences across the
1958parsing support. Fixes confusion between "Parse Op" and "Parse Node".
1959Adds a new file, aslparseop.c
1960
1961----------------------------------------
196231 May 2017. Summary of changes for version 20170531:
1963
1964
19650) ACPI 6.2 support:
1966
1967The ACPI specification version 6.2 has been released and is available at
1968http://uefi.org/specifications
1969
1970This version of ACPICA fully supports the ACPI 6.2 specification. Changes
1971are summarized below.
1972
1973New ACPI tables (Table Compiler/Disassembler/Templates):
1974    HMAT (Heterogeneous Memory Attributes Table)
1975    WSMT (Windows SMM Security Mitigation Table)
1976    PPTT (Processor Properties Topology Table)
1977
1978New subtables for existing ACPI tables:
1979    HEST (New subtable, Arch-deferred machine check)
1980    SRAT (New subtable, Arch-specific affinity structure)
1981    PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
1982
1983Simple updates for existing ACPI tables:
1984    BGRT (two new flag bits)
1985    HEST (New bit defined for several subtables, GHES_ASSIST)
1986
1987New Resource Descriptors and Resource macros (Compiler/Disassembler):
1988    PinConfig()
1989    PinFunction()
1990    PinGroup()
1991    PinGroupConfig()
1992    PinGroupFunction()
1993    New type for hardware error notification (section 18.3.2.9)
1994
1995New predefined names/methods (Compiler/Interpreter):
1996    _HMA (Heterogeneous Memory Attributes)
1997    _LSI (Label Storage Information)
1998    _LSR (Label Storage Read)
1999    _LSW (Label Storage Write)
2000
2001ASL grammar/macro changes (Compiler):
2002    For() ASL macro, implemented with the AML while operator
2003    Extensions to Concatenate operator
2004    Support for multiple definition blocks in same ASL file
2005    Clarification for Buffer operator
2006    Allow executable AML code underneath all scopes (Devices, etc.)
2007    Clarification/change for the _OSI return value
2008    ASL grammar update for reference operators
2009    Allow a zero-length string for AML filename in DefinitionBlock
2010
2011Miscellaneous:
2012    New device object notification value
2013    Remove a notify value (0x0C) for graceful shutdown
2014    New UUIDs for processor/cache properties and
2015        physical package property
2016    New _HID, ACPI0014 (Wireless Power Calibration Device)
2017
2018
20191) ACPICA kernel-resident subsystem:
2020
2021Added support to disable ACPI events on hardware-reduced platforms.
2022Eliminates error messages of the form "Could not enable fixed event". Lv
2023Zheng
2024
2025Fixed a problem using Device/Thermal objects with the ObjectType and
2026DerefOf ASL operators. This support had not been fully/properly
2027implemented.
2028
2029Fixed a problem where if a Buffer object containing a resource template
2030was longer than the actual resource template, an error was generated --
2031even though the AML is legal. This case has been seen in the field.
2032
2033Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
2034The values for DUAL_PIC and MULTIPLE_APIC were reversed.
2035
2036Added header file changes for the TPM2 ACPI table. Update to new version
2037of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
2038
2039Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
2040These interfaces are intended to be used only in conjunction with the
2041predefined _DLM method (Device Lock Method). "This object appears in a
2042device scope when AML access to the device must be synchronized with the
2043OS environment".
2044
2045Example Code and Data Size: These are the sizes for the OS-independent
2046acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2047debug version of the code includes the debug output trace mechanism and
2048has a much larger code and data size.
2049
2050  Current Release:
2051    Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
2052    Debug Version:     204.0K Code, 84.3K Data, 288.3K Total
2053  Previous Release:
2054    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
2055    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
2056
2057
20582) iASL Compiler/Disassembler and Tools:
2059
2060iASL: Fixed a problem where an External() declaration could not refer to
2061a Field Unit. Erik Schmauss.
2062
2063Disassembler: Improved support for the Switch/Case operators. This
2064feature will disassemble AML code back to the original Switch operators
2065when possible, instead of an If..Else sequence. David Box
2066
2067iASL and disassembler: Improved the handling of multiple extraneous
2068parentheses for both ASL input and disassembled ASL output.
2069
2070Improved the behavior of the iASL compiler and disassembler to detect
2071improper use of external declarations
2072
2073Disassembler: Now aborts immediately upon detection of an unknown AML
2074opcode. The AML parser has no real way to recover from this, and can
2075result in the creation of an ill-formed parse tree that causes errors
2076later during the disassembly.
2077
2078All tools: Fixed a problem where the Unix application OSL did not handle
2079control-c correctly. For example, a control-c could incorrectly wake the
2080debugger.
2081
2082AcpiExec: Improved the Control-C handling and added a handler for
2083segmentation faults (SIGSEGV). Supports both Windows and Unix-like
2084environments.
2085
2086Reduced the verbosity of the generic unix makefiles. Previously, each
2087compilation displayed the full set of compiler options. This has been
2088eliminated as the options are easily inspected within the makefiles. Each
2089compilation now results in a single line of output.
2090
2091----------------------------------------
209203 March 2017. Summary of changes for version 20170303:
2093
2094
20950) ACPICA licensing:
2096
2097The licensing information at the start of each source code module has
2098been updated. In addition to the Intel license, the dual GPLv2/BSD
2099license has been added for completeness. Now, a single version of the
2100source code should be suitable for all ACPICA customers. This is the
2101major change for this release since it affects all source code modules.
2102
2103
21041) ACPICA kernel-resident subsystem:
2105
2106Fixed two issues with the common asltypes.h header that could cause
2107problems in some environments: (Kim Jung-uk)
2108    Removed typedef for YY_BUFFER_STATE ?
2109       Fixes an error with earlier versions of Flex.
2110    Removed use of FILE typedef (which is only defined in stdio.h)
2111
2112
21132) iASL Compiler/Disassembler and Tools:
2114
2115Disassembler: fixed a regression introduced in 20170224. A fix for a
2116memory leak related to resource descriptor tags (names) could fault when
2117the disassembler was generated with 64-bit compilers.
2118
2119The ASLTS test suite has been updated to implement a new testing
2120architecture. During generation of the suite from ASL source, both the
2121ASL and ASL+ compilers are now validated, as well as the disassembler
2122itself (Erik Schmauss). The architecture executes as follows:
2123
2124    For every ASL source module:
2125        Compile (legacy ASL compilation)
2126        Disassemble the resulting AML to ASL+ source code
2127        Compile the new ASL+ module
2128        Perform a binary compare on the legacy AML and the new ASL+ AML
2129    The ASLTS suite then executes normally using the AML binaries.
2130
2131----------------------------------------
213224 February 2017. Summary of changes for version 20170224:
2133
2134
21351) ACPICA kernel-resident subsystem:
2136
2137Interpreter: Fixed two issues with the control method return value auto-
2138repair feature, where an attempt to double-delete an internal object
2139could result in an ACPICA warning (for _CID repair and others). No fault
2140occurs, however, because the attempted deletion (actually a release to an
2141internal cache) is detected and ignored via object poisoning.
2142
2143Debugger: Fixed an AML interpreter mutex issue during the single stepping
2144of control methods. If certain debugger commands are executed during
2145stepping, a mutex acquire/release error could occur. Lv Zheng.
2146
2147Fixed some issues generating ACPICA with the Intel C compiler by
2148restoring the original behavior and compiler-specific include file in
2149acenv.h. Lv Zheng.
2150
2151Example Code and Data Size: These are the sizes for the OS-independent
2152acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2153debug version of the code includes the debug output trace mechanism and
2154has a much larger code and data size.
2155
2156  Current Release:
2157    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
2158    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
2159  Previous Release:
2160    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2161    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2162
2163
21642) iASL Compiler/Disassembler and Tools:
2165
2166iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
2167tool has been designed, implemented, and included in this release. The
2168key feature of this utility is that the original comments within the
2169input ASL file are preserved during the conversion process, and included
2170within the converted ASL+ file -- thus creating a transparent conversion
2171of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
2172
2173    Usage: iasl -ca <ASL-filename>  // Output is a .dsl file with
2174converted code
2175
2176iASL/Disassembler: Improved the detection and correct disassembly of
2177Switch/Case operators. This feature detects sequences of if/elseif/else
2178operators that originated from ASL Switch/Case/Default operators and
2179emits the original operators. David Box.
2180
2181iASL: Improved the IORT ACPI table support in the following areas. Lv
2182Zheng:
2183    Clear MappingOffset if the MappingCount is zero.
2184    Fix the disassembly of the SMMU GSU interrupt offset.
2185    Update the template file for the IORT table.
2186
2187Disassembler: Enhanced the detection and disassembly of resource
2188template/descriptor within a Buffer object. An EndTag descriptor is now
2189required to have a zero second byte, since all known ASL compilers emit
2190this. This helps eliminate incorrect decisions when a buffer is
2191disassembled (false positives on resource templates).
2192
2193----------------------------------------
219419 January 2017. Summary of changes for version 20170119:
2195
2196
21971) General ACPICA software:
2198
2199Entire source code base: Added the 2017 copyright to all source code
2200legal/licensing module headers and utility/tool signons. This includes
2201the standard Linux dual-license header. This affects virtually every file
2202in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
2203the ACPICA test suite.
2204
2205
22062) iASL Compiler/Disassembler and Tools:
2207
2208iASL: Removed/fixed an inadvertent remark when a method argument
2209containing a reference is used as a target operand within the method (and
2210never used as a simple argument), as in the example below. Jeffrey Hugo.
2211
2212    dsdt.asl   1507:    Store(0x1, Arg0)
2213    Remark   2146 -                ^ Method Argument is never used (Arg0)
2214
2215All tools: Removed the bit width of the compiler that generated the tool
2216from the common signon for all user space tools. This proved to be
2217confusing and unnecessary. This includes similar removal of HARDWARE_NAME
2218from the generic makefiles (Thomas Petazzoni). Example below.
2219
2220    Old:
2221    ASL+ Optimizing Compiler version 20170119-32
2222    ASL+ Optimizing Compiler version 20170119-64
2223
2224    New:
2225    ASL+ Optimizing Compiler version 20170119
2226
2227----------------------------------------
222822 December 2016. Summary of changes for version 20161222:
2229
2230
22311) ACPICA kernel-resident subsystem:
2232
2233AML Debugger: Implemented a new mechanism to simplify and enhance
2234debugger integration into all environments, including kernel debuggers
2235and user-space utilities, as well as remote debug services. This
2236mechanism essentially consists of new OSL interfaces to support debugger
2237initialization/termination, as well as wait/notify interfaces to perform
2238the debugger handshake with the host. Lv Zheng.
2239
2240    New OSL interfaces:
2241        AcpiOsInitializeDebugger (void)
2242        AcpiOsTerminateDebugger (void)
2243        AcpiOsWaitCommandReady (void)
2244        AcpiOsNotifyCommandComplete (void)
2245
2246    New OS services layer:
2247        osgendbg.c -- Example implementation, and used for AcpiExec
2248
2249Update for Generic Address Space (GAS) support: Although the AccessWidth
2250and/or BitOffset fields of the GAS are not often used, this change now
2251fully supports these fields. This affects the internal support for FADT
2252registers, registers in other ACPI data tables, and the AcpiRead and
2253AcpiWrite public interfaces. Lv Zheng.
2254
2255Sleep support: In order to simplify integration of ACPI sleep for the
2256various host operating systems, a new OSL interface has been introduced.
2257AcpiOsEnterSleep allows the host to perform any required operations
2258before the final write to the sleep control register(s) is performed by
2259ACPICA. Lv Zheng.
2260
2261    New OSL interface:
2262        AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
2263
2264    Called from these internal interfaces:
2265        AcpiHwLegacySleep
2266        AcpiHwExtendedSleep
2267
2268EFI support: Added a very small EFI/ACPICA example application. Provides
2269a simple demo for EFI integration, as well as assisting with resolution
2270of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
2271
2272    source/tools/efihello/efihello.c
2273
2274Local C library: Implemented several new functions to enhance ACPICA
2275portability, for environments where these clib functions are not
2276available (such as EFI). Lv Zheng:
2277    putchar
2278    getchar
2279    strpbrk
2280    strtok
2281    memmove
2282
2283Fixed a regression where occasionally a valid resource descriptor was
2284incorrectly detected as invalid at runtime, and a
2285AE_AML_NO_RESOURCE_END_TAG was returned.
2286
2287Fixed a problem with the recently implemented support that enables
2288control method invocations as Target operands to many ASL operators.
2289Warnings of this form: "Needed type [Reference], found [Processor]" were
2290seen at runtime for some method invocations.
2291
2292Example Code and Data Size: These are the sizes for the OS-independent
2293acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2294debug version of the code includes the debug output trace mechanism and
2295has a much larger code and data size.
2296
2297  Current Release:
2298    Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
2299    Debug Version:     201.7K Code, 82.7K Data, 284.4K Total
2300  Previous Release:
2301    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
2302    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
2303
2304
23052) iASL Compiler/Disassembler and Tools:
2306
2307Disassembler: Enhanced output by adding the capability to detect and
2308disassemble ASL Switch/Case statements back to the original ASL source
2309code instead of if/else blocks. David Box.
2310
2311AcpiHelp: Split a large file into separate files based upon
2312functionality/purpose. New files are:
2313    ahaml.c
2314    ahasl.c
2315
2316----------------------------------------
231717 November 2016. Summary of changes for version 20161117:
2318
2319
23201) ACPICA kernel-resident subsystem:
2321
2322Table Manager: Fixed a regression introduced in 20160729, "FADT support
2323cleanup". This was an attempt to remove all references in the source to
2324the FADT version 2, which never was a legal version number. It was
2325skipped because it was an early version of 64-bit support that was
2326eventually abandoned for the current 64-bit support.
2327
2328Interpreter: Fixed a problem where runtime implicit conversion was
2329incorrectly disabled for the ASL operators below. This brings the
2330behavior into compliance with the ACPI specification:
2331    FromBCD
2332    ToBCD
2333    ToDecimalString
2334    ToHexString
2335    ToInteger
2336    ToBuffer
2337
2338Table Manager: Added a new public interface, AcpiPutTable, used to
2339release and free an ACPI table returned by AcpiGetTable and related
2340interfaces. Lv Zheng.
2341
2342Example Code and Data Size: These are the sizes for the OS-independent
2343acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2344debug version of the code includes the debug output trace mechanism and
2345has a much larger code and data size.
2346
2347  Current Release:
2348    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
2349    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
2350  Previous Release:
2351    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
2352    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
2353
2354
23552) iASL Compiler/Disassembler and Tools:
2356
2357Disassembler: Fixed a regression for disassembly of Resource Template.
2358Detection of templates in the AML stream missed some types of templates.
2359
2360iASL: Fixed a problem where an Access Size error was returned for the PCC
2361address space when the AccessSize of the GAS register is greater than a
2362DWORD. Hoan Tran.
2363
2364iASL: Implemented several grammar changes for the operators below. These
2365changes are slated for the next version of the ACPI specification:
2366    RefOf        - Disallow method invocation as an operand
2367    CondRefOf    - Disallow method invocation as an operand
2368    DerefOf      - Disallow operands that use the result from operators
2369that
2370                   do not return a reference (Changed TermArg to
2371SuperName).
2372
2373iASL: Control method invocations are now allowed for Target operands, as
2374per the ACPI specification. Removed error for using a control method
2375invocation as a Target operand.
2376
2377Disassembler: Improved detection of Resource Templates, Unicode, and
2378Strings within Buffer objects. These subtypes do not contain a specific
2379opcode to indicate the originating ASL code, and they must be detected by
2380other means within the disassembler.
2381
2382iASL: Implemented an optimization improvement for 32-bit ACPI tables
2383(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
2384only after 64-bit to 32-bit truncation. A truncation warning message is
2385still emitted, however.
2386
2387AcpiXtract: Implemented handling for both types of line terminators (LF
2388or CR/LF) so that it can accept AcpiDump output files from any system.
2389Peter Wu.
2390
2391AcpiBin: Added two new options for comparing AML files:
2392    -a: compare and display ALL mismatches
2393    -o: start compare at this offset into the second file
2394
2395----------------------------------------
239630 September 2016. Summary of changes for version 20160930:
2397
2398
23991) ACPICA kernel-resident subsystem:
2400
2401Fixed a regression in the internal AcpiTbFindTable function where a non
2402AE_OK exception could inadvertently be returned even if the function did
2403not fail. This problem affects the following operators:
2404    DataTableRegion
2405    LoadTable
2406
2407Fixed a regression in the LoadTable operator where a load to any
2408namespace location other than the root no longer worked properly.
2409
2410Increased the maximum loop count value that will result in the
2411AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
2412prevent infinite loops within the AML interpreter and thus the host OS
2413kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
24141,048,575).
2415
2416Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
2417acpixf.h file. This allows hosts to easily configure the maximum loop
2418count at runtime.
2419
2420Removed an illegal character in the strtoul64.c file. This character
2421caused errors with some C compilers.
2422
2423Example Code and Data Size: These are the sizes for the OS-independent
2424acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2425debug version of the code includes the debug output trace mechanism and
2426has a much larger code and data size.
2427
2428  Current Release:
2429    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
2430    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
2431  Previous Release:
2432    Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
2433    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
2434
2435
24362) iASL Compiler/Disassembler and Tools:
2437
2438Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
2439the simpler ASL ElseIf keyword. During the conversion, a trailing If
2440block could be lost and missing from the disassembled output.
2441
2442iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
2443the missing rule caused a parse error when using the Index operator as an
2444operand to ObjectType. This construct now compiles properly. Example:
2445    ObjectType(PKG1[4]).
2446
2447iASL: Correctly handle unresolved symbols in the hardware map file (-lm
2448option). Previously, unresolved symbols could cause a protection fault.
2449Such symbols are now marked as unresolved in the map file.
2450
2451iASL: Implemented support to allow control method invocations as an
2452operand to the ASL DeRefOf operator. Example:
2453    DeRefOf(MTH1(Local0))
2454
2455Disassembler: Improved support for the ToPLD ASL macro. Detection of a
2456possible _PLD buffer now includes examination of both the normal buffer
2457length (16 or 20) as well as the surrounding AML package length.
2458
2459Disassembler: Fixed a problem with the decoding of complex expressions
2460within the Divide operator for ASL+. For the case where both the quotient
2461and remainder targets are specified, the entire statement cannot be
2462disassembled. Previously, the output incorrectly contained a mix of ASL-
2463and ASL+ operators. This mixed statement causes a syntax error when
2464compiled. Example:
2465    Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly
2466disassembled to:
2467    Divide (INT1 + 6, 128, RSLT, QUOT)
2468
2469iASL/Tools: Added support to process AML and non-AML ACPI tables
2470consistently. For the disassembler and AcpiExec, allow all types of ACPI
2471tables (AML and data tables). For the iASL -e option, allow only AML
2472tables (DSDT/SSDT).
2473
2474----------------------------------------
247531 August 2016. Summary of changes for version 20160831:
2476
2477
24781) ACPICA kernel-resident subsystem:
2479
2480Improve support for the so-called "module-level code", which is defined
2481to be math, logical and control AML opcodes that appear outside of any
2482control method. This change improves the support by adding more opcodes
2483that can be executed in the manner. Some other issues have been solved,
2484and the ASL grammar changes to support such code under all scope
2485operators (Device, etc.) are complete. Lv Zheng.
2486
2487UEFI support: these OSL functions have been implemented. This is an
2488additional step toward supporting the AcpiExec utility natively (with
2489full hardware access) under UEFI. Marcelo Ferreira.
2490    AcpiOsReadPciConfiguration
2491    AcpiOsWritePciConfiguration
2492
2493Fixed a possible mutex error during control method auto-serialization. Lv
2494Zheng.
2495
2496Updated support for the Generic Address Structure by fully implementing
2497all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
2498Zheng.
2499
2500Updated the return value for the internal _OSI method. Instead of
25010xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
2502for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
2503implementations, and will be reflected and clarified in the next version
2504of the ACPI specification.
2505
2506Implemented two new table events that can be passed to an ACPICA table
2507handler. These events are used to indicate a table installation or
2508uninstallation. These events are used in addition to existed table load
2509and unload events. Lv Zheng.
2510
2511Implemented a cleanup for all internal string-to-integer conversions.
2512Consolidate multiple versions of this functionality and limit possible
2513bases to either 10 or 16 to simplify the code. Adds a new file,
2514utstrtoul64.
2515
2516Cleanup the inclusion order of the various compiler-specific headers.
2517This simplifies build configuration management. The compiler-specific
2518headers are now split out from the host-specific headers. Lv Zheng.
2519
2520Example Code and Data Size: These are the sizes for the OS-independent
2521acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2522debug version of the code includes the debug output trace mechanism and
2523has a much larger code and data size.
2524
2525  Current Release:
2526    Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
2527    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
2528
2529
25302) iASL Compiler/Disassembler and Tools:
2531
2532iASL/AcpiExec: Added a command line option to display the build date/time
2533of the tool (-vd). This can be useful to verify that the correct version
2534of the tools are being used.
2535
2536AML Debugger: Implemented a new subcommand ("execute predef") to execute
2537all predefined control methods and names within the current namespace.
2538This can be useful for debugging problems with ACPI tables and the ACPI
2539namespace.
2540
2541----------------------------------------
254229 July 2016. Summary of changes for version 20160729:
2543
2544
25451) ACPICA kernel-resident subsystem:
2546
2547Implemented basic UEFI support for the various ACPICA tools. This
2548includes:
25491) An OSL to implement the various AcpiOs* interfaces on UEFI.
25502) Support to obtain the ACPI tables on UEFI.
25513) Local implementation of required C library functions not available on
2552UEFI.
25534) A front-end (main) function for the tools for UEFI-related
2554initialization.
2555
2556The initial deployment of this support is the AcpiDump utility executing
2557as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
2558Current environments supported are Linux/Unix. MSVC generation is not
2559supported at this time. See the generate/efi/README file for build
2560instructions. Lv Zheng.
2561
2562Future plans include porting the AcpiExec utility to execute natively on
2563the platform with I/O and memory access. This will allow viewing/dump of
2564the platform namespace and native execution of ACPI control methods that
2565access the actual hardware. To fully implement this support, the OSL
2566functions below must be implemented with UEFI interfaces. Any community
2567help in the implementation of these functions would be appreciated:
2568    AcpiOsReadPort
2569    AcpiOsWritePort
2570    AcpiOsReadMemory
2571    AcpiOsWriteMemory
2572    AcpiOsReadPciConfiguration
2573    AcpiOsWritePciConfiguration
2574
2575Restructured and standardized the C library configuration for ACPICA,
2576resulting in the various configuration options below. This includes a
2577global restructuring of the compiler-dependent and platform-dependent
2578include files. These changes may affect the existing platform-dependent
2579configuration files on some hosts. Lv Zheng.
2580
2581The current C library configuration options appear below. For any issues,
2582it may be helpful to examine the existing compiler-dependent and
2583platform-dependent files as examples. Lv Zheng.
2584
25851) Linux kernel:
2586    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2587library.
2588    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
25892) Unix/Windows/BSD applications:
2590    ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
2591library.
2592    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
25933) UEFI applications:
2594    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2595library.
2596    ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
25974) UEFI applications (EDK2/StdLib):
2598    ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
2599    ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
2600
2601
2602AML interpreter: "module-level code" support. Allows for execution of so-
2603called "executable" AML code (math/logical operations, etc.) outside of
2604control methods not just at the module level (top level) but also within
2605any scope declared outside of a control method - Scope{}, Device{},
2606Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
2607
2608Simplified the configuration of the "maximum AML loops" global option by
2609adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
2610modified at runtime.
2611
2612
2613Example Code and Data Size: These are the sizes for the OS-independent
2614acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2615debug version of the code includes the debug output trace mechanism and
2616has a much larger code and data size.
2617
2618  Current Release:
2619    Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
2620    Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
2621
2622
26232) iASL Compiler/Disassembler and Tools:
2624
2625iASL: Add full support for the RASF ACPI table (RAS Features Table).
2626Includes disassembler, data table compiler, and header support.
2627
2628iASL Expand "module-level code" support. Allows for
2629compilation/disassembly of so-called "executable" AML code (math/logical
2630operations, etc.) outside of control methods not just at the module level
2631(top level) but also within any scope declared outside of a control
2632method - Scope{}, Device{}, Processor{}, PowerResource{}, and
2633ThermalZone{}.
2634
2635AcpiDump: Added support for dumping all SSDTs on newer versions of
2636Windows. These tables are now easily available -- SSDTs are not available
2637through the registry on older versions.
2638
2639----------------------------------------
264027 May 2016. Summary of changes for version 20160527:
2641
2642
26431) ACPICA kernel-resident subsystem:
2644
2645Temporarily reverted the new arbitrary bit length/alignment support in
2646AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
2647a number of regressions with the new code that need to be fully resolved
2648and tested before this support can be finally integrated into ACPICA.
2649Apologies for any inconveniences these issues may have caused.
2650
2651The ACPI message macros are not configurable (ACPI_MSG_ERROR,
2652ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
2653and ACPI_MSG_BIOS_WARNING). Lv Zheng.
2654
2655Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
2656option. Adds a new return macro, return_STR. Junk-uk Kim.
2657
2658Example Code and Data Size: These are the sizes for the OS-independent
2659acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2660debug version of the code includes the debug output trace mechanism and
2661has a much larger code and data size.
2662
2663  Current Release:
2664    Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
2665    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2666  Previous Release:
2667    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2668    Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
2669
2670----------------------------------------
267122 April 2016. Summary of changes for version 20160422:
2672
26731) ACPICA kernel-resident subsystem:
2674
2675Fixed a regression in the GAS (generic address structure) arbitrary bit
2676support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
2677and incorrect return values. Lv Zheng. ACPICA BZ 1270.
2678
2679ACPI 6.0: Added support for new/renamed resource macros. One new argument
2680was added to each of these macros, and the original name has been
2681deprecated. The AML disassembler will always disassemble to the new
2682names. Support for the new macros was added to iASL, disassembler,
2683resource manager, and the acpihelp utility. ACPICA BZ 1274.
2684
2685    I2cSerialBus  -> I2cSerialBusV2
2686    SpiSerialBus  -> SpiSerialBusV2
2687    UartSerialBus -> UartSerialBusV2
2688
2689ACPI 6.0: Added support for a new integer field that was appended to the
2690package object returned by the _BIX method. This adds iASL compile-time
2691and AML runtime error checking. ACPICA BZ 1273.
2692
2693ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
2694Subspace Type2" (Headers, Disassembler, and data table compiler).
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: 137.4K Code, 52.6K Data, 190.0K Total
2703    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2704  Previous Release:
2705    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2706    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2707
2708
27092) iASL Compiler/Disassembler and Tools:
2710
2711iASL: Implemented an ASL grammar extension to allow/enable executable
2712"module-level code" to be created and executed under the various
2713operators that create new scopes. This type of AML code is already
2714supported in all known AML interpreters, and the grammar change will
2715appear in the next version of the ACPI specification. Simplifies the
2716conditional runtime creation of named objects under these object types:
2717
2718    Device
2719    PowerResource
2720    Processor
2721    Scope
2722    ThermalZone
2723
2724iASL: Implemented a new ASL extension, a "For" loop macro to add greater
2725ease-of-use to the ASL language. The syntax is similar to the
2726corresponding C operator, and is implemented with the existing AML While
2727opcode -- thus requiring no changes to existing AML interpreters.
2728
2729    For (Initialize, Predicate, Update) {TermList}
2730
2731Grammar:
2732    ForTerm :=
2733        For (
2734            Initializer    // Nothing | TermArg => ComputationalData
2735            Predicate      // Nothing | TermArg => ComputationalData
2736            Update         // Nothing | TermArg => ComputationalData
2737        ) {TermList}
2738
2739
2740iASL: The _HID/_ADR detection and validation has been enhanced to search
2741under conditionals in order to allow these objects to be conditionally
2742created at runtime.
2743
2744iASL: Fixed several issues with the constant folding feature. The
2745improvement allows better detection and resolution of statements that can
2746be folded at compile time. ACPICA BZ 1266.
2747
2748iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
2749conversion to the ASL ElseIf operator where incorrect ASL code could be
2750generated.
2751
2752iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
2753sometimes an extra (and extraneous) set of parentheses were emitted for
2754some combinations of operators. Although this did not cause any problems
2755with recompilation of the disassembled code, it made the code more
2756difficult to read. David Box. ACPICA BZ 1231.
2757
2758iASL: Changed to ignore the unreferenced detection for predefined names
2759of resource descriptor elements, when the resource descriptor is
2760created/defined within a control method.
2761
2762iASL: Disassembler: Fix a possible fault with externally declared Buffer
2763objects.
2764
2765----------------------------------------
276618 March 2016. Summary of changes for version 20160318:
2767
27681) ACPICA kernel-resident subsystem:
2769
2770Added support for arbitrary bit lengths and bit offsets for registers
2771defined by the Generic Address Structure. Previously, only aligned bit
2772lengths of 8/16/32/64 were supported. This was sufficient for many years,
2773but recently some machines have been seen that require arbitrary bit-
2774level support. ACPICA BZ 1240. Lv Zheng.
2775
2776Fixed an issue where the \_SB._INI method sometimes must be evaluated
2777before any _REG methods are evaluated. Lv Zheng.
2778
2779Implemented several changes related to ACPI table support
2780(Headers/Disassembler/TableCompiler):
2781NFIT: For ACPI 6.1, updated to add some additional new fields and
2782constants.
2783FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
27846).
2785DMAR: Added new constants per the 10/2014 DMAR spec.
2786IORT: Added new subtable per the 10/2015 IORT spec.
2787HEST: For ACPI 6.1, added new constants and new subtable.
2788DBG2: Added new constants per the 12/2015 DBG2 spec.
2789FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
2790ACPICA BZ 1249.
2791ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
2792
2793Updated header support for the DMAR table to match the current version of
2794the related spec.
2795
2796Added extensions to the ASL Concatenate operator to allow any ACPI object
2797to be passed as an operand. Any object other than Integer/String/Buffer
2798simply returns a string containing the object type. This extends the
2799usefulness of the Printf macros. Previously, Concatenate would abort the
2800control method if a non-data object was encountered.
2801
2802ACPICA source code: Deployed the C "const" keyword across the source code
2803where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
2804
2805Example Code and Data Size: These are the sizes for the OS-independent
2806acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2807debug version of the code includes the debug output trace mechanism and
2808has a much larger code and data size.
2809
2810  Current Release:
2811    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2812    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2813  Previous Release:
2814    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2815    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
2816
2817
28182) iASL Compiler/Disassembler and Tools:
2819
2820iASL/Disassembler: Improved the heuristic used to determine the number of
2821arguments for an externally defined control method (a method in another
2822table). Although this is an improvement, there is no deterministic way to
2823"guess" the number of method arguments. Only the ACPI 6.0 External opcode
2824will completely solve this problem as it is deployed (automatically) in
2825newer BIOS code.
2826
2827iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
2828statements that could cause errors when the disassembled file is
2829compiled. ACPICA BZ 1243. David Box.
2830
2831iASL: Fixed a regression caused by the merger of the two versions of the
2832local strtoul64. Because of a dependency on a global variable, strtoul64
2833could return an error for integers greater than a 32-bit value. ACPICA BZ
28341260.
2835
2836iASL: Fixed a regression where a fault could occur for an ASL Return
2837statement if it invokes a control method that is not resolved. ACPICA BZ
28381264.
2839
2840AcpiXtract: Improved input file validation: detection of binary files and
2841non-acpidump text files.
2842
2843----------------------------------------
284412 February 2016. Summary of changes for version 20160212:
2845
28461) ACPICA kernel-resident subsystem:
2847
2848Implemented full support for the ACPI 6.1 specification (released in
2849January). This version of the specification is available at:
2850http://www.uefi.org/specifications
2851
2852Only a relatively small number of changes were required in ACPICA to
2853support ACPI 6.1, in these areas:
2854- New predefined names
2855- New _HID values
2856- A new subtable for HEST
2857- A few other header changes for new values
2858
2859Ensure \_SB_._INI is executed before any _REG methods are executed. There
2860appears to be existing BIOS code that relies on this behavior. Lv Zheng.
2861
2862Reverted a change made in version 20151218 which enabled method
2863invocations to be targets of various ASL operators (SuperName and Target
2864grammar elements). While the new behavior is supported by the ACPI
2865specification, other AML interpreters do not support this behavior and
2866never will. The ACPI specification will be updated for ACPI 6.2 to remove
2867this support. Therefore, the change was reverted to the original ACPICA
2868behavior.
2869
2870ACPICA now supports the GCC 6 compiler.
2871
2872Current Release: (Note: build changes increased sizes)
2873    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2874    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
2875Previous Release:
2876    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2877    Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
2878
2879
28802) iASL Compiler/Disassembler and Tools:
2881
2882Completed full support for the ACPI 6.0 External() AML opcode. The
2883compiler emits an external AML opcode for each ASL External statement.
2884This opcode is used by the disassembler to assist with the disassembly of
2885external control methods by specifying the required number of arguments
2886for the method. AML interpreters do not use this opcode. To ensure that
2887interpreters do not even see the opcode, a block of one or more external
2888opcodes is surrounded by an "If(0)" construct. As this feature becomes
2889commonly deployed in BIOS code, the ability of disassemblers to correctly
2890disassemble AML code will be greatly improved. David Box.
2891
2892iASL: Implemented support for an optional cross-reference output file.
2893The -lx option will create a the cross-reference file with the suffix
2894"xrf". Three different types of cross-reference are created in this file:
2895- List of object references made from within each control method
2896- Invocation (caller) list for each user-defined control method
2897- List of references to each non-method object in the namespace
2898
2899iASL: Method invocations as ASL Target operands are now disallowed and
2900flagged as errors in preparation for ACPI 6.2 (see the description of the
2901problem above).
2902
2903----------------------------------------
29048 January 2016. Summary of changes for version 20160108:
2905
29061) ACPICA kernel-resident subsystem:
2907
2908Updated all ACPICA copyrights and signons to 2016: Added the 2016
2909copyright to all source code module headers and utility/tool signons.
2910This includes the standard Linux dual-license header. This affects
2911virtually every file in the ACPICA core subsystem, iASL compiler, all
2912ACPICA utilities, and the ACPICA test suite.
2913
2914Fixed a regression introduced in version 20151218 concerning the
2915execution of so-called module-level ASL/AML code. Namespace objects
2916created under a module-level If() construct were not properly/fully
2917entered into the namespace and could cause an interpreter fault when
2918accessed.
2919
2920Example Code and Data Size: These are the sizes for the OS-independent
2921acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2922debug version of the code includes the debug output trace mechanism and
2923has a much larger code and data size.
2924
2925Current Release:
2926    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2927    Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
2928  Previous Release:
2929    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2930    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
2931
2932
29332) iASL Compiler/Disassembler and Tools:
2934
2935Fixed a problem with the compilation of the GpioIo and GpioInt resource
2936descriptors. The _PIN field name was incorrectly defined to be an array
2937of 32-bit values, but the _PIN values are in fact 16 bits each. This
2938would cause incorrect bit width warnings when using Word (16-bit) fields
2939to access the descriptors.
2940
2941
2942----------------------------------------
294318 December 2015. Summary of changes for version 20151218:
2944
29451) ACPICA kernel-resident subsystem:
2946
2947Implemented per-AML-table execution of "module-level code" as individual
2948ACPI tables are loaded into the namespace during ACPICA initialization.
2949In other words, any module-level code within an AML table is executed
2950immediately after the table is loaded, instead of batched and executed
2951after all of the tables have been loaded. This provides compatibility
2952with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
2953David Box.
2954
2955To fully support the feature above, the default operation region handlers
2956for the SystemMemory, SystemIO, and PCI_Config address spaces are now
2957installed before any ACPI tables are loaded. This enables module-level
2958code to access these address spaces during the table load and module-
2959level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
2960Box.
2961
2962Implemented several changes to the internal _REG support in conjunction
2963with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
2964utilities for the changes above. Although these tools were changed, host
2965operating systems that simply use the default handlers for SystemMemory,
2966SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
2967
2968For example, in the code below, DEV1 is conditionally added to the
2969namespace by the DSDT via module-level code that accesses an operation
2970region. The SSDT references DEV1 via the Scope operator. DEV1 must be
2971created immediately after the DSDT is loaded in order for the SSDT to
2972successfully reference DEV1. Previously, this code would cause an
2973AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
2974fully supported by ACPICA.
2975
2976    DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
2977    {
2978        OperationRegion (OPR1, SystemMemory, 0x400, 32)
2979        Field (OPR1, AnyAcc, NoLock, Preserve)
2980        {
2981            FLD1, 1
2982        }
2983        If (FLD1)
2984        {
2985            Device (\DEV1)
2986            {
2987            }
2988        }
2989    }
2990    DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
2991    {
2992        External (\DEV1, DeviceObj)
2993        Scope (\DEV1)
2994        {
2995        }
2996    }
2997
2998Fixed an AML interpreter problem where control method invocations were
2999not handled correctly when the invocation was itself a SuperName argument
3000to another ASL operator. In these cases, the method was not invoked.
3001ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
3002argument:
3003    Store
3004    Acquire, Wait
3005    CondRefOf, RefOf
3006    Decrement, Increment
3007    Load, Unload
3008    Notify
3009    Signal, Release, Reset
3010    SizeOf
3011
3012Implemented automatic String-to-ObjectReference conversion support for
3013packages returned by predefined names (such as _DEP). A common BIOS error
3014is to add double quotes around an ObjectReference namepath, which turns
3015the reference into an unexpected string object. This support detects the
3016problem and corrects it before the package is returned to the caller that
3017invoked the method. Lv Zheng.
3018
3019Implemented extensions to the Concatenate operator. Concatenate now
3020accepts any type of object, it is not restricted to simply
3021Integer/String/Buffer. For objects other than these 3 basic data types,
3022the argument is treated as a string containing the name of the object
3023type. This expands the utility of Concatenate and the Printf/Fprintf
3024macros. ACPICA BZ 1222.
3025
3026Cleaned up the output of the ASL Debug object. The timer() value is now
3027optional and no longer emitted by default. Also, the basic data types of
3028Integer/String/Buffer are simply emitted as their values, without a data
3029type string -- since the data type is obvious from the output. ACPICA BZ
30301221.
3031
3032Example Code and Data Size: These are the sizes for the OS-independent
3033acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3034debug version of the code includes the debug output trace mechanism and
3035has a much larger code and data size.
3036
3037  Current Release:
3038    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
3039    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
3040  Previous Release:
3041    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
3042    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
3043
3044
30452) iASL Compiler/Disassembler and Tools:
3046
3047iASL: Fixed some issues with the ASL Include() operator. This operator
3048was incorrectly defined in the iASL parser rules, causing a new scope to
3049be opened for the code within the include file. This could lead to
3050several issues, including allowing ASL code that is technically illegal
3051and not supported by AML interpreters. Note, this does not affect the
3052related #include preprocessor operator. ACPICA BZ 1212.
3053
3054iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
3055operator is essentially an ASL macro since there is no AML opcode
3056associated with it. The code emitted by the iASL compiler for ElseIf is
3057an Else opcode followed immediately by an If opcode. The disassembler
3058will now emit an ElseIf if it finds an Else immediately followed by an
3059If. This simplifies the decoded ASL, especially for deeply nested
3060If..Else and large Switch constructs. Thus, the disassembled code more
3061closely follows the original source ASL. ACPICA BZ 1211. Example:
3062
3063    Old disassembly:
3064        Else
3065        {
3066            If (Arg0 == 0x02)
3067            {
3068                Local0 = 0x05
3069            }
3070        }
3071
3072    New disassembly:
3073        ElseIf (Arg0 == 0x02)
3074        {
3075            Local0 = 0x05
3076        }
3077
3078AcpiExec: Added support for the new module level code behavior and the
3079early region installation. This required a small change to the
3080initialization, since AcpiExec must install its own operation region
3081handlers.
3082
3083AcpiExec: Added support to make the debug object timer optional. Default
3084is timer disabled. This cleans up the debug object output -- the timer
3085data is rarely used.
3086
3087AcpiExec: Multiple ACPI tables are now loaded in the order that they
3088appear on the command line. This can be important when there are
3089interdependencies/references between the tables.
3090
3091iASL/Templates. Add support to generate template files with multiple
3092SSDTs within a single output file. Also added ommand line support to
3093specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
30941223, 1225.
3095
3096
3097----------------------------------------
309824 November 2015. Summary of changes for version 20151124:
3099
31001) ACPICA kernel-resident subsystem:
3101
3102Fixed a possible regression for a previous update to FADT handling. The
3103FADT no longer has a fixed table ID, causing some issues with code that
3104was hardwired to a specific ID. Lv Zheng.
3105
3106Fixed a problem where the method auto-serialization could interfere with
3107the current SyncLevel. This change makes the auto-serialization support
3108transparent to the SyncLevel support and management.
3109
3110Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
3111interface is intended for early access to the namespace during the
3112initial namespace device discovery walk. The _SUB method has been seen to
3113access operation regions in some cases, causing errors because the
3114operation regions are not fully initialized.
3115
3116AML Debugger: Fixed some issues with the terminate/quit/exit commands
3117that can cause faults. Lv Zheng.
3118
3119AML Debugger: Add thread ID support so that single-step mode only applies
3120to the AML Debugger thread. This prevents runtime errors within some
3121kernels. Lv Zheng.
3122
3123Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
3124methods that are invoked by this interface are optional, removed warnings
3125emitted for the case where one or more of these methods do not exist.
3126ACPICA BZ 1208, original change by Prarit Bhargava.
3127
3128Made a major pass through the entire ACPICA source code base to
3129standardize formatting that has diverged a bit over time. There are no
3130functional changes, but this will of course cause quite a few code
3131differences from the previous ACPICA release.
3132
3133Example Code and Data Size: These are the sizes for the OS-independent
3134acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3135debug version of the code includes the debug output trace mechanism and
3136has a much larger code and data size.
3137
3138  Current Release:
3139    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
3140    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
3141  Previous Release:
3142    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3143    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
3144
3145
31462) iASL Compiler/Disassembler and Tools:
3147
3148iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
3149definition blocks within a single ASL file and the resulting AML file.
3150Support for this type of file was also added to the various tools that
3151use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
3152example code below shows two definition blocks within the same file:
3153
3154    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
31550x12345678)
3156    {
3157    }
3158    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
3159    {
3160    }
3161
3162iASL: Enhanced typechecking for the Name() operator. All expressions for
3163the value of the named object must be reduced/folded to a single constant
3164at compile time, as per the ACPI specification (the AML definition of
3165Name()).
3166
3167iASL: Fixed some code indentation issues for the -ic and -ia options (C
3168and assembly headers). Now all emitted code correctly begins in column 1.
3169
3170iASL: Added an error message for an attempt to open a Scope() on an
3171object defined in an SSDT. The DSDT is always loaded into the namespace
3172first, so any attempt to open a Scope on an SSDT object will fail at
3173runtime.
3174
3175
3176----------------------------------------
317730 September 2015. Summary of changes for version 20150930:
3178
31791) ACPICA kernel-resident subsystem:
3180
3181Debugger: Implemented several changes and bug fixes to assist support for
3182the in-kernel version of the AML debugger. Lv Zheng.
3183- Fix the "predefined" command for in-kernel debugger.
3184- Do not enter debug command loop for the help and version commands.
3185- Disallow "execute" command during execution/single-step of a method.
3186
3187Interpreter: Updated runtime typechecking for all operators that have
3188target operands. The operand is resolved and validated that it is legal.
3189For example, the target cannot be a non-data object such as a Device,
3190Mutex, ThermalZone, etc., as per the ACPI specification.
3191
3192Debugger: Fixed the double-mutex user I/O handshake to work when local
3193deadlock detection is enabled.
3194
3195Debugger: limited display of method locals and arguments (LocalX and
3196ArgX) to only those that have actually been initialized. This prevents
3197lines of extraneous output.
3198
3199Updated the definition of the NFIT table to correct the bit polarity of
3200one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
3201
3202Example Code and Data Size: These are the sizes for the OS-independent
3203acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3204debug version of the code includes the debug output trace mechanism and
3205has a much larger code and data size.
3206
3207  Current Release:
3208    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3209    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
3210  Previous Release:
3211    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
3212    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
3213
3214
32152) iASL Compiler/Disassembler and Tools:
3216
3217iASL: Improved the compile-time typechecking for operands of many of the
3218ASL operators:
3219
3220-- Added an option to disable compiler operand/operator typechecking (-
3221ot).
3222
3223-- For the following operators, the TermArg operands are now validated
3224when possible to be Integer data objects: BankField, OperationRegion,
3225DataTableRegion, Buffer, and Package.
3226
3227-- Store (Source, Target): Both the source and target operands are
3228resolved and checked that the operands are both legal. For example,
3229neither operand can be a non-data object such as a Device, Mutex,
3230ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
3231operator can be used to store an object to any type of target object.
3232
3233-- Store (Source, Target): If the source is a Package object, the target
3234must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
3235is a Package, the source must also be a Package.
3236
3237-- Store (Source, Target): A warning is issued if the source and target
3238resolve to the identical named object.
3239
3240-- Store (Source, <method invocation>): An error is generated for the
3241target method invocation, as this construct is not supported by the AML
3242interpreter.
3243
3244-- For all ASL math and logic operators, the target operand must be a
3245data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
3246includes the function return value also.
3247
3248-- External declarations are also included in the typechecking where
3249possible. External objects defined using the UnknownObj keyword cannot be
3250typechecked, however.
3251
3252iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
3253operator:
3254- Legacy code: Index(PKG1, 3)
3255- New ASL+ code: PKG1[3]
3256This completes the ACPI 6.0 ASL+ support as it was the only operator not
3257supported.
3258
3259iASL: Fixed the file suffix for the preprocessor output file (.i). Two
3260spaces were inadvertently appended to the filename, causing file access
3261and deletion problems on some systems.
3262
3263ASL Test Suite (ASLTS): Updated the master makefile to generate all
3264possible compiler output files when building the test suite -- thus
3265exercising these features of the compiler. These files are automatically
3266deleted when the test suite exits.
3267
3268
3269----------------------------------------
327018 August 2015. Summary of changes for version 20150818:
3271
32721) ACPICA kernel-resident subsystem:
3273
3274Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
3275Zheng. ACPICA BZ 1186.
3276
3277Completed development to ensure that the ACPICA Disassembler and Debugger
3278are fully standalone components of ACPICA. Removed cross-component
3279dependences. Lv Zheng.
3280
3281The max-number-of-AML-loops is now runtime configurable (previously was
3282compile-time only). This is essentially a loop timeout to force-abort
3283infinite AML loops. ACPCIA BZ 1192.
3284
3285Debugger: Cleanup output to dump ACPI names and namepaths without any
3286trailing underscores. Lv Zheng. ACPICA BZ 1135.
3287
3288Removed unnecessary conditional compilations across the Debugger and
3289Disassembler components where entire modules could be left uncompiled.
3290
3291The aapits test is deprecated and has been removed from the ACPICA git
3292tree. The test has never been completed and has not been maintained, thus
3293becoming rather useless. ACPICA BZ 1015, 794.
3294
3295A batch of small changes to close bugzilla and other reports:
3296- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
3297- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
3298- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
3299- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
3300Moore.
3301- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
3302ACPICA BZ 1184.
3303- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
3304operators.
3305- Debugger: Split debugger initialization/termination interfaces. Lv
3306Zheng.
3307- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
3308identification.
3309- AcpiExec: Add debug message during _REG method phase during table
3310load/init.
3311- AcpiNames: Fix a regression where some output was missing and no longer
3312emitted.
3313- Debugger: General cleanup and simplification. Lv Zheng.
3314- Disassembler: Cleanup use of several global option variables. Lv Zheng.
3315
3316Example Code and Data Size: These are the sizes for the OS-independent
3317acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3318debug version of the code includes the debug output trace mechanism and
3319has a much larger code and data size.
3320
3321  Current Release:
3322    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
3323    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
3324  Previous Release:
3325    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
3326    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
3327
3328
33292) iASL Compiler/Disassembler and Tools:
3330
3331AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
3332were not handled properly and caused load errors. Now, properly invoke
3333and use the ACPICA auto-reallocate mechanism for ACPI table data
3334structures. ACPICA BZ 1188
3335
3336AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
3337BZ 1190.
3338
3339AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
3340AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
3341executed during initialization. ACPICA BZ 1187, 1189.
3342
3343iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
3344that corresponds to each disassembled ASL statement, to simplify
3345debugging. ACPICA BZ 1191.
3346
3347Debugger: Add option to the "objects" command to display a summary of the
3348current namespace objects (Object type and count). This is displayed if
3349the command is entered with no arguments.
3350
3351AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
3352
3353
3354----------------------------------------
335517 July 2015. Summary of changes for version 20150717:
3356
33571) ACPICA kernel-resident subsystem:
3358
3359Improved the partitioning between the Debugger and Disassembler
3360components. This allows the Debugger to be used standalone within kernel
3361code without the Disassembler (which is used for single stepping also).
3362This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
3363
3364Debugger: Implemented a new command to trace the execution of control
3365methods (Trace). This is especially useful for the in-kernel version of
3366the debugger when file I/O may not be available for method trace output.
3367See the ACPICA reference for more information. Lv Zheng.
3368
3369Moved all C library prototypes (used for the local versions of these
3370functions when requested) to a new header, acclib.h
3371Cleaned up the use of non-ANSI C library functions. These functions are
3372implemented locally in ACPICA. Moved all such functions to a common
3373source file, utnonansi.c
3374
3375Debugger: Fixed a problem with the "!!" command (get last command
3376executed) where the debugger could enter an infinite loop and eventually
3377crash.
3378
3379Removed the use of local macros that were used for some of the standard C
3380library functions to automatically cast input parameters. This mostly
3381affected the is* functions where the input parameter is defined to be an
3382int. This required a few modifications to the main ACPICA source code to
3383provide casting for these functions and eliminate possible compiler
3384warnings for these parameters.
3385
3386Across the source code, added additional status/error checking to resolve
3387issues discovered by static source code analysis tools such as Coverity.
3388
3389Example Code and Data Size: These are the sizes for the OS-independent
3390acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3391debug version of the code includes the debug output trace mechanism and
3392has a much larger code and data size.
3393
3394  Current Release:
3395    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
3396    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
3397  Previous Release:
3398    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3399    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
3400
3401
34022) iASL Compiler/Disassembler and Tools:
3403
3404iASL: Fixed a regression where the device map file feature no longer
3405worked properly when used in conjunction with the disassembler. It only
3406worked properly with the compiler itself.
3407
3408iASL: Implemented a new warning for method LocalX variables that are set
3409but never used (similar to a C compiler such as gcc). This also applies
3410to ArgX variables that are not defined by the parent method, and are
3411instead (legally) used as local variables.
3412
3413iASL/Preprocessor: Finished the pass-through of line numbers from the
3414preprocessor to the compiler. This ensures that compiler errors/warnings
3415have the correct original line numbers and filenames, regardless of any
3416#include files.
3417
3418iASL/Preprocessor: Fixed a couple of issues with comment handling and the
3419pass-through of comments to the preprocessor output file (which becomes
3420the compiler input file). Also fixed a problem with // comments that
3421appear after a math expression.
3422
3423iASL: Added support for the TCPA server table to the table compiler and
3424template generator. (The client table was already previously supported)
3425
3426iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
3427identify the iASL compiler.
3428
3429Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
3430multiple times. The new names are ACPI_SIGN_NEGATIVE and
3431ACPI_SIGN_POSITIVE.
3432
3433AcpiHelp: Update to expand help messages for the iASL preprocessor
3434directives.
3435
3436
3437----------------------------------------
343819 June 2015. Summary of changes for version 20150619:
3439
3440Two regressions in version 20150616 have been addressed:
3441
3442Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
3443etc.) This update changes ACPICA to only use the standard headers for
3444functions, or the prototypes for the local versions of the C library
3445functions. Across the source code, this required some additional casts
3446for some Clib invocations for portability. Moved all local prototypes to
3447a new file, acclib.h
3448
3449Fixes several problems with recent changes to the handling of the FACS
3450table that could cause some systems not to boot.
3451
3452
3453----------------------------------------
345416 June 2015. Summary of changes for version 20150616:
3455
3456
34571) ACPICA kernel-resident subsystem:
3458
3459Across the entire ACPICA source code base, the various macros for the C
3460library functions (such as ACPI_STRLEN, etc.) have been removed and
3461replaced by the standard C library names (strlen, etc.) The original
3462purpose for these macros is no longer applicable. This simplification
3463reduces the number of macros used in the ACPICA source code
3464significantly, improving readability and maintainability.
3465
3466Implemented support for a new ACPI table, the OSDT. This table, the
3467"override" SDT, can be loaded directly by the host OS at boot time. It
3468enables the replacement of existing namespace objects that were installed
3469via the DSDT and/or SSDTs. The primary purpose for this is to replace
3470buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
3471for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
3472Moore.
3473
3474Added support for systems with (improperly) two FACS tables -- a "32-bit"
3475table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
3476X field). This change will support both automatically. There continues to
3477be systems found with this issue. This support requires a change to the
3478AcpiSetFirmwareWakingVector interface. Also, a public global variable has
3479been added to allow the host to select which FACS is desired
3480(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
3481details Lv Zheng.
3482
3483Added a new feature to allow for systems that do not contain an FACS.
3484Although this is already supported on hardware-reduced platforms, the
3485feature has been extended for all platforms. The reasoning is that we do
3486not want to abort the entire ACPICA initialization just because the
3487system is seriously buggy and has no FACS.
3488
3489Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
3490not correctly transcribed from the ACPI specification in ACPICA version
349120150515.
3492
3493Implemented support for the _CLS object in the AcpiGetObjectInfo external
3494interface.
3495
3496Updated the definitions of the TCPA and TPM2 ACPI tables to the more
3497recent TCG ACPI Specification, December 14, 2014. Table disassembler and
3498compiler also updated. Note: The TCPA "server" table is not supported by
3499the disassembler/table-compiler at this time.
3500
3501ACPI 6.0: Added definitions for the new GIC version field in the MADT.
3502
3503Example Code and Data Size: These are the sizes for the OS-independent
3504acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3505debug version of the code includes the debug output trace mechanism and
3506has a much larger code and data size.
3507
3508  Current Release:
3509    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3510    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
3511  Previous Release:
3512    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
3513    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
3514
3515
35162) iASL Compiler/Disassembler and Tools:
3517
3518Disassembler: Fixed a problem with the new symbolic operator disassembler
3519where incorrect ASL code could be emitted in some cases for the "non-
3520commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
3521ShiftRight. The actual problem cases seem to be rather unusual in common
3522ASL code, however. David Box.
3523
3524Modified the linux version of acpidump to obtain ACPI tables from not
3525just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
3526Zheng.
3527
3528iASL: Fixed a problem where the user preprocessor output file (.i)
3529contained extra data that was not expected. The compiler was using this
3530file as a temporary file and passed through #line directives in order to
3531keep compiler error messages in sync with the input file and line number
3532across multiple include files. The (.i) is no longer a temporary file as
3533the compiler uses a new, different file for the original purpose.
3534
3535iASL: Fixed a problem where comments within the original ASL source code
3536file were not passed through to the preprocessor output file, nor any
3537listing files.
3538
3539iASL: Fixed some issues for the handling of the "#include" preprocessor
3540directive and the similar (but not the same) "Include" ASL operator.
3541
3542iASL: Add support for the new OSDT in both the disassembler and compiler.
3543
3544iASL: Fixed a problem with the constant folding support where a Buffer
3545object could be incorrectly generated (incorrectly formed) during a
3546conversion to a Store() operator.
3547
3548AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
3549description text for the _REV predefined name. _REV now permanently
3550returns 2, as per the ACPI 6.0 specification.
3551
3552Debugger: Enhanced the output of the Debug ASL object for references
3553produced by the Index operator. For Buffers and strings, only output the
3554actual byte pointed to by the index. For packages, only print the single
3555package element decoded by the index. Previously, the entire
3556buffer/string/package was emitted.
3557
3558iASL/Table-compiler: Fixed a regression where the "generic" data types
3559were no longer recognized, causing errors.
3560
3561
3562----------------------------------------
356315 May 2015. Summary of changes for version 20150515:
3564
3565This release implements most of ACPI 6.0 as described below.
3566
35671) ACPICA kernel-resident subsystem:
3568
3569Implemented runtime argument checking and return value checking for all
3570new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
3571_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
3572
3573Example Code and Data Size: These are the sizes for the OS-independent
3574acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3575debug version of the code includes the debug output trace mechanism and
3576has a much larger code and data size.
3577
3578  Current Release:
3579    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
3580    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
3581  Previous Release:
3582    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
3583    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
3584
3585
35862) iASL Compiler/Disassembler and Tools:
3587
3588iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
3589names (argument count validation and return value typechecking.)
3590
3591iASL disassembler and table compiler: implemented support for all new
3592ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
3593
3594iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
3595tables: FADT, MADT.
3596
3597iASL preprocessor: Added a new directive to enable inclusion of binary
3598blobs into ASL code. The new directive is #includebuffer. It takes a
3599binary file as input and emits a named ascii buffer object into the ASL
3600code.
3601
3602AcpiHelp: Added support for all new ACPI 6.0 predefined names.
3603
3604AcpiHelp: Added a new option, -d, to display all iASL preprocessor
3605directives.
3606
3607AcpiHelp: Added a new option, -t, to display all known/supported ACPI
3608tables.
3609
3610
3611----------------------------------------
361210 April 2015. Summary of changes for version 20150410:
3613
3614Reverted a change introduced in version 20150408 that caused
3615a regression in the disassembler where incorrect operator
3616symbols could be emitted.
3617
3618
3619----------------------------------------
362008 April 2015. Summary of changes for version 20150408:
3621
3622
36231) ACPICA kernel-resident subsystem:
3624
3625Permanently set the return value for the _REV predefined name. It now
3626returns 2 (was 5). This matches other ACPI implementations. _REV will be
3627deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
3628for ACPI 2.0 and later. It should never be used to differentiate or
3629identify operating systems.
3630
3631Added the "Windows 2015" string to the _OSI support. ACPICA will now
3632return TRUE to a query with this string.
3633
3634Fixed several issues with the local version of the printf function.
3635
3636Added the C99 compiler option (-std=c99) to the Unix makefiles.
3637
3638  Current Release:
3639    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
3640    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
3641  Previous Release:
3642    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3643    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3644
3645
36462) iASL Compiler/Disassembler and Tools:
3647
3648iASL: Implemented an enhancement to the constant folding feature to
3649transform the parse tree to a simple Store operation whenever possible:
3650    Add (2, 3, X) ==> is converted to: Store (5, X)
3651    X = 2 + 3     ==> is converted to: Store (5, X)
3652
3653Updated support for the SLIC table (Software Licensing Description Table)
3654in both the Data Table compiler and the disassembler. The SLIC table
3655support now conforms to "Microsoft Software Licensing Tables (SLIC and
3656MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
3657following the ACPI header is now defined to be "Proprietary Data", and as
3658such, can only be entered or displayed as a hex data block.
3659
3660Implemented full support for the MSDM table as described in the document
3661above. Note: The format of MSDM is similar to SLIC. Any MSDM data
3662following the ACPI header is defined to be "Proprietary Data", and can
3663only be entered or displayed as a hex data block.
3664
3665Implemented the -Pn option for the iASL Table Compiler (was only
3666implemented for the ASL compiler). This option disables the iASL
3667preprocessor.
3668
3669Disassembler: For disassembly of Data Tables, added a comment field
3670around the Ascii equivalent data that is emitted as part of the "Raw
3671Table Data" block. This prevents the iASL Preprocessor from possible
3672confusion if/when the table is compiled.
3673
3674Disassembler: Added an option (-df) to force the disassembler to assume
3675that the table being disassembled contains valid AML. This feature is
3676useful for disassembling AML files that contain ACPI signatures other
3677than DSDT or SSDT (such as OEMx or other signatures).
3678
3679Changes for the EFI version of the tools:
36801) Fixed a build error/issue
36812) Fixed a cast warning
3682
3683iASL: Fixed a path issue with the __FILE__ operator by making the
3684directory prefix optional within the internal SplitInputFilename
3685function.
3686
3687Debugger: Removed some unused global variables.
3688
3689Tests: Updated the makefile for proper generation of the AAPITS suite.
3690
3691
3692----------------------------------------
369304 February 2015. Summary of changes for version 20150204:
3694
3695ACPICA kernel-resident subsystem:
3696
3697Updated all ACPICA copyrights and signons to 2014. Added the 2014
3698copyright to all module headers and signons, including the standard Linux
3699header. This affects virtually every file in the ACPICA core subsystem,
3700iASL compiler, all ACPICA utilities, and the test suites.
3701
3702Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
3703A raw gpe handling mechanism was created to allow better handling of GPE
3704storms that aren't easily managed by the normal handler. The raw handler
3705allows disabling/renabling of the the GPE so that interrupt storms can be
3706avoided in cases where events cannot be timely serviced. In this
3707scenario, handlers should use the AcpiSetGpe() API to disable/enable the
3708GPE. This API will leave the reference counts undisturbed, thereby
3709preventing unintentional clearing of the GPE when the intent in only to
3710temporarily disable it. Raw handlers allow enabling and disabling of a
3711GPE by removing GPE register locking. As such, raw handlers much provide
3712their own locks while using GPE API's to protect access to GPE data
3713structures.
3714Lv Zheng
3715
3716Events: Always modify GPE registers under the GPE lock.
3717Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
3718values. Reported as bug by joe.liu@apple.com.
3719
3720Unix makefiles: Separate option to disable optimizations and
3721_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
3722NOOPT disable option and creates a separate flag (NOFORTIFY) for this
3723purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
3724errors when building ACPICA. This allows disabling the option without
3725also having to disable optimazations.
3726David Box
3727
3728  Current Release:
3729    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3730    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
3731
3732--
3733--------------------------------------
373407 November 2014. Summary of changes for version 20141107:
3735
3736This release is available at https://acpica.org/downloads
3737
3738This release introduces and implements language extensions to ASL that
3739provide support for symbolic ("C-style") operators and expressions. These
3740language extensions are known collectively as ASL+.
3741
3742
37431) iASL Compiler/Disassembler and Tools:
3744
3745Disassembler: Fixed a problem with disassembly of the UartSerialBus
3746macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
3747Box.
3748
3749Disassembler: Fixed the Unicode macro support to add escape sequences.
3750All non-printable ASCII values are emitted as escape sequences, as well
3751as the standard escapes for quote and backslash. Ensures that the
3752disassembled macro can be correctly recompiled.
3753
3754iASL: Added Printf/Fprintf macros for formatted output. These macros are
3755translated to existing AML Concatenate and Store operations. Printf
3756writes to the ASL Debug object. Fprintf allows the specification of an
3757ASL name as the target. Only a single format specifier is required, %o,
3758since the AML interpreter dynamically converts objects to the required
3759type. David E. Box.
3760
3761    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3762                 (Concatenate (Concatenate (Concatenate ("", Arg0),
3763                 ": Unexpected value for "), Arg1), ", "), Arg2),
3764                 " at line "), Arg3), Debug)
3765
3766    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
3767                 Arg0, Arg1, Arg2, Arg3)
3768
3769    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3770                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
3771
3772    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
3773
3774iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
3775ASL parse tree before the AML code is generated. This allows blocks of
3776ASL code to be removed in order to help locate and identify problem
3777devices and/or code. David E. Box.
3778
3779AcpiExec: Added support (-fi) for an optional namespace object
3780initialization file. This file specifies initial values for namespace
3781objects as necessary for debugging and testing different ASL code paths
3782that may be taken as a result of BIOS options.
3783
3784
37852) Overview of symbolic operator support for ASL (ASL+)
3786-------------------------------------------------------
3787
3788As an extension to the ASL language, iASL implements support for symbolic
3789(C-style) operators for math and logical expressions. This can greatly
3790simplify ASL code as well as improve both readability and
3791maintainability. These language extensions can exist concurrently with
3792all legacy ASL code and expressions.
3793
3794The symbolic extensions are 100% compatible with existing AML
3795interpreters, since no new AML opcodes are created. To implement the
3796extensions, the iASL compiler transforms the symbolic expressions into
3797the legacy ASL/AML equivalents at compile time.
3798
3799Full symbolic expressions are supported, along with the standard C
3800precedence and associativity rules.
3801
3802Full disassembler support for the symbolic expressions is provided, and
3803creates an automatic migration path for existing ASL code to ASL+ code
3804via the disassembly process. By default, the disassembler now emits ASL+
3805code with symbolic expressions. An option (-dl) is provided to force the
3806disassembler to emit legacy ASL code if desired.
3807
3808Below is the complete list of the currently supported symbolic operators
3809with examples. See the iASL User Guide for additional information.
3810
3811
3812ASL+ Syntax      Legacy ASL Equivalent
3813-----------      ---------------------
3814
3815    // Math operators
3816
3817Z = X + Y        Add (X, Y, Z)
3818Z = X - Y        Subtract (X, Y, Z)
3819Z = X * Y        Multiply (X, Y, Z)
3820Z = X / Y        Divide (X, Y, , Z)
3821Z = X % Y        Mod (X, Y, Z)
3822Z = X << Y       ShiftLeft (X, Y, Z)
3823Z = X >> Y       ShiftRight (X, Y, Z)
3824Z = X & Y        And (X, Y, Z)
3825Z = X | Y        Or (X, Y, Z)
3826Z = X ^ Y        Xor (X, Y, Z)
3827Z = ~X           Not (X, Z)
3828X++              Increment (X)
3829X--              Decrement (X)
3830
3831    // Logical operators
3832
3833(X == Y)         LEqual (X, Y)
3834(X != Y)         LNotEqual (X, Y)
3835(X < Y)          LLess (X, Y)
3836(X > Y)          LGreater (X, Y)
3837(X <= Y)         LLessEqual (X, Y)
3838(X >= Y)         LGreaterEqual (X, Y)
3839(X && Y)         LAnd (X, Y)
3840(X || Y)         LOr (X, Y)
3841(!X)             LNot (X)
3842
3843    // Assignment and compound assignment operations
3844
3845X = Y           Store (Y, X)
3846X += Y          Add (X, Y, X)
3847X -= Y          Subtract (X, Y, X)
3848X *= Y          Multiply (X, Y, X)
3849X /= Y          Divide (X, Y, , X)
3850X %= Y          Mod (X, Y, X)
3851X <<= Y         ShiftLeft (X, Y, X)
3852X >>= Y         ShiftRight (X, Y, X)
3853X &= Y          And (X, Y, X)
3854X |= Y          Or (X, Y, X)
3855X ^= Y          Xor (X, Y, X)
3856
3857
38583) ASL+ Examples:
3859-----------------
3860
3861Legacy ASL:
3862        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
3863            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
38640x03FB),
3865            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
3866        {
3867            And (MEMB, 0xFFFFFFF0, SRMB)
3868            Store (MEMB, Local2)
3869            Store (PDBM, Local1)
3870            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
3871            Store (SRMB, MEMB)
3872            Or (PDBM, 0x02, PDBM)
3873        }
3874
3875ASL+ version:
3876        If (((R510 & 0x03FB) == 0x02E0) ||
3877            ((R520 & 0x03FB) == 0x02E0) ||
3878            ((R530 & 0x03FB) == 0x02E0) ||
3879            ((R540 & 0x03FB) == 0x02E0))
3880        {
3881            SRMB = (MEMB & 0xFFFFFFF0)
3882            Local2 = MEMB
3883            Local1 = PDBM
3884            PDBM &= 0xFFFFFFFFFFFFFFF9
3885            MEMB = SRMB
3886            PDBM |= 0x02
3887        }
3888
3889Legacy ASL:
3890        Store (0x1234, Local1)
3891        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
3892        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
3893        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
3894        Store (Index (PKG1, 0x03), Local6)
3895        Store (Add (Local3, Local2), Debug)
3896        Add (Local1, 0x0F, Local2)
3897        Add (Local1, Multiply (Local2, Local3), Local2)
3898        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
3899
3900ASL+ version:
3901        Local1 = 0x1234
3902        Local3 = (((Local1 + TEST) + 0x20) * Local2)
3903        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
3904        Local3 = (Local1 + (TEST + (0x20 * Local2)))
3905        Local6 = Index (PKG1, 0x03)
3906        Debug = (Local3 + Local2)
3907        Local2 = (Local1 + 0x0F)
3908        Local2 = (Local1 + (Local2 * Local3))
3909        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
3910
3911
3912----------------------------------------
391326 September 2014. Summary of changes for version 20140926:
3914
39151) ACPICA kernel-resident subsystem:
3916
3917Updated the GPIO operation region handler interface (GeneralPurposeIo).
3918In order to support GPIO Connection objects with multiple pins, along
3919with the related Field objects, the following changes to the interface
3920have been made: The Address is now defined to be the offset in bits of
3921the field unit from the previous invocation of a Connection. It can be
3922viewed as a "Pin Number Index" into the connection resource descriptor.
3923The BitWidth is the exact bit width of the field. It is usually one bit,
3924but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
3925additional information and examples.
3926
3927GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
3928corresponding _Lxx/_Exx methods are disabled (they may have been enabled
3929by the firmware), so that they cannot fire until they are enabled via
3930AcpiUpdateAllGpes. Rafael J. Wysocki.
3931
3932Added a new return flag for the Event/GPE status interfaces --
3933AcpiGetEventStatus and AcpiGetGpeStatus. The new
3934ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
3935GPE currently has a handler associated with it, and can thus actually
3936affect the system. Lv Zheng.
3937
3938Example Code and Data Size: These are the sizes for the OS-independent
3939acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3940debug version of the code includes the debug output trace mechanism and
3941has a much larger code and data size.
3942
3943  Current Release:
3944    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
3945    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
3946  Previous Release:
3947    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3948    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3949
39502) iASL Compiler/Disassembler and Tools:
3951
3952iASL: Fixed a memory allocation/free regression introduced in 20140828
3953that could cause the compiler to crash. This was introduced inadvertently
3954during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
39551113.
3956
3957iASL: Removed two error messages that have been found to create false
3958positives, until they can be fixed and fully validated (ACPICA BZ 1112):
39591) Illegal forward reference within a method
39602) Illegal reference across two methods
3961
3962iASL: Implemented a new option (-lm) to create a hardware mapping file
3963that summarizes all GPIO, I2C, SPI, and UART connections. This option
3964works for both the compiler and disassembler. See the iASL compiler user
3965guide for additional information and examples (section 6.4.6).
3966
3967AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
3968version 2. This corrects the AE_BAD_HEADER exception seen on systems with
3969a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
3970
3971AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
3972unless STDIN is actually a terminal. Assists with batch-mode processing.
3973ACPICA BZ 1114.
3974
3975Disassembler/AcpiHelp: Added another large group of recognized _HID
3976values.
3977
3978
3979----------------------------------------
398028 August 2014. Summary of changes for version 20140828:
3981
39821) ACPICA kernel-resident subsystem:
3983
3984Fixed a problem related to the internal use of the Timer() operator where
3985a 64-bit divide could cause an attempted link to a double-precision math
3986library. This divide is not actually necessary, so the code was
3987restructured to eliminate it. Lv Zheng.
3988
3989ACPI 5.1: Added support for the runtime validation of the _DSD package
3990(similar to the iASL support).
3991
3992ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
3993SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
3994
3995Example Code and Data Size: These are the sizes for the OS-independent
3996acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3997debug version of the code includes the debug output trace mechanism and
3998has a much larger code and data size.
3999
4000  Current Release:
4001    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
4002    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
4003  Previous Release:
4004    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
4005    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
4006
40072) iASL Compiler/Disassembler and Tools:
4008
4009AcpiExec: Fixed a problem on unix systems where the original terminal
4010state was not always properly restored upon exit. Seen when using the -v
4011option. ACPICA BZ 1104.
4012
4013iASL: Fixed a problem with the validation of the ranges/length within the
4014Memory24 resource descriptor. There was a boundary condition when the
4015range was equal to the (length -1) caused by the fact that these values
4016are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
4017
4018Disassembler: Fixed a problem with the GpioInt descriptor interrupt
4019polarity
4020flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
4021is
4022now supported properly.
4023
4024ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
4025in the disassembler, data table compiler, and table template generator.
4026
4027iASL: Added a requirement for Device() objects that one of either a _HID
4028or _ADR must exist within the scope of a Device, as per the ACPI
4029specification. Remove a similar requirement that was incorrectly in place
4030for the _DSD object.
4031
4032iASL: Added error detection for illegal named references within control
4033methods that would cause runtime failures. Now trapped as errors are: 1)
4034References to objects within a non-parent control method. 2) Forward
4035references (within a method) -- for control methods, AML interpreters use
4036a one-pass parse of control methods. ACPICA BZ 1008.
4037
4038iASL: Added error checking for dependencies related to the _PSx power
4039methods. ACPICA BZ 1029.
40401) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
4041_PS3.
40422) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
4043scope.
4044
4045iASL and table compiler: Cleanup miscellaneous memory leaks by fully
4046deploying the existing object and string caches and adding new caches for
4047the table compiler.
4048
4049iASL: Split the huge parser source file into multiple subfiles to improve
4050manageability. Generation now requires the M4 macro preprocessor, which
4051is part of the Bison distribution on both unix and windows platforms.
4052
4053AcpiSrc: Fixed and removed all extraneous warnings generated during
4054entire ACPICA source code scan and/or conversion.
4055
4056
4057----------------------------------------
4058
405924 July 2014. Summary of changes for version 20140724:
4060
4061The ACPI 5.1 specification has been released and is available at:
4062http://uefi.org/specs/access
4063
4064
40650) ACPI 5.1 support in ACPICA:
4066
4067ACPI 5.1 is fully supported in ACPICA as of this release.
4068
4069New predefined names. Support includes iASL and runtime ACPICA
4070validation.
4071    _CCA (Cache Coherency Attribute).
4072    _DSD (Device-Specific Data). David Box.
4073
4074Modifications to existing ACPI tables. Support includes headers, iASL
4075Data Table compiler, disassembler, and the template generator.
4076    FADT - New fields and flags. Graeme Gregory.
4077    GTDT - One new subtable and new fields. Tomasz Nowicki.
4078    MADT - Two new subtables. Tomasz Nowicki.
4079    PCCT - One new subtable.
4080
4081Miscellaneous.
4082    New notification type for System Resource Affinity change events.
4083
4084
40851) ACPICA kernel-resident subsystem:
4086
4087Fixed a regression introduced in 20140627 where a fault can happen during
4088the deletion of Alias AML namespace objects. The problem affected both
4089the core ACPICA and the ACPICA tools including iASL and AcpiExec.
4090
4091Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
4092simple mechanism to enable wake GPEs that have no associated handler or
4093control method. Rafael Wysocki.
4094
4095Updated the AcpiEnableGpe interface to disallow the enable if there is no
4096handler or control method associated with the particular GPE. This will
4097help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
4098
4099Updated GPE handling and dispatch by disabling the GPE before clearing
4100the status bit for edge-triggered GPEs. Lv Zheng.
4101
4102Added Timer() support to the AML Debug object. The current timer value is
4103now displayed with each invocation of (Store to) the debug object to
4104enable simple generation of execution times for AML code (method
4105execution for example.) ACPICA BZ 1093.
4106
4107Example Code and Data Size: These are the sizes for the OS-independent
4108acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4109debug version of the code includes the debug output trace mechanism and
4110has a much larger code and data size.
4111
4112  Current Release:
4113    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
4114    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
4115  Previous Release:
4116    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
4117    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
4118
4119
41202) iASL Compiler/Disassembler and Tools:
4121
4122Fixed an issue with the recently added local printf implementation,
4123concerning width/precision specifiers that could cause incorrect output.
4124Lv Zheng. ACPICA BZ 1094.
4125
4126Disassembler: Added support to detect buffers that contain UUIDs and
4127disassemble them to an invocation of the ToUUID operator. Also emit
4128commented descriptions of known ACPI-related UUIDs.
4129
4130AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
4131-u. Adds three new files.
4132
4133iASL: Update table compiler and disassembler for DMAR table changes that
4134were introduced in September 2013. With assistance by David Woodhouse.
4135
4136----------------------------------------
413727 June 2014. Summary of changes for version 20140627:
4138
41391) ACPICA kernel-resident subsystem:
4140
4141Formatted Output: Implemented local versions of standard formatted output
4142utilities such as printf, etc. Over time, it has been discovered that
4143there are in fact many portability issues with printf, and the addition
4144of this feature will fix/prevent these issues once and for all. Some
4145known issues are summarized below:
4146
41471) Output of 64-bit values is not portable. For example, UINT64 is %ull
4148for the Linux kernel and is %uI64 for some MSVC versions.
41492) Invoking printf consistently in a manner that is portable across both
415032-bit and 64-bit platforms is difficult at best in many situations.
41513) The output format for pointers varies from system to system (leading
4152zeros especially), and leads to inconsistent output from ACPICA across
4153platforms.
41544) Certain platform-specific printf formats may conflict with ACPICA use.
41555) If there is no local C library available, ACPICA now has local support
4156for printf.
4157
4158-- To address these printf issues in a complete manner, ACPICA now
4159directly implements a small subset of printf format specifiers, only
4160those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
4161
4162Implemented support for ACPICA generation within the EFI environment.
4163Initially, the AcpiDump utility is supported in the UEFI shell
4164environment. Lv Zheng.
4165
4166Added a new external interface, AcpiLogError, to improve ACPICA
4167portability. This allows the host to redirect error messages from the
4168ACPICA utilities. Lv Zheng.
4169
4170Added and deployed new OSL file I/O interfaces to improve ACPICA
4171portability:
4172  AcpiOsOpenFile
4173  AcpiOsCloseFile
4174  AcpiOsReadFile
4175  AcpiOsWriteFile
4176  AcpiOsGetFileOffset
4177  AcpiOsSetFileOffset
4178There are C library implementations of these functions in the new file
4179service_layers/oslibcfs.c -- however, the functions can be implemented by
4180the local host in any way necessary. Lv Zheng.
4181
4182Implemented a mechanism to disable/enable ACPI table checksum validation
4183at runtime. This can be useful when loading tables very early during OS
4184initialization when it may not be possible to map the entire table in
4185order to compute the checksum. Lv Zheng.
4186
4187Fixed a buffer allocation issue for the Generic Serial Bus support.
4188Originally, a fixed buffer length was used. This change allows for
4189variable-length buffers based upon the protocol indicated by the field
4190access attributes. Reported by Lan Tianyu. Lv Zheng.
4191
4192Fixed a problem where an object detached from a namespace node was not
4193properly terminated/cleared and could cause a circular list problem if
4194reattached. ACPICA BZ 1063. David Box.
4195
4196Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
4197
4198Fixed a possible memory leak in an error return path within the function
4199AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
4200
4201Example Code and Data Size: These are the sizes for the OS-independent
4202acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4203debug version of the code includes the debug output trace mechanism and
4204has a much larger code and data size.
4205
4206  Current Release:
4207    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
4208    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
4209  Previous Release:
4210    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
4211    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
4212
4213
42142) iASL Compiler/Disassembler and Tools:
4215
4216Disassembler: Add dump of ASCII equivalent text within a comment at the
4217end of each line of the output for the Buffer() ASL operator.
4218
4219AcpiDump: Miscellaneous changes:
4220  Fixed repetitive table dump in -n mode.
4221  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
4222the ACPI 2.0 GUID fails.
4223
4224iASL: Fixed a problem where the compiler could fault if incorrectly given
4225an acpidump output file as input. ACPICA BZ 1088. David Box.
4226
4227AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
4228they are invoked without any arguments.
4229
4230Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
42311086. Colin Ian King.
4232
4233Disassembler: Cleaned up a block of code that extracts a parent Op
4234object. Added a comment that explains that the parent is guaranteed to be
4235valid in this case. ACPICA BZ 1069.
4236
4237
4238----------------------------------------
423924 April 2014. Summary of changes for version 20140424:
4240
42411) ACPICA kernel-resident subsystem:
4242
4243Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
4244Some of these tables are known to contain a trailing NULL entry. Lv
4245Zheng.
4246
4247Removed an extraneous error message for the case where there are a large
4248number of system GPEs (> 124). This was the "32-bit FADT register is too
4249long to convert to GAS struct" message, which is irrelevant for GPEs
4250since the GPEx_BLK_LEN fields of the FADT are always used instead of the
4251(limited capacity) GAS bit length. Also, several changes to ensure proper
4252support for GPE numbers > 255, where some "GPE number" fields were 8-bits
4253internally.
4254
4255Implemented and deployed additional configuration support for the public
4256ACPICA external interfaces. Entire classes of interfaces can now be
4257easily modified or configured out, replaced by stubbed inline functions
4258by default. Lv Zheng.
4259
4260Moved all public ACPICA runtime configuration globals to the public
4261ACPICA external interface file for convenience. Also, removed some
4262obsolete/unused globals. See the file acpixf.h. Lv Zheng.
4263
4264Documentation: Added a new section to the ACPICA reference describing the
4265maximum number of GPEs that can be supported by the FADT-defined GPEs in
4266block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
4267reference.
4268
4269Example Code and Data Size: These are the sizes for the OS-independent
4270acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4271debug version of the code includes the debug output trace mechanism and
4272has a much larger code and data size.
4273
4274  Current Release:
4275    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
4276    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
4277  Previous Release:
4278    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
4279    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
4280
4281
42822) iASL Compiler/Disassembler and Tools:
4283
4284iASL and disassembler: Add full support for the LPIT table (Low Power
4285Idle Table). Includes support in the disassembler, data table compiler,
4286and template generator.
4287
4288AcpiDump utility:
42891) Add option to force the use of the RSDT (over the XSDT).
42902) Improve validation of the RSDP signature (use 8 chars instead of 4).
4291
4292iASL: Add check for predefined packages that are too large.  For
4293predefined names that contain subpackages, check if each subpackage is
4294too large. (Check for too small already exists.)
4295
4296Debugger: Updated the GPE command (which simulates a GPE by executing the
4297GPE code paths in ACPICA). The GPE device is now optional, and defaults
4298to the GPE 0/1 FADT-defined blocks.
4299
4300Unix application OSL: Update line-editing support. Add additional error
4301checking and take care not to reset terminal attributes on exit if they
4302were never set. This should help guarantee that the terminal is always
4303left in the previous state on program exit.
4304
4305
4306----------------------------------------
430725 March 2014. Summary of changes for version 20140325:
4308
43091) ACPICA kernel-resident subsystem:
4310
4311Updated the auto-serialize feature for control methods. This feature
4312automatically serializes all methods that create named objects in order
4313to prevent runtime errors. The update adds support to ignore the
4314currently executing AML SyncLevel when invoking such a method, in order
4315to prevent disruption of any existing SyncLevel priorities that may exist
4316in the AML code. Although the use of SyncLevels is relatively rare, this
4317change fixes a regression where an AE_AML_MUTEX_ORDER exception can
4318appear on some machines starting with the 20140214 release.
4319
4320Added a new external interface to allow the host to install ACPI tables
4321very early, before the namespace is even created. AcpiInstallTable gives
4322the host additional flexibility for ACPI table management. Tables can be
4323installed directly by the host as if they had originally appeared in the
4324XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
4325(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
4326with additional internal restructuring and cleanup. See the ACPICA
4327Reference for interface details. Lv Zheng.
4328
4329Added validation of the checksum for all incoming dynamically loaded
4330tables (via external interfaces or via AML Load/LoadTable operators). Lv
4331Zheng.
4332
4333Updated the use of the AcpiOsWaitEventsComplete interface during Notify
4334and GPE handler removal. Restructured calls to eliminate possible race
4335conditions. Lv Zheng.
4336
4337Added a warning for the use/execution of the ASL/AML Unload (table)
4338operator. This will help detect and identify machines that use this
4339operator if and when it is ever used. This operator has never been seen
4340in the field and the usage model and possible side-effects of the drastic
4341runtime action of a full table removal are unknown.
4342
4343Reverted the use of #pragma push/pop which was introduced in the 20140214
4344release. It appears that push and pop are not implemented by enough
4345compilers to make the use of this feature feasible for ACPICA at this
4346time. However, these operators may be deployed in a future ACPICA
4347release.
4348
4349Added the missing EXPORT_SYMBOL macros for the install and remove SCI
4350handler interfaces.
4351
4352Source code generation:
43531) Disabled the use of the "strchr" macro for the gcc-specific
4354generation. For some versions of gcc, this macro can periodically expose
4355a compiler bug which in turn causes compile-time error(s).
43562) Added support for PPC64 compilation. Colin Ian King.
4357
4358Example Code and Data Size: These are the sizes for the OS-independent
4359acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4360debug version of the code includes the debug output trace mechanism and
4361has a much larger code and data size.
4362
4363  Current Release:
4364    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
4365    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
4366  Previous Release:
4367    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
4368    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
4369
4370
43712) iASL Compiler/Disassembler and Tools:
4372
4373Disassembler: Added several new features to improve the readability of
4374the resulting ASL code. Extra information is emitted within comment
4375fields in the ASL code:
43761) Known _HID/_CID values are decoded to descriptive text.
43772) Standard values for the Notify() operator are decoded to descriptive
4378text.
43793) Target operands are expanded to full pathnames (in a comment) when
4380possible.
4381
4382Disassembler: Miscellaneous updates for extern() handling:
43831) Abort compiler if file specified by -fe option does not exist.
43842) Silence unnecessary warnings about argument count mismatches.
43853) Update warning messages concerning unresolved method externals.
43864) Emit "UnknownObj" keyword for externals whose type cannot be
4387determined.
4388
4389AcpiHelp utility:
43901) Added the -a option to display both the ASL syntax and the AML
4391encoding for an input ASL operator. This effectively displays all known
4392information about an ASL operator with one AcpiHelp invocation.
43932) Added substring match support (similar to a wildcard) for the -i
4394(_HID/PNP IDs) option.
4395
4396iASL/Disassembler: Since this tool does not yet support execution on big-
4397endian machines, added detection of endianness and an error message if
4398execution is attempted on big-endian. Support for big-endian within iASL
4399is a feature that is on the ACPICA to-be-done list.
4400
4401AcpiBin utility:
44021) Remove option to extract binary files from an acpidump; this function
4403is made obsolete by the AcpiXtract utility.
44042) General cleanup of open files and allocated buffers.
4405
4406
4407----------------------------------------
440814 February 2014. Summary of changes for version 20140214:
4409
44101) ACPICA kernel-resident subsystem:
4411
4412Implemented a new mechanism to proactively prevent problems with ill-
4413behaved reentrant control methods that create named ACPI objects. This
4414behavior is illegal as per the ACPI specification, but is nonetheless
4415frequently seen in the field. Previously, this could lead to an
4416AE_ALREADY_EXISTS exception if the method was actually entered by more
4417than one thread. This new mechanism detects such methods at table load
4418time and marks them "serialized" to prevent reentrancy. A new global
4419option, AcpiGbl_AutoSerializeMethods, has been added to disable this
4420feature if desired. This mechanism and global option obsoletes and
4421supersedes the previous AcpiGbl_SerializeAllMethods option.
4422
4423Added the "Windows 2013" string to the _OSI support. ACPICA will now
4424respond TRUE to _OSI queries with this string. It is the stated policy of
4425ACPICA to add new strings to the _OSI support as soon as possible after
4426they are defined. See the full ACPICA _OSI policy which has been added to
4427the utilities/utosi.c file.
4428
4429Hardened/updated the _PRT return value auto-repair code:
44301) Do not abort the repair on a single subpackage failure, continue to
4431check all subpackages.
44322) Add check for the minimum subpackage length (4).
44333) Properly handle extraneous NULL package elements.
4434
4435Added support to avoid the possibility of infinite loops when traversing
4436object linked lists. Never allow an infinite loop, even in the face of
4437corrupted object lists.
4438
4439ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
4440pack(pop) directives to ensure that the ACPICA headers are independent of
4441compiler settings or other host headers.
4442
4443Example Code and Data Size: These are the sizes for the OS-independent
4444acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4445debug version of the code includes the debug output trace mechanism and
4446has a much larger code and data size.
4447
4448  Current Release:
4449    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
4450    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
4451  Previous Release:
4452    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
4453    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
4454
4455
44562) iASL Compiler/Disassembler and Tools:
4457
4458iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
4459first reserved field was incorrectly forced to have a value of zero. This
4460change correctly forces the field to have a value of one. ACPICA BZ 1081.
4461
4462Debugger: Added missing support for the "Extra" and "Data" subobjects
4463when displaying object data.
4464
4465Debugger: Added support to display entire object linked lists when
4466displaying object data.
4467
4468iASL: Removed the obsolete -g option to obtain ACPI tables from the
4469Windows registry. This feature has been superseded by the acpidump
4470utility.
4471
4472
4473----------------------------------------
447414 January 2014. Summary of changes for version 20140114:
4475
44761) ACPICA kernel-resident subsystem:
4477
4478Updated all ACPICA copyrights and signons to 2014. Added the 2014
4479copyright to all module headers and signons, including the standard Linux
4480header. This affects virtually every file in the ACPICA core subsystem,
4481iASL compiler, all ACPICA utilities, and the test suites.
4482
4483Improved parameter validation for AcpiInstallGpeBlock. Added the
4484following checks:
44851) The incoming device handle refers to type ACPI_TYPE_DEVICE.
44862) There is not already a GPE block attached to the device.
4487Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
4488device.
4489
4490Correctly support "references" in the ACPI_OBJECT. This change fixes the
4491support to allow references (namespace nodes) to be passed as arguments
4492to control methods via the evaluate object interface. This is probably
4493most useful for testing purposes, however.
4494
4495Improved support for 32/64 bit physical addresses in printf()-like
4496output. This change improves the support for physical addresses in printf
4497debug statements and other output on both 32-bit and 64-bit hosts. It
4498consistently outputs the appropriate number of bytes for each host. The
4499%p specifier is unsatisfactory since it does not emit uniform output on
4500all hosts/clib implementations (on some, leading zeros are not supported,
4501leading to difficult-to-read output).
4502
4503Example Code and Data Size: These are the sizes for the OS-independent
4504acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4505debug version of the code includes the debug output trace mechanism and
4506has a much larger code and data size.
4507
4508  Current Release:
4509    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
4510    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
4511  Previous Release:
4512    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
4513    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
4514
4515
45162) iASL Compiler/Disassembler and Tools:
4517
4518iASL: Fix a possible fault when using the Connection() operator. Fixes a
4519problem if the parent Field definition for the Connection operator refers
4520to an operation region that does not exist. ACPICA BZ 1064.
4521
4522AcpiExec: Load of local test tables is now optional. The utility has the
4523capability to load some various tables to test features of ACPICA.
4524However, there are enough of them that the output of the utility became
4525confusing. With this change, only the required local tables are displayed
4526(RSDP, XSDT, etc.) along with the actual tables loaded via the command
4527line specification. This makes the default output simler and easier to
4528understand. The -el command line option restores the original behavior
4529for testing purposes.
4530
4531AcpiExec: Added support for overlapping operation regions. This change
4532expands the simulation of operation regions by supporting regions that
4533overlap within the given address space. Supports SystemMemory and
4534SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
4535
4536AcpiExec: Added region handler support for PCI_Config and EC spaces. This
4537allows AcpiExec to simulate these address spaces, similar to the current
4538support for SystemMemory and SystemIO.
4539
4540Debugger: Added new command to read/write/compare all namespace objects.
4541The command "test objects" will exercise the entire namespace by writing
4542new values to each data object, and ensuring that the write was
4543successful. The original value is then restored and verified.
4544
4545Debugger: Added the "test predefined" command. This change makes this
4546test public and puts it under the new "test" command. The test executes
4547each and every predefined name within the current namespace.
4548
4549
4550----------------------------------------
455118 December 2013. Summary of changes for version 20131218:
4552
4553Global note: The ACPI 5.0A specification was released this month. There
4554are no changes needed for ACPICA since this release of ACPI is an
4555errata/clarification release. The specification is available at
4556acpi.info.
4557
4558
45591) ACPICA kernel-resident subsystem:
4560
4561Added validation of the XSDT root table if it is present. Some older
4562platforms contain an XSDT that is ill-formed or otherwise invalid (such
4563as containing some or all entries that are NULL pointers). This change
4564adds a new function to validate the XSDT before actually using it. If the
4565XSDT is found to be invalid, ACPICA will now automatically fall back to
4566using the RSDT instead. Original implementation by Zhao Yakui. Ported to
4567ACPICA and enhanced by Lv Zheng and Bob Moore.
4568
4569Added a runtime option to ignore the XSDT and force the use of the RSDT.
4570This change adds a runtime option that will force ACPICA to use the RSDT
4571instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
4572requires that an XSDT be used instead of the RSDT, the XSDT has been
4573found to be corrupt or ill-formed on some machines. Lv Zheng.
4574
4575Added a runtime option to favor 32-bit FADT register addresses over the
457664-bit addresses. This change adds an option to favor 32-bit FADT
4577addresses when there is a conflict between the 32-bit and 64-bit versions
4578of the same register. The default behavior is to use the 64-bit version
4579in accordance with the ACPI specification. This can now be overridden via
4580the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
4581
4582During the change above, the internal "Convert FADT" and "Verify FADT"
4583functions have been merged to simplify the code, making it easier to
4584understand and maintain. ACPICA BZ 933.
4585
4586Improve exception reporting and handling for GPE block installation.
4587Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
4588status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
4589
4590Added helper macros to extract bus/segment numbers from the HEST table.
4591This change adds two macros to extract the encoded bus and segment
4592numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
4593Betty Dall <betty.dall@hp.com>
4594
4595Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
4596by ACPICA. It is not a public macro, so it should have no effect on
4597existing OSV code. Lv Zheng.
4598
4599Example Code and Data Size: These are the sizes for the OS-independent
4600acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4601debug version of the code includes the debug output trace mechanism and
4602has a much larger code and data size.
4603
4604  Current Release:
4605    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
4606    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
4607  Previous Release:
4608    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4609    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4610
4611
46122) iASL Compiler/Disassembler and Tools:
4613
4614Disassembler: Improved pathname support for emitted External()
4615statements. This change adds full pathname support for external names
4616that have been resolved internally by the inclusion of additional ACPI
4617tables (via the iASL -e option). Without this change, the disassembler
4618can emit multiple externals for the same object, or it become confused
4619when the Scope() operator is used on an external object. Overall, greatly
4620improves the ability to actually recompile the emitted ASL code when
4621objects a referenced across multiple ACPI tables. Reported by Michael
4622Tsirkin (mst@redhat.com).
4623
4624Tests/ASLTS: Updated functional control suite to execute with no errors.
4625David Box. Fixed several errors related to the testing of the interpreter
4626slack mode. Lv Zheng.
4627
4628iASL: Added support to detect names that are declared within a control
4629method, but are unused (these are temporary names that are only valid
4630during the time the method is executing). A remark is issued for these
4631cases. ACPICA BZ 1022.
4632
4633iASL: Added full support for the DBG2 table. Adds full disassembler,
4634table compiler, and template generator support for the DBG2 table (Debug
4635Port 2 table).
4636
4637iASL: Added full support for the PCCT table, update the table definition.
4638Updates the PCCT table definition in the actbl3.h header and adds table
4639compiler and template generator support.
4640
4641iASL: Added an option to emit only error messages (no warnings/remarks).
4642The -ve option will enable only error messages, warnings and remarks are
4643suppressed. This can simplify debugging when only the errors are
4644important, such as when an ACPI table is disassembled and there are many
4645warnings and remarks -- but only the actual errors are of real interest.
4646
4647Example ACPICA code (source/tools/examples): Updated the example code so
4648that it builds to an actual working program, not just example code. Added
4649ACPI tables and execution of an example control method in the DSDT. Added
4650makefile support for Unix generation.
4651
4652
4653----------------------------------------
465415 November 2013. Summary of changes for version 20131115:
4655
4656This release is available at https://acpica.org/downloads
4657
4658
46591) ACPICA kernel-resident subsystem:
4660
4661Resource Manager: Fixed loop termination for the "get AML length"
4662function. The loop previously had an error termination on a NULL resource
4663pointer, which can never happen since the loop simply increments a valid
4664resource pointer. This fix changes the loop to terminate with an error on
4665an invalid end-of-buffer condition. The problem can be seen as an
4666infinite loop by callers to AcpiSetCurrentResources with an invalid or
4667corrupted resource descriptor, or a resource descriptor that is missing
4668an END_TAG descriptor. Reported by Dan Carpenter
4669<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
4670
4671Table unload and ACPICA termination: Delete all attached data objects
4672during namespace node deletion. This fix updates namespace node deletion
4673to delete the entire list of attached objects (attached via
4674AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
46751024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
4676
4677ACPICA termination: Added support to delete all objects attached to the
4678root namespace node. This fix deletes any and all objects that have been
4679attached to the root node via AcpiAttachData. Previously, none of these
4680objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
4681
4682Debug output: Do not emit the function nesting level for the in-kernel
4683build. The nesting level is really only useful during a single-thread
4684execution. Therefore, only enable this output for the AcpiExec utility.
4685Also, only emit the thread ID when executing under AcpiExec (Context
4686switches are still always detected and a message is emitted). ACPICA BZ
4687972.
4688
4689Example Code and Data Size: These are the sizes for the OS-independent
4690acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4691debug version of the code includes the debug output trace mechanism and
4692has a much larger code and data size.
4693
4694  Current Release:
4695    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4696    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4697  Previous Release:
4698    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4699    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4700
4701
47022) iASL Compiler/Disassembler and Tools:
4703
4704AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
4705correct portable POSIX header for terminal control functions.
4706
4707Disassembler: Fixed control method invocation issues related to the use
4708of the CondRefOf() operator. The problem is seen in the disassembly where
4709control method invocations may not be disassembled properly if the
4710control method name has been used previously as an argument to CondRefOf.
4711The solution is to not attempt to emit an external declaration for the
4712CondRefOf target (it is not necessary in the first place). This prevents
4713disassembler object type confusion. ACPICA BZ 988.
4714
4715Unix Makefiles: Added an option to disable compiler optimizations and the
4716_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
4717with optimizations (reportedly, gcc 4.4 for example). This change adds a
4718command line option for make (NOOPT) that disables all compiler
4719optimizations and the _FORTIFY_SOURCE compiler flag. The default
4720optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
47211034. Lv Zheng, Bob Moore.
4722
4723Tests/ASLTS: Added options to specify individual test cases and modes.
4724This allows testers running aslts.sh to optionally specify individual
4725test modes and test cases. Also added an option to disable the forced
4726generation of the ACPICA tools from source if desired. Lv Zheng.
4727
4728----------------------------------------
472927 September 2013. Summary of changes for version 20130927:
4730
4731This release is available at https://acpica.org/downloads
4732
4733
47341) ACPICA kernel-resident subsystem:
4735
4736Fixed a problem with store operations to reference objects. This change
4737fixes a problem where a Store operation to an ArgX object that contained
4738a
4739reference to a field object did not complete the automatic dereference
4740and
4741then write to the actual field object. Instead, the object type of the
4742field object was inadvertently changed to match the type of the source
4743operand. The new behavior will actually write to the field object (buffer
4744field or field unit), thus matching the correct ACPI-defined behavior.
4745
4746Implemented support to allow the host to redefine individual OSL
4747prototypes. This change enables the host to redefine OSL prototypes found
4748in the acpiosxf.h file. This allows the host to implement OSL interfaces
4749with a macro or inlined function. Further, it allows the host to add any
4750additional required modifiers such as __iomem, __init, __exit, etc., as
4751necessary on a per-interface basis. Enables maximum flexibility for the
4752OSL interfaces. Lv Zheng.
4753
4754Hardcoded the access width for the FADT-defined reset register. The ACPI
4755specification requires the reset register width to be 8 bits. ACPICA now
4756hardcodes the width to 8 and ignores the FADT width value. This provides
4757compatibility with other ACPI implementations that have allowed BIOS code
4758with bad register width values to go unnoticed. Matthew Garett, Bob
4759Moore,
4760Lv Zheng.
4761
4762Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
4763used
4764in the OSL header (acpiosxf). The change modifies the position of this
4765macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
4766build issues if the OSL defines the implementation of the interface to be
4767an inline stub function. Lv Zheng.
4768
4769Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
4770initialization interfaces. This change adds a new macro for the main init
4771and terminate external interfaces in order to support hosts that require
4772additional or different processing for these functions. Changed from
4773ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
4774Zheng, Bob Moore.
4775
4776Cleaned up the memory allocation macros for configurability. In the
4777common
4778case, the ACPI_ALLOCATE and related macros now resolve directly to their
4779respective AcpiOs* OSL interfaces. Two options:
47801) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
4781default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
47822) For AcpiExec (and for debugging), the macros can optionally be
4783resolved
4784to the local ACPICA interfaces that track each allocation (local tracking
4785is used to immediately detect memory leaks).
4786Lv Zheng.
4787
4788Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
4789to predefine this macro to either TRUE or FALSE during the system build.
4790
4791Replaced __FUNCTION_ with __func__ in the gcc-specific header.
4792
4793Example Code and Data Size: These are the sizes for the OS-independent
4794acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4795debug version of the code includes the debug output trace mechanism and
4796has a much larger code and data size.
4797
4798  Current Release:
4799    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4800    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4801  Previous Release:
4802    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
4803    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4804
4805
48062) iASL Compiler/Disassembler and Tools:
4807
4808iASL: Implemented wildcard support for the -e option. This simplifies use
4809when there are many SSDTs that must be included to resolve external
4810method
4811declarations. ACPICA BZ 1041. Example:
4812    iasl -e ssdt*.dat -d dsdt.dat
4813
4814AcpiExec: Add history/line-editing for Unix/Linux systems. This change
4815adds a portable module that implements full history and limited line
4816editing for Unix and Linux systems. It does not use readline() due to
4817portability issues. Instead it uses the POSIX termio interface to put the
4818terminal in raw input mode so that the various special keys can be
4819trapped
4820(such as up/down-arrow for history support and left/right-arrow for line
4821editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
4822
4823AcpiXtract: Add support to handle (ignore) "empty" lines containing only
4824one or more spaces. This provides compatible with early or different
4825versions of the AcpiDump utility. ACPICA BZ 1044.
4826
4827AcpiDump: Do not ignore tables that contain only an ACPI table header.
4828Apparently, some BIOSs create SSDTs that contain an ACPI table header but
4829no other data. This change adds support to dump these tables. Any tables
4830shorter than the length of an ACPI table header remain in error (an error
4831message is emitted). Reported by Yi Li.
4832
4833Debugger: Echo actual command along with the "unknown command" message.
4834
4835----------------------------------------
483623 August 2013. Summary of changes for version 20130823:
4837
48381) ACPICA kernel-resident subsystem:
4839
4840Implemented support for host-installed System Control Interrupt (SCI)
4841handlers. Certain ACPI functionality requires the host to handle raw
4842SCIs. For example, the "SCI Doorbell" that is defined for memory power
4843state support requires the host device driver to handle SCIs to examine
4844if the doorbell has been activated. Multiple SCI handlers can be
4845installed to allow for future expansion. New external interfaces are
4846AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
4847details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
4848
4849Operation region support: Never locally free the handler "context"
4850pointer. This change removes some dangerous code that attempts to free
4851the handler context pointer in some (rare) circumstances. The owner of
4852the handler owns this pointer and the ACPICA code should never touch it.
4853Although not seen to be an issue in any kernel, it did show up as a
4854problem (fault) under AcpiExec. Also, set the internal storage field for
4855the context pointer to zero when the region is deactivated, simply for
4856sanity. David Box. ACPICA BZ 1039.
4857
4858AcpiRead: On error, do not modify the return value target location. If an
4859error happens in the middle of a split 32/32 64-bit I/O operation, do not
4860modify the target of the return value pointer. Makes the code consistent
4861with the rest of ACPICA. Bjorn Helgaas.
4862
4863Example Code and Data Size: These are the sizes for the OS-independent
4864acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4865debug version of the code includes the debug output trace mechanism and
4866has a much larger code and data size.
4867
4868  Current Release:
4869    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
4870    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4871  Previous Release:
4872    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
4873    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
4874
4875
48762) iASL Compiler/Disassembler and Tools:
4877
4878AcpiDump: Implemented several new features and fixed some problems:
48791) Added support to dump the RSDP, RSDT, and XSDT tables.
48802) Added support for multiple table instances (SSDT, UEFI).
48813) Added option to dump "customized" (overridden) tables (-c).
48824) Fixed a problem where some table filenames were improperly
4883constructed.
48845) Improved some error messages, removed some unnecessary messages.
4885
4886iASL: Implemented additional support for disassembly of ACPI tables that
4887contain invocations of external control methods. The -fe<file> option
4888allows the import of a file that specifies the external methods along
4889with the required number of arguments for each -- allowing for the
4890correct disassembly of the table. This is a workaround for a limitation
4891of AML code where the disassembler often cannot determine the number of
4892arguments required for an external control method and generates incorrect
4893ASL code. See the iASL reference for details. ACPICA BZ 1030.
4894
4895Debugger: Implemented a new command (paths) that displays the full
4896pathnames (namepaths) and object types of all objects in the namespace.
4897This is an alternative to the namespace command.
4898
4899Debugger: Implemented a new command (sci) that invokes the SCI dispatch
4900mechanism and any installed handlers.
4901
4902iASL: Fixed a possible segfault for "too many parent prefixes" condition.
4903This can occur if there are too many parent prefixes in a namepath (for
4904example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
4905
4906Application OSLs: Set the return value for the PCI read functions. These
4907functions simply return AE_OK, but should set the return value to zero
4908also. This change implements this. ACPICA BZ 1038.
4909
4910Debugger: Prevent possible command line buffer overflow. Increase the
4911size of a couple of the debugger line buffers, and ensure that overflow
4912cannot happen. ACPICA BZ 1037.
4913
4914iASL: Changed to abort immediately on serious errors during the parsing
4915phase. Due to the nature of ASL, there is no point in attempting to
4916compile these types of errors, and they typically end up causing a
4917cascade of hundreds of errors which obscure the original problem.
4918
4919----------------------------------------
492025 July 2013. Summary of changes for version 20130725:
4921
49221) ACPICA kernel-resident subsystem:
4923
4924Fixed a problem with the DerefOf operator where references to FieldUnits
4925and BufferFields incorrectly returned the parent object, not the actual
4926value of the object. After this change, a dereference of a FieldUnit
4927reference results in a read operation on the field to get the value, and
4928likewise, the appropriate BufferField value is extracted from the target
4929buffer.
4930
4931Fixed a problem where the _WAK method could cause a fault under these
4932circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
4933method returned no value. The problem is rarely seen because most kernels
4934run ACPICA in slack mode.
4935
4936For the DerefOf operator, a fatal error now results if an attempt is made
4937to dereference a reference (created by the Index operator) to a NULL
4938package element. Provides compatibility with other ACPI implementations,
4939and this behavior will be added to a future version of the ACPI
4940specification.
4941
4942The ACPI Power Management Timer (defined in the FADT) is now optional.
4943This provides compatibility with other ACPI implementations and will
4944appear in the next version of the ACPI specification. If there is no PM
4945Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
4946zero in the FADT indicates no PM timer.
4947
4948Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
4949allows the host to globally enable/disable all vendor strings, all
4950feature strings, or both. Intended to be primarily used for debugging
4951purposes only. Lv Zheng.
4952
4953Expose the collected _OSI data to the host via a global variable. This
4954data tracks the highest level vendor ID that has been invoked by the BIOS
4955so that the host (and potentially ACPICA itself) can change behaviors
4956based upon the age of the BIOS.
4957
4958Example Code and Data Size: These are the sizes for the OS-independent
4959acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4960debug version of the code includes the debug output trace mechanism and
4961has a much larger code and data size.
4962
4963  Current Release:
4964    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
4965    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4966  Previous Release:
4967    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
4968    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
4969
4970
49712) iASL Compiler/Disassembler and Tools:
4972
4973iASL: Created the following enhancements for the -so option (create
4974offset table):
49751)Add offsets for the last nameseg in each namepath for every supported
4976object type
49772)Add support for Processor, Device, Thermal Zone, and Scope objects
49783)Add the actual AML opcode for the parent object of every supported
4979object type
49804)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
4981
4982Disassembler: Emit all unresolved external symbols in a single block.
4983These are external references to control methods that could not be
4984resolved, and thus, the disassembler had to make a guess at the number of
4985arguments to parse.
4986
4987iASL: The argument to the -T option (create table template) is now
4988optional. If not specified, the default table is a DSDT, typically the
4989most common case.
4990
4991----------------------------------------
499226 June 2013. Summary of changes for version 20130626:
4993
49941) ACPICA kernel-resident subsystem:
4995
4996Fixed an issue with runtime repair of the _CST object. Null or invalid
4997elements were not always removed properly. Lv Zheng.
4998
4999Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
5000FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
5001the maximum number of GPEs is 1016. Use of multiple GPE block devices
5002makes the system-wide number of GPEs essentially unlimited.
5003
5004Example Code and Data Size: These are the sizes for the OS-independent
5005acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5006debug version of the code includes the debug output trace mechanism and
5007has a much larger code and data size.
5008
5009  Current Release:
5010    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
5011    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
5012  Previous Release:
5013    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
5014    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
5015
5016
50172) iASL Compiler/Disassembler and Tools:
5018
5019Portable AcpiDump: Implemented full support for the Linux and FreeBSD
5020hosts. Now supports Linux, FreeBSD, and Windows.
5021
5022Disassembler: Added some missing types for the HEST and EINJ tables: "Set
5023Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
5024
5025iASL/Preprocessor: Implemented full support for nested
5026#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
5027
5028Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
5029max. The original purpose of this constraint was to limit the amount of
5030debug output. However, the string function in question (UtPrintString) is
5031now used for the disassembler also, where 256 bytes is insufficient.
5032Reported by RehabMan@GitHub.
5033
5034iASL/DataTables: Fixed some problems and issues with compilation of DMAR
5035tables. ACPICA BZ 999. Lv Zheng.
5036
5037iASL: Fixed a couple of error exit issues that could result in a "Could
5038not delete <file>" message during ASL compilation.
5039
5040AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
5041the actual signatures for these tables are "FACP" and "APIC",
5042respectively.
5043
5044AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
5045tables are allowed to have multiple instances.
5046
5047----------------------------------------
504817 May 2013. Summary of changes for version 20130517:
5049
50501) ACPICA kernel-resident subsystem:
5051
5052Fixed a regression introduced in version 20130328 for _INI methods. This
5053change fixes a problem introduced in 20130328 where _INI methods are no
5054longer executed properly because of a memory block that was not
5055initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
5056<tomasz.nowicki@linaro.org>.
5057
5058Fixed a possible problem with the new extended sleep registers in the
5059ACPI
50605.0 FADT. Do not use these registers (even if populated) unless the HW-
5061reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
50621020. Lv Zheng.
5063
5064Implemented return value repair code for _CST predefined objects: Sort
5065the
5066list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
5067
5068Implemented a debug-only option to disable loading of SSDTs from the
5069RSDT/XSDT during ACPICA initialization. This can be useful for debugging
5070ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
5071acglobal.h - ACPICA BZ 1005. Lv Zheng.
5072
5073Fixed some issues in the ACPICA initialization and termination code:
5074Tomasz Nowicki <tomasz.nowicki@linaro.org>
50751) Clear events initialized flag upon event component termination. ACPICA
5076BZ 1013.
50772) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
50783) Delete global lock pending lock during termination. ACPICA BZ 1012.
50794) Clear debug buffer global on termination to prevent possible multiple
5080delete. ACPICA BZ 1010.
5081
5082Standardized all switch() blocks across the entire source base. After
5083many
5084years, different formatting for switch() had crept in. This change makes
5085the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
5086
5087Split some files to enhance ACPICA modularity and configurability:
50881) Split buffer dump routines into utilities/utbuffer.c
50892) Split internal error message routines into utilities/uterror.c
50903) Split table print utilities into tables/tbprint.c
50914) Split iASL command-line option processing into asloptions.c
5092
5093Makefile enhancements:
50941) Support for all new files above.
50952) Abort make on errors from any subcomponent. Chao Guan.
50963) Add build support for Apple Mac OS X. Liang Qi.
5097
5098Example Code and Data Size: These are the sizes for the OS-independent
5099acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5100debug version of the code includes the debug output trace mechanism and
5101has a much larger code and data size.
5102
5103  Current Release:
5104    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
5105    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
5106  Previous Release:
5107    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
5108    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
5109
5110
51112) iASL Compiler/Disassembler and Tools:
5112
5113New utility: Implemented an easily portable version of the acpidump
5114utility to extract ACPI tables from the system (or a file) in an ASCII
5115hex
5116dump format. The top-level code implements the various command line
5117options, file I/O, and table dump routines. To port to a new host, only
5118three functions need to be implemented to get tables -- since this
5119functionality is OS-dependent. See the tools/acpidump/apmain.c module and
5120the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
51211) The Windows version obtains the ACPI tables from the Registry.
51222) The Linux version is under development.
51233) Other hosts - If an OS-dependent module is submitted, it will be
5124distributed with ACPICA.
5125
5126iASL: Fixed a regression for -D preprocessor option (define symbol). A
5127restructuring/change to the initialization sequence caused this option to
5128no longer work properly.
5129
5130iASL: Implemented a mechanism to disable specific warnings and remarks.
5131Adds a new command line option, "-vw <messageid> as well as "#pragma
5132disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
5133
5134iASL: Fix for too-strict package object validation. The package object
5135validation for return values from the predefined names is a bit too
5136strict, it does not allow names references within the package (which will
5137be resolved at runtime.) These types of references cannot be validated at
5138compile time. This change ignores named references within package objects
5139for names that return or define static packages.
5140
5141Debugger: Fixed the 80-character command line limitation for the History
5142command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
5143
5144iASL: Added control method and package support for the -so option
5145(generates AML offset table for BIOS support.)
5146
5147iASL: issue a remark if a non-serialized method creates named objects. If
5148a thread blocks within the method for any reason, and another thread
5149enters the method, the method will fail because an attempt will be made
5150to
5151create the same (named) object twice. In this case, issue a remark that
5152the method should be marked serialized. NOTE: may become a warning later.
5153ACPICA BZ 909.
5154
5155----------------------------------------
515618 April 2013. Summary of changes for version 20130418:
5157
51581) ACPICA kernel-resident subsystem:
5159
5160Fixed a possible buffer overrun during some rare but specific field unit
5161read operations. This overrun can only happen if the DSDT version is 1 --
5162meaning that all AML integers are 32 bits -- and the field length is
5163between 33 and 55 bits long. During the read, an internal buffer object
5164is
5165created for the field unit because the field is larger than an integer
5166(32
5167bits). However, in this case, the buffer will be incorrectly written
5168beyond the end because the buffer length is less than the internal
5169minimum
5170of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
5171long, but a full 8 bytes will be written.
5172
5173Updated the Embedded Controller "orphan" _REG method support. This refers
5174to _REG methods under the EC device that have no corresponding operation
5175region. This is allowed by the ACPI specification. This update removes a
5176dependency on the existence an ECDT table. It will execute an orphan _REG
5177method as long as the operation region handler for the EC is installed at
5178the EC device node and not the namespace root. Rui Zhang (original
5179update), Bob Moore (update/integrate).
5180
5181Implemented run-time argument typechecking for all predefined ACPI names
5182(_STA, _BIF, etc.) This change performs object typechecking on all
5183incoming arguments for all predefined names executed via
5184AcpiEvaluateObject. This ensures that ACPI-related device drivers are
5185passing correct object types as well as the correct number of arguments
5186(therefore identifying any issues immediately). Also, the ASL/namespace
5187definition of the predefined name is checked against the ACPI
5188specification for the proper argument count. Adds one new file,
5189nsarguments.c
5190
5191Changed an exception code for the ASL UnLoad() operator. Changed the
5192exception code for the case where the input DdbHandle is invalid, from
5193AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
5194
5195Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
5196global makefile. The use of this flag causes compiler errors on earlier
5197versions of GCC, so it has been removed for compatibility.
5198
5199Miscellaneous cleanup:
52001) Removed some unused/obsolete macros
52012) Fixed a possible memory leak in the _OSI support
52023) Removed an unused variable in the predefined name support
52034) Windows OSL: remove obsolete reference to a memory list field
5204
5205Example Code and Data Size: These are the sizes for the OS-independent
5206acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5207debug version of the code includes the debug output trace mechanism and
5208has a much larger code and data size.
5209
5210  Current Release:
5211    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
5212    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
5213  Previous Release:
5214    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
5215    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
5216
5217
52182) iASL Compiler/Disassembler and Tools:
5219
5220AcpiExec: Added installation of a handler for the SystemCMOS address
5221space. This prevents control method abort if a method accesses this
5222space.
5223
5224AcpiExec: Added support for multiple EC devices, and now install EC
5225operation region handler(s) at the actual EC device instead of the
5226namespace root. This reflects the typical behavior of host operating
5227systems.
5228
5229AcpiExec: Updated to ensure that all operation region handlers are
5230installed before the _REG methods are executed. This prevents a _REG
5231method from aborting if it accesses an address space has no handler.
5232AcpiExec installs a handler for every possible address space.
5233
5234Debugger: Enhanced the "handlers" command to display non-root handlers.
5235This change enhances the handlers command to display handlers associated
5236with individual devices throughout the namespace, in addition to the
5237currently supported display of handlers associated with the root
5238namespace
5239node.
5240
5241ASL Test Suite: Several test suite errors have been identified and
5242resolved, reducing the total error count during execution. Chao Guan.
5243
5244----------------------------------------
524528 March 2013. Summary of changes for version 20130328:
5246
52471) ACPICA kernel-resident subsystem:
5248
5249Fixed several possible race conditions with the internal object reference
5250counting mechanism. Some of the external ACPICA interfaces update object
5251reference counts without holding the interpreter or namespace lock. This
5252change adds a spinlock to protect reference count updates on the internal
5253ACPICA objects. Reported by and with assistance from Andriy Gapon
5254(avg@FreeBSD.org).
5255
5256FADT support: Removed an extraneous warning for very large GPE register
5257sets. This change removes a size mismatch warning if the legacy length
5258field for a GPE register set is larger than the 64-bit GAS structure can
5259accommodate. GPE register sets can be larger than the 255-bit width
5260limitation of the GAS structure. Linn Crosetto (linn@hp.com).
5261
5262_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
5263return from this interface. Handles a possible timeout case if
5264ACPI_WAIT_FOREVER is modified by the host to be a value less than
5265"forever". Jung-uk Kim.
5266
5267Predefined name support: Add allowed/required argument type information
5268to
5269the master predefined info table. This change adds the infrastructure to
5270enable typechecking on incoming arguments for all predefined
5271methods/objects. It does not actually contain the code that will fully
5272utilize this information, this is still under development. Also condenses
5273some duplicate code for the predefined names into a new module,
5274utilities/utpredef.c
5275
5276Example Code and Data Size: These are the sizes for the OS-independent
5277acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5278debug version of the code includes the debug output trace mechanism and
5279has a much larger code and data size.
5280
5281  Previous Release:
5282    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
5283    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
5284  Current Release:
5285    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
5286    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
5287
5288
52892) iASL Compiler/Disassembler and Tools:
5290
5291iASL: Implemented a new option to simplify the development of ACPI-
5292related
5293BIOS code. Adds support for a new "offset table" output file. The -so
5294option will create a C table containing the AML table offsets of various
5295named objects in the namespace so that BIOS code can modify them easily
5296at
5297boot time. This can simplify BIOS runtime code by eliminating expensive
5298searches for "magic values", enhancing boot times and adding greater
5299reliability. With assistance from Lee Hamel.
5300
5301iASL: Allow additional predefined names to return zero-length packages.
5302Now, all predefined names that are defined by the ACPI specification to
5303return a "variable-length package of packages" are allowed to return a
5304zero length top-level package. This allows the BIOS to tell the host that
5305the requested feature is not supported, and supports existing BIOS/ASL
5306code and practices.
5307
5308iASL: Changed the "result not used" warning to an error. This is the case
5309where an ASL operator is effectively a NOOP because the result of the
5310operation is not stored anywhere. For example:
5311    Add (4, Local0)
5312There is no target (missing 3rd argument), nor is the function return
5313value used. This is potentially a very serious problem -- since the code
5314was probably intended to do something, but for whatever reason, the value
5315was not stored. Therefore, this issue has been upgraded from a warning to
5316an error.
5317
5318AcpiHelp: Added allowable/required argument types to the predefined names
5319info display. This feature utilizes the recent update to the predefined
5320names table (above).
5321
5322----------------------------------------
532314 February 2013. Summary of changes for version 20130214:
5324
53251) ACPICA Kernel-resident Subsystem:
5326
5327Fixed a possible regression on some hosts: Reinstated the safe return
5328macros (return_ACPI_STATUS, etc.) that ensure that the argument is
5329evaluated only once. Although these macros are not needed for the ACPICA
5330code itself, they are often used by ACPI-related host device drivers
5331where
5332the safe feature may be necessary.
5333
5334Fixed several issues related to the ACPI 5.0 reduced hardware support
5335(SOC): Now ensure that if the platform declares itself as hardware-
5336reduced
5337via the FADT, the following functions become NOOPs (and always return
5338AE_OK) because ACPI is always enabled by definition on these machines:
5339  AcpiEnable
5340  AcpiDisable
5341  AcpiHwGetMode
5342  AcpiHwSetMode
5343
5344Dynamic Object Repair: Implemented additional runtime repairs for
5345predefined name return values. Both of these repairs can simplify code in
5346the related device drivers that invoke these methods:
53471) For the _STR and _MLS names, automatically repair/convert an ASCII
5348string to a Unicode buffer.
53492) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
5350a
5351lone end tag descriptor in the following cases: A Return(0) was executed,
5352a null buffer was returned, or no object at all was returned (non-slack
5353mode only). Adds a new file, nsconvert.c
5354ACPICA BZ 998. Bob Moore, Lv Zheng.
5355
5356Resource Manager: Added additional code to prevent possible infinite
5357loops
5358while traversing corrupted or ill-formed resource template buffers. Check
5359for zero-length resource descriptors in all code that loops through
5360resource templates (the length field is used to index through the
5361template). This change also hardens the external AcpiWalkResources and
5362AcpiWalkResourceBuffer interfaces.
5363
5364Local Cache Manager: Enhanced the main data structure to eliminate an
5365unnecessary mechanism to access the next object in the list. Actually
5366provides a small performance enhancement for hosts that use the local
5367ACPICA cache manager. Jung-uk Kim.
5368
5369Example Code and Data Size: These are the sizes for the OS-independent
5370acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5371debug version of the code includes the debug output trace mechanism and
5372has a much larger code and data size.
5373
5374  Previous Release:
5375    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
5376    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
5377  Current Release:
5378    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
5379    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
5380
5381
53822) iASL Compiler/Disassembler and Tools:
5383
5384iASL/Disassembler: Fixed several issues with the definition of the ACPI
53855.0 RASF table (RAS Feature Table). This change incorporates late changes
5386that were made to the ACPI 5.0 specification.
5387
5388iASL/Disassembler: Added full support for the following new ACPI tables:
5389  1) The MTMR table (MID Timer Table)
5390  2) The VRTC table (Virtual Real Time Clock Table).
5391Includes header file, disassembler, table compiler, and template support
5392for both tables.
5393
5394iASL: Implemented compile-time validation of package objects returned by
5395predefined names. This new feature validates static package objects
5396returned by the various predefined names defined to return packages. Both
5397object types and package lengths are validated, for both parent packages
5398and sub-packages, if any. The code is similar in structure and behavior
5399to
5400the runtime repair mechanism within the AML interpreter and uses the
5401existing predefined name information table. Adds a new file, aslprepkg.c.
5402ACPICA BZ 938.
5403
5404iASL: Implemented auto-detection of binary ACPI tables for disassembly.
5405This feature detects a binary file with a valid ACPI table header and
5406invokes the disassembler automatically. Eliminates the need to
5407specifically invoke the disassembler with the -d option. ACPICA BZ 862.
5408
5409iASL/Disassembler: Added several warnings for the case where there are
5410unresolved control methods during the disassembly. This can potentially
5411cause errors when the output file is compiled, because the disassembler
5412assumes zero method arguments in these cases (it cannot determine the
5413actual number of arguments without resolution/definition of the method).
5414
5415Debugger: Added support to display all resources with a single command.
5416Invocation of the resources command with no arguments will now display
5417all
5418resources within the current namespace.
5419
5420AcpiHelp: Added descriptive text for each ACPICA exception code displayed
5421via the -e option.
5422
5423----------------------------------------
542417 January 2013. Summary of changes for version 20130117:
5425
54261) ACPICA Kernel-resident Subsystem:
5427
5428Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
5429return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
5430objects to return a package containing one integer, most BIOS code
5431returns
5432two integers and the previous code reflects that. However, we also need
5433to
5434support BIOS code that actually implements to the ACPI spec, and this
5435change reflects this.
5436
5437Fixed two issues with the ACPI_DEBUG_PRINT macros:
54381) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
5439C compilers that require this support.
54402) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
5441ACPI_DEBUG is already used by many of the various hosts.
5442
5443Updated all ACPICA copyrights and signons to 2013. Added the 2013
5444copyright to all module headers and signons, including the standard Linux
5445header. This affects virtually every file in the ACPICA core subsystem,
5446iASL compiler, all ACPICA utilities, and the test suites.
5447
5448Example Code and Data Size: These are the sizes for the OS-independent
5449acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5450debug version of the code includes the debug output trace mechanism and
5451has a much larger code and data size.
5452
5453  Previous Release:
5454    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
5455    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
5456  Current Release:
5457    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
5458    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
5459
5460
54612) iASL Compiler/Disassembler and Tools:
5462
5463Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
5464prevent a possible fault on some hosts. Some C libraries modify the arg
5465pointer parameter to vfprintf making it difficult to call it twice in the
5466AcpiOsVprintf function. Use a local buffer to workaround this issue. This
5467does not affect the Windows OSL since the Win C library does not modify
5468the arg pointer. Chao Guan, Bob Moore.
5469
5470iASL: Fixed a possible infinite loop when the maximum error count is
5471reached. If an output file other than the .AML file is specified (such as
5472a listing file), and the maximum number of errors is reached, do not
5473attempt to flush data to the output file(s) as the compiler is aborting.
5474This can cause an infinite loop as the max error count code essentially
5475keeps calling itself.
5476
5477iASL/Disassembler: Added an option (-in) to ignore NOOP
5478opcodes/operators.
5479Implemented for both the compiler and the disassembler. Often, the NOOP
5480opcode is used as padding for packages that are changed dynamically by
5481the
5482BIOS. When disassembled and recompiled, these NOOPs will cause syntax
5483errors. This option causes the disassembler to ignore all NOOP opcodes
5484(0xA3), and it also causes the compiler to ignore all ASL source code
5485NOOP
5486statements as well.
5487
5488Debugger: Enhanced the Sleep command to execute all sleep states. This
5489change allows Sleep to be invoked with no arguments and causes the
5490debugger to execute all of the sleep states, 0-5, automatically.
5491
5492----------------------------------------
549320 December 2012. Summary of changes for version 20121220:
5494
54951) ACPICA Kernel-resident Subsystem:
5496
5497Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
5498alternate entry point for AcpiWalkResources and improves the usability of
5499the resource manager by accepting as input a buffer containing the output
5500of either a _CRS, _PRS, or _AEI method. The key functionality is that the
5501input buffer is not deleted by this interface so that it can be used by
5502the host later. See the ACPICA reference for details.
5503
5504Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
5505(DSDT version < 2). The constant will be truncated and this warning
5506reflects that behavior.
5507
5508Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
5509ExtendedInterrupt, and GpioInt descriptors. This change adds support to
5510both get and set the new wake bit in these descriptors, separately from
5511the existing share bit. Reported by Aaron Lu.
5512
5513Interpreter: Fix Store() when an implicit conversion is not possible. For
5514example, in the cases such as a store of a string to an existing package
5515object, implement the store as a CopyObject(). This is a small departure
5516from the ACPI specification which states that the control method should
5517be
5518aborted in this case. However, the ASLTS suite depends on this behavior.
5519
5520Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
5521macros: check if debug output is currently enabled as soon as possible to
5522minimize performance impact if debug is in fact not enabled.
5523
5524Source code restructuring: Cleanup to improve modularity. The following
5525new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
5526psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
5527Associated makefiles and project files have been updated.
5528
5529Changed an exception code for LoadTable operator. For the case where one
5530of the input strings is too long, change the returned exception code from
5531AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
5532
5533Fixed a possible memory leak in dispatcher error path. On error, delete
5534the mutex object created during method mutex creation. Reported by
5535tim.gardner@canonical.com.
5536
5537Example Code and Data Size: These are the sizes for the OS-independent
5538acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5539debug version of the code includes the debug output trace mechanism and
5540has a much larger code and data size.
5541
5542  Previous Release:
5543    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
5544    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5545  Current Release:
5546    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
5547    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
5548
5549
55502) iASL Compiler/Disassembler and Tools:
5551
5552iASL: Disallow a method call as argument to the ObjectType ASL operator.
5553This change tracks an errata to the ACPI 5.0 document. The AML grammar
5554will not allow the interpreter to differentiate between a method and a
5555method invocation when these are used as an argument to the ObjectType
5556operator. The ACPI specification change is to disallow a method
5557invocation
5558(UserTerm) for the ObjectType operator.
5559
5560Finish support for the TPM2 and CSRT tables in the headers, table
5561compiler, and disassembler.
5562
5563Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
5564always expires immediately if the semaphore is not available. The
5565original
5566code was using a relative-time timeout, but sem_timedwait requires the
5567use
5568of an absolute time.
5569
5570iASL: Added a remark if the Timer() operator is used within a 32-bit
5571table. This operator returns a 64-bit time value that will be truncated
5572within a 32-bit table.
5573
5574iASL Source code restructuring: Cleanup to improve modularity. The
5575following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
5576aslmethod.c, and aslfileio.c. Associated makefiles and project files have
5577been updated.
5578
5579
5580----------------------------------------
558114 November 2012. Summary of changes for version 20121114:
5582
55831) ACPICA Kernel-resident Subsystem:
5584
5585Implemented a performance enhancement for ACPI/AML Package objects. This
5586change greatly increases the performance of Package objects within the
5587interpreter. It changes the processing of reference counts for packages
5588by
5589optimizing for the most common case where the package sub-objects are
5590either Integers, Strings, or Buffers. Increases the overall performance
5591of
5592the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
55932X.)
5594Chao Guan. ACPICA BZ 943.
5595
5596Implemented and deployed common macros to extract flag bits from resource
5597descriptors. Improves readability and maintainability of the code. Fixes
5598a
5599problem with the UART serial bus descriptor for the number of data bits
5600flags (was incorrectly 2 bits, should be 3).
5601
5602Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
5603of the macros and changed the SETx macros to the style of (destination,
5604source). Also added ACPI_CASTx companion macros. Lv Zheng.
5605
5606Example Code and Data Size: These are the sizes for the OS-independent
5607acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5608debug version of the code includes the debug output trace mechanism and
5609has a much larger code and data size.
5610
5611  Previous Release:
5612    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
5613    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5614  Current Release:
5615    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
5616    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5617
5618
56192) iASL Compiler/Disassembler and Tools:
5620
5621Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
5622adds the ShareAndWake and ExclusiveAndWake flags which were added to the
5623Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
5624
5625Disassembler: Fixed a problem with external declaration generation. Fixes
5626a problem where an incorrect pathname could be generated for an external
5627declaration if the original reference to the object includes leading
5628carats (^). ACPICA BZ 984.
5629
5630Debugger: Completed a major update for the Disassemble<method> command.
5631This command was out-of-date and did not properly disassemble control
5632methods that had any reasonable complexity. This fix brings the command
5633up
5634to the same level as the rest of the disassembler. Adds one new file,
5635dmdeferred.c, which is existing code that is now common with the main
5636disassembler and the debugger disassemble command. ACPICA MZ 978.
5637
5638iASL: Moved the parser entry prototype to avoid a duplicate declaration.
5639Newer versions of Bison emit this prototype, so moved the prototype out
5640of
5641the iASL header to where it is actually used in order to avoid a
5642duplicate
5643declaration.
5644
5645iASL/Tools: Standardized use of the stream I/O functions:
5646  1) Ensure check for I/O error after every fopen/fread/fwrite
5647  2) Ensure proper order of size/count arguments for fread/fwrite
5648  3) Use test of (Actual != Requested) after all fwrite, and most fread
5649  4) Standardize I/O error messages
5650Improves reliability and maintainability of the code. Bob Moore, Lv
5651Zheng.
5652ACPICA BZ 981.
5653
5654Disassembler: Prevent duplicate External() statements. During generation
5655of external statements, detect similar pathnames that are actually
5656duplicates such as these:
5657  External (\ABCD)
5658  External (ABCD)
5659Remove all leading '\' characters from pathnames during the external
5660statement generation so that duplicates will be detected and tossed.
5661ACPICA BZ 985.
5662
5663Tools: Replace low-level I/O with stream I/O functions. Replace
5664open/read/write/close with the stream I/O equivalents
5665fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
5666Moore.
5667
5668AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
5669name header so that AcpiXtract recognizes the output file/table.
5670
5671iASL: Remove obsolete -2 option flag. Originally intended to force the
5672compiler/disassembler into an ACPI 2.0 mode, this was never implemented
5673and the entire concept is now obsolete.
5674
5675----------------------------------------
567618 October 2012. Summary of changes for version 20121018:
5677
5678
56791) ACPICA Kernel-resident Subsystem:
5680
5681Updated support for the ACPI 5.0 MPST table. Fixes some problems
5682introduced by late changes to the table as it was added to the ACPI 5.0
5683specification. Includes header, disassembler, and data table compiler
5684support as well as a new version of the MPST template.
5685
5686AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
56875.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
5688methods: _HID, _CID, and _UID.
5689
5690Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
5691ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
5692name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
5693names for their various drivers. Affects the AcpiGetObjectInfo external
5694interface, and other internal interfaces as well.
5695
5696Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
5697This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
5698on machines that support non-aligned transfers. Optimizes for this case
5699rather than using a strncpy. With assistance from Zheng Lv.
5700
5701Resource Manager: Small fix for buffer size calculation. Fixed a one byte
5702error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
5703
5704Added a new debug print message for AML mutex objects that are force-
5705released. At control method termination, any currently acquired mutex
5706objects are force-released. Adds a new debug-only message for each one
5707that is released.
5708
5709Audited/updated all ACPICA return macros and the function debug depth
5710counter: 1) Ensure that all functions that use the various TRACE macros
5711also use the appropriate ACPICA return macros. 2) Ensure that all normal
5712return statements surround the return expression (value) with parens to
5713ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
5714Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
5715
5716Global source code changes/maintenance: All extra lines at the start and
5717end of each source file have been removed for consistency. Also, within
5718comments, all new sentences start with a single space instead of a double
5719space, again for consistency across the code base.
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:  93.7K Code, 25.3K Data, 119.0K Total
5728    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
5729  Current Release:
5730    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
5731    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5732
5733
57342) iASL Compiler/Disassembler and Tools:
5735
5736AcpiExec: Improved the algorithm used for memory leak/corruption
5737detection. Added some intelligence to the code that maintains the global
5738list of allocated memory. The list is now ordered by allocated memory
5739address, significantly improving performance. When running AcpiExec on
5740the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
5741on the platform and/or the environment. Note, this performance
5742enhancement affects the AcpiExec utility only, not the kernel-resident
5743ACPICA code.
5744
5745Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
5746the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
5747incorrect table offset reported for invalid opcodes. Report the original
574832-bit value for bad ACPI_NAMEs (as well as the repaired name.)
5749
5750Disassembler: Enhanced the -vt option to emit the binary table data in
5751hex format to assist with debugging.
5752
5753Fixed a potential filename buffer overflow in osunixdir.c. Increased the
5754size of file structure. Colin Ian King.
5755
5756----------------------------------------
575713 September 2012. Summary of changes for version 20120913:
5758
5759
57601) ACPICA Kernel-resident Subsystem:
5761
5762ACPI 5.0: Added two new notify types for the Hardware Error Notification
5763Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
5764and
5765MCE(6).
5766
5767Table Manager: Merged/removed duplicate code in the root table resize
5768functions. One function is external, the other is internal. Lv Zheng,
5769ACPICA
5770BZ 846.
5771
5772Makefiles: Completely removed the obsolete "Linux" makefiles under
5773acpica/generate/linux. These makefiles are obsolete and have been
5774replaced
5775by
5776the generic unix makefiles under acpica/generate/unix.
5777
5778Makefiles: Ensure that binary files always copied properly. Minor rule
5779change
5780to ensure that the final binary output files are always copied up to the
5781appropriate binary directory (bin32 or bin64.)
5782
5783Example Code and Data Size: These are the sizes for the OS-independent
5784acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5785debug
5786version of the code includes the debug output trace mechanism and has a
5787much
5788larger code and data size.
5789
5790  Previous Release:
5791    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
5792    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
5793  Current Release:
5794    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
5795    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
5796
5797
57982) iASL Compiler/Disassembler and Tools:
5799
5800Disassembler: Fixed a possible fault during the disassembly of resource
5801descriptors when a second parse is required because of the invocation of
5802external control methods within the table. With assistance from
5803adq@lidskialf.net. ACPICA BZ 976.
5804
5805iASL: Fixed a namepath optimization problem. An error can occur if the
5806parse
5807node that contains the namepath to be optimized does not have a parent
5808node
5809that is a named object. This change fixes the problem.
5810
5811iASL: Fixed a regression where the AML file is not deleted on errors. The
5812AML
5813output file should be deleted if there are any errors during the
5814compiler.
5815The
5816only exception is if the -f (force output) option is used. ACPICA BZ 974.
5817
5818iASL: Added a feature to automatically increase internal line buffer
5819sizes.
5820Via realloc(), automatically increase the internal line buffer sizes as
5821necessary to support very long source code lines. The current version of
5822the
5823preprocessor requires a buffer long enough to contain full source code
5824lines.
5825This change increases the line buffer(s) if the input lines go beyond the
5826current buffer size. This eliminates errors that occurred when a source
5827code
5828line was longer than the buffer.
5829
5830iASL: Fixed a problem with constant folding in method declarations. The
5831SyncLevel term is a ByteConstExpr, and incorrect code would be generated
5832if a
5833Type3 opcode was used.
5834
5835Debugger: Improved command help support. For incorrect argument count,
5836display
5837full help for the command. For help command itself, allow an argument to
5838specify a command.
5839
5840Test Suites: Several bug fixes for the ASLTS suite reduces the number of
5841errors during execution of the suite. Guan Chao.
5842
5843----------------------------------------
584416 August 2012. Summary of changes for version 20120816:
5845
5846
58471) ACPICA Kernel-resident Subsystem:
5848
5849Removed all use of the deprecated _GTS and _BFS predefined methods. The
5850_GTS
5851(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
5852deprecated and will probably be removed from the ACPI specification.
5853Windows
5854does not invoke them, and reportedly never will. The final nail in the
5855coffin
5856is that the ACPI specification states that these methods must be run with
5857interrupts off, which is not going to happen in a kernel interpreter.
5858Note:
5859Linux has removed all use of the methods also. It was discovered that
5860invoking these functions caused failures on some machines, probably
5861because
5862they were never tested since Windows does not call them. Affects two
5863external
5864interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
5865ACPICA BZ 969.
5866
5867Implemented support for complex bit-packed buffers returned from the _PLD
5868(Physical Location of Device) predefined method. Adds a new external
5869interface, AcpiDecodePldBuffer that parses the buffer into a more usable
5870C
5871structure. Note: C Bitfields cannot be used for this type of predefined
5872structure since the memory layout of individual bitfields is not defined
5873by
5874the C language. In addition, there are endian concerns where a compiler
5875will
5876change the bitfield ordering based on the machine type. The new ACPICA
5877interface eliminates these issues, and should be called after _PLD is
5878executed. ACPICA BZ 954.
5879
5880Implemented a change to allow a scope change to root (via "Scope (\)")
5881during
5882execution of module-level ASL code (code that is executed at table load
5883time.) Lin Ming.
5884
5885Added the Windows8/Server2012 string for the _OSI method. This change
5886adds
5887a
5888new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
58892012.
5890
5891Added header support for the new ACPI tables DBG2 (Debug Port Table Type
58922)
5893and CSRT (Core System Resource Table).
5894
5895Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
5896names. This simplifies access to the buffers returned by these predefined
5897names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
5898
5899GPE support: Removed an extraneous parameter from the various low-level
5900internal GPE functions. Tang Feng.
5901
5902Removed the linux makefiles from the unix packages. The generate/linux
5903makefiles are obsolete and have been removed from the unix tarball
5904release
5905packages. The replacement makefiles are under generate/unix, and there is
5906a
5907top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
5908
5909Updates for Unix makefiles:
59101) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
59112) Update linker flags (move to end of command line) for AcpiExec
5912utility.
5913Guan Chao.
5914
5915Split ACPICA initialization functions to new file, utxfinit.c. Split from
5916utxface.c to improve modularity and reduce file size.
5917
5918Example Code and Data Size: These are the sizes for the OS-independent
5919acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5920debug version of the code includes the debug output trace mechanism and
5921has a
5922much larger code and data size.
5923
5924  Previous Release:
5925    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
5926    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
5927  Current Release:
5928    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
5929    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
5930
5931
59322) iASL Compiler/Disassembler and Tools:
5933
5934iASL: Fixed a problem with constant folding for fixed-length constant
5935expressions. The constant-folding code was not being invoked for constant
5936expressions that allow the use of type 3/4/5 opcodes to generate
5937constants
5938for expressions such as ByteConstExpr, WordConstExpr, etc. This could
5939result
5940in the generation of invalid AML bytecode. ACPICA BZ 970.
5941
5942iASL: Fixed a generation issue on newer versions of Bison. Newer versions
5943apparently automatically emit some of the necessary externals. This
5944change
5945handles these versions in order to eliminate generation warnings.
5946
5947Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
5948
5949Disassembler: Add support to decode _PLD buffers. The decoded buffer
5950appears
5951within comments in the output file.
5952
5953Debugger: Fixed a regression with the "Threads" command where
5954AE_BAD_PARAMETER was always returned.
5955
5956----------------------------------------
595711 July 2012. Summary of changes for version 20120711:
5958
59591) ACPICA Kernel-resident Subsystem:
5960
5961Fixed a possible fault in the return package object repair code. Fixes a
5962problem that can occur when a lone package object is wrapped with an
5963outer
5964package object in order to force conformance to the ACPI specification.
5965Can
5966affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
5967_DLM,
5968_CSD, _PSD, _TSD.
5969
5970Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
5971PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
5972ARB_DIS bit must be implemented in the host-dependent C3 processor power
5973state
5974support. Note, ARB_DIS is obsolete and only applies to older chipsets,
5975both
5976Intel and other vendors. (for Intel: ICH4-M and earlier)
5977
5978This change removes the code to disable/enable bus master arbitration
5979during
5980suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
5981causes
5982resume problems on some machines. The change has been in use for over
5983seven
5984years within Linux.
5985
5986Implemented two new external interfaces to support host-directed dynamic
5987ACPI
5988table load and unload. They are intended to simplify the host
5989implementation
5990of hot-plug support:
5991  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
5992  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
5993table.
5994See the ACPICA reference for additional details. Adds one new file,
5995components/tables/tbxfload.c
5996
5997Implemented and deployed two new interfaces for errors and warnings that
5998are
5999known to be caused by BIOS/firmware issues:
6000  AcpiBiosError: Prints "ACPI Firmware Error" message.
6001  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
6002Deployed these new interfaces in the ACPICA Table Manager code for ACPI
6003table
6004and FADT errors. Additional deployment to be completed as appropriate in
6005the
6006future. The associated conditional macros are ACPI_BIOS_ERROR and
6007ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
6008ACPICA
6009BZ
6010843.
6011
6012Implicit notify support: ensure that no memory allocation occurs within a
6013critical region. This fix moves a memory allocation outside of the time
6014that a
6015spinlock is held. Fixes issues on systems that do not allow this
6016behavior.
6017Jung-uk Kim.
6018
6019Split exception code utilities and tables into a new file,
6020utilities/utexcep.c
6021
6022Example Code and Data Size: These are the sizes for the OS-independent
6023acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6024debug
6025version of the code includes the debug output trace mechanism and has a
6026much
6027larger code and data size.
6028
6029  Previous Release:
6030    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
6031    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
6032  Current Release:
6033    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
6034    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
6035
6036
60372) iASL Compiler/Disassembler and Tools:
6038
6039iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
6040of
60410. Jung-uk Kim.
6042
6043Debugger: Enhanced the "tables" command to emit additional information
6044about
6045the current set of ACPI tables, including the owner ID and flags decode.
6046
6047Debugger: Reimplemented the "unload" command to use the new
6048AcpiUnloadParentTable external interface. This command was disable
6049previously
6050due to need for an unload interface.
6051
6052AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
6053option
6054will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
6055
6056----------------------------------------
605720 June 2012. Summary of changes for version 20120620:
6058
6059
60601) ACPICA Kernel-resident Subsystem:
6061
6062Implemented support to expand the "implicit notify" feature to allow
6063multiple
6064devices to be notified by a single GPE. This feature automatically
6065generates a
6066runtime device notification in the absence of a BIOS-provided GPE control
6067method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
6068notify is
6069provided by ACPICA for Windows compatibility, and is a workaround for
6070BIOS
6071AML
6072code errors. See the description of the AcpiSetupGpeForWake interface in
6073the
6074APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
6075
6076Changed some comments and internal function names to simplify and ensure
6077correctness of the Linux code translation. No functional changes.
6078
6079Example Code and Data Size: These are the sizes for the OS-independent
6080acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6081debug
6082version of the code includes the debug output trace mechanism and has a
6083much
6084larger code and data size.
6085
6086  Previous Release:
6087    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
6088    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
6089  Current Release:
6090    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
6091    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
6092
6093
60942) iASL Compiler/Disassembler and Tools:
6095
6096Disassembler: Added support to emit short, commented descriptions for the
6097ACPI
6098predefined names in order to improve the readability of the disassembled
6099output. ACPICA BZ 959. Changes include:
6100  1) Emit descriptions for all standard predefined names (_INI, _STA,
6101_PRW,
6102etc.)
6103  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
6104  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
6105etc.)
6106
6107AcpiSrc: Fixed several long-standing Linux code translation issues.
6108Argument
6109descriptions in function headers are now translated properly to lower
6110case
6111and
6112underscores. ACPICA BZ 961. Also fixes translation problems such as
6113these:
6114(old -> new)
6115  i_aSL -> iASL
6116  00-7_f -> 00-7F
6117  16_k -> 16K
6118  local_fADT -> local_FADT
6119  execute_oSI -> execute_OSI
6120
6121iASL: Fixed a problem where null bytes were inadvertently emitted into
6122some
6123listing files.
6124
6125iASL: Added the existing debug options to the standard help screen. There
6126are
6127no longer two different help screens. ACPICA BZ 957.
6128
6129AcpiHelp: Fixed some typos in the various predefined name descriptions.
6130Also
6131expand some of the descriptions where appropriate.
6132
6133iASL: Fixed the -ot option (display compile times/statistics). Was not
6134working
6135properly for standard output; only worked for the debug file case.
6136
6137----------------------------------------
613818 May 2012. Summary of changes for version 20120518:
6139
6140
61411) ACPICA Core Subsystem:
6142
6143Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
6144defined
6145to block until asynchronous events such as notifies and GPEs have
6146completed.
6147Within ACPICA, it is only called before a notify or GPE handler is
6148removed/uninstalled. It also may be useful for the host OS within related
6149drivers such as the Embedded Controller driver. See the ACPICA reference
6150for
6151additional information. ACPICA BZ 868.
6152
6153ACPI Tables: Added a new error message for a possible overflow failure
6154during
6155the conversion of FADT 32-bit legacy register addresses to internal
6156common
615764-
6158bit GAS structure representation. The GAS has a one-byte "bit length"
6159field,
6160thus limiting the register length to 255 bits. ACPICA BZ 953.
6161
6162Example Code and Data Size: These are the sizes for the OS-independent
6163acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6164debug
6165version of the code includes the debug output trace mechanism and has a
6166much
6167larger code and data size.
6168
6169  Previous Release:
6170    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6171    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
6172  Current Release:
6173    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
6174    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
6175
6176
61772) iASL Compiler/Disassembler and Tools:
6178
6179iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
6180macro.
6181This keyword was added late in the ACPI 5.0 release cycle and was not
6182implemented until now.
6183
6184Disassembler: Added support for Operation Region externals. Adds missing
6185support for operation regions that are defined in another table, and
6186referenced locally via a Field or BankField ASL operator. Now generates
6187the
6188correct External statement.
6189
6190Disassembler: Several additional fixes for the External() statement
6191generation
6192related to some ASL operators. Also, order the External() statements
6193alphabetically in the disassembler output. Fixes the External()
6194generation
6195for
6196the Create* field, Alias, and Scope operators:
6197 1) Create* buffer field operators - fix type mismatch warning on
6198disassembly
6199 2) Alias - implement missing External support
6200 3) Scope - fix to make sure all necessary externals are emitted.
6201
6202iASL: Improved pathname support. For include files, merge the prefix
6203pathname
6204with the file pathname and eliminate unnecessary components. Convert
6205backslashes in all pathnames to forward slashes, for readability. Include
6206file
6207pathname changes affect both #include and Include() type operators.
6208
6209iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
6210end
6211of a valid line by inserting a newline and then returning the EOF during
6212the
6213next call to GetNextLine. Prevents the line from being ignored due to EOF
6214condition.
6215
6216iASL: Implemented some changes to enhance the IDE support (-vi option.)
6217Error
6218and Warning messages are now correctly recognized for both the source
6219code
6220browser and the global error and warning counts.
6221
6222----------------------------------------
622320 April 2012. Summary of changes for version 20120420:
6224
6225
62261) ACPICA Core Subsystem:
6227
6228Implemented support for multiple notify handlers. This change adds
6229support
6230to
6231allow multiple system and device notify handlers on Device, Thermal Zone,
6232and
6233Processor objects. This can simplify the host OS notification
6234implementation.
6235Also re-worked and restructured the entire notify support code to
6236simplify
6237handler installation, handler removal, notify event queuing, and notify
6238dispatch to handler(s). Note: there can still only be two global notify
6239handlers - one for system notifies and one for device notifies. There are
6240no
6241changes to the existing handler install/remove interfaces. Lin Ming, Bob
6242Moore, Rafael Wysocki.
6243
6244Fixed a regression in the package repair code where the object reference
6245count was calculated incorrectly. Regression was introduced in the commit
6246"Support to add Package wrappers".
6247
6248Fixed a couple possible memory leaks in the AML parser, in the error
6249recovery
6250path. Jesper Juhl, Lin Ming.
6251
6252Example Code and Data Size: These are the sizes for the OS-independent
6253acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6254debug version of the code includes the debug output trace mechanism and
6255has a
6256much larger code and data size.
6257
6258  Previous Release:
6259    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6260    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6261  Current Release:
6262    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6263    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
6264
6265
62662) iASL Compiler/Disassembler and Tools:
6267
6268iASL: Fixed a problem with the resource descriptor support where the
6269length
6270of the StartDependentFn and StartDependentFnNoPrio descriptors were not
6271included in cumulative descriptor offset, resulting in incorrect values
6272for
6273resource tags within resource descriptors appearing after a
6274StartDependent*
6275descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
6276
6277iASL and Preprocessor: Implemented full support for the #line directive
6278to
6279correctly track original source file line numbers through the .i
6280preprocessor
6281output file - for error and warning messages.
6282
6283iASL: Expand the allowable byte constants for address space IDs.
6284Previously,
6285the allowable range was 0x80-0xFF (user-defined spaces), now the range is
62860x0A-0xFF to allow for custom and new IDs without changing the compiler.
6287
6288iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
6289
6290iASL: Add option to completely disable the preprocessor (-Pn).
6291
6292iASL: Now emit all error/warning messages to standard error (stderr) by
6293default (instead of the previous stdout).
6294
6295ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
6296Update
6297for resource descriptor offset fix above. Update/cleanup error output
6298routines. Enable and send iASL errors/warnings to an error logfile
6299(error.txt). Send all other iASL output to a logfile (compiler.txt).
6300Fixed
6301several extraneous "unrecognized operator" messages.
6302
6303----------------------------------------
630420 March 2012. Summary of changes for version 20120320:
6305
6306
63071) ACPICA Core Subsystem:
6308
6309Enhanced the sleep/wake interfaces to optionally execute the _GTS method
6310(Going To Sleep) and the _BFS method (Back From Sleep). Windows
6311apparently
6312does not execute these methods, and therefore these methods are often
6313untested. It has been seen on some systems where the execution of these
6314methods causes errors and also prevents the machine from entering S5. It
6315is
6316therefore suggested that host operating systems do not execute these
6317methods
6318by default. In the future, perhaps these methods can be optionally
6319executed
6320based on the age of the system and/or what is the newest version of
6321Windows
6322that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
6323and
6324AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
6325Ming.
6326
6327Fixed a problem where the length of the local/common FADT was set too
6328early.
6329The local FADT table length cannot be set to the common length until the
6330original length has been examined. There is code that checks the table
6331length
6332and sets various fields appropriately. This can affect older machines
6333with
6334early FADT versions. For example, this can cause inadvertent writes to
6335the
6336CST_CNT register. Julian Anastasov.
6337
6338Fixed a mapping issue related to a physical table override. Use the
6339deferred
6340mapping mechanism for tables loaded via the physical override OSL
6341interface.
6342This allows for early mapping before the virtual memory manager is
6343available.
6344Thomas Renninger, Bob Moore.
6345
6346Enhanced the automatic return-object repair code: Repair a common problem
6347with
6348predefined methods that are defined to return a variable-length Package
6349of
6350sub-objects. If there is only one sub-object, some BIOS ASL code
6351mistakenly
6352simply returns the single object instead of a Package with one sub-
6353object.
6354This new support will repair this error by wrapping a Package object
6355around
6356the original object, creating the correct and expected Package with one
6357sub-
6358object. Names that can be repaired in this manner include: _ALR, _CSD,
6359_HPX,
6360_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
6361939.
6362
6363Changed the exception code returned for invalid ACPI paths passed as
6364parameters to external interfaces such as AcpiEvaluateObject. Was
6365AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
6366
6367Example Code and Data Size: These are the sizes for the OS-independent
6368acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6369debug
6370version of the code includes the debug output trace mechanism and has a
6371much
6372larger code and data size.
6373
6374  Previous Release:
6375    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
6376    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6377  Current Release:
6378    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6379    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6380
6381
63822) iASL Compiler/Disassembler and Tools:
6383
6384iASL: Added the infrastructure and initial implementation of a integrated
6385C-
6386like preprocessor. This will simplify BIOS development process by
6387eliminating
6388the need for a separate preprocessing step during builds. On Windows, it
6389also
6390eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
6391features including full #define() macro support are still under
6392development.
6393These preprocessor directives are supported:
6394    #define
6395    #elif
6396    #else
6397    #endif
6398    #error
6399    #if
6400    #ifdef
6401    #ifndef
6402    #include
6403    #pragma message
6404    #undef
6405    #warning
6406In addition, these new command line options are supported:
6407    -D <symbol> Define symbol for preprocessor use
6408    -li         Create preprocessed output file (*.i)
6409    -P          Preprocess only and create preprocessor output file (*.i)
6410
6411Table Compiler: Fixed a problem where the equals operator within an
6412expression
6413did not work properly.
6414
6415Updated iASL to use the current versions of Bison/Flex. Updated the
6416Windows
6417project file to invoke these tools from the standard location. ACPICA BZ
6418904.
6419Versions supported:
6420    Flex for Windows:  V2.5.4
6421    Bison for Windows: V2.4.1
6422
6423----------------------------------------
642415 February 2012. Summary of changes for version 20120215:
6425
6426
64271) ACPICA Core Subsystem:
6428
6429There have been some major changes to the sleep/wake support code, as
6430described below (a - e).
6431
6432a) The AcpiLeaveSleepState has been split into two interfaces, similar to
6433AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
6434AcpiLeaveSleepStatePrep. This allows the host to perform actions between
6435the
6436time the _BFS method is called and the _WAK method is called. NOTE: all
6437hosts
6438must update their wake/resume code or else sleep/wake will not work
6439properly.
6440Rafael Wysocki.
6441
6442b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
6443_WAK
6444method. Some machines require that the GPEs are enabled before the _WAK
6445method
6446is executed. Thomas Renninger.
6447
6448c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
6449bit.
6450Some BIOS code assumes that WAK_STS will be cleared on resume and use it
6451to
6452determine whether the system is rebooting or resuming. Matthew Garrett.
6453
6454d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
6455Sleep) to
6456match the ACPI specification requirement. Rafael Wysocki.
6457
6458e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
6459registers within the V5 FADT. This support adds two new files:
6460hardware/hwesleep.c implements the support for the new registers. Moved
6461all
6462sleep/wake external interfaces to hardware/hwxfsleep.c.
6463
6464
6465Added a new OSL interface for ACPI table overrides,
6466AcpiOsPhysicalTableOverride. This interface allows the host to override a
6467table via a physical address, instead of the logical address required by
6468AcpiOsTableOverride. This simplifies the host implementation. Initial
6469implementation by Thomas Renninger. The ACPICA implementation creates a
6470single
6471shared function for table overrides that attempts both a logical and a
6472physical override.
6473
6474Expanded the OSL memory read/write interfaces to 64-bit data
6475(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
6476transfer support for GAS register structures passed to AcpiRead and
6477AcpiWrite.
6478
6479Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
6480custom
6481build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
6482model.
6483See the ACPICA reference for details. ACPICA BZ 942. This option removes
6484about
648510% of the code and 5% of the static data, and the following hardware
6486ACPI
6487features become unavailable:
6488    PM Event and Control registers
6489    SCI interrupt (and handler)
6490    Fixed Events
6491    General Purpose Events (GPEs)
6492    Global Lock
6493    ACPI PM timer
6494    FACS table (Waking vectors and Global Lock)
6495
6496Updated the unix tarball directory structure to match the ACPICA git
6497source
6498tree. This ensures that the generic unix makefiles work properly (in
6499generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
6500867.
6501
6502Updated the return value of the _REV predefined method to integer value 5
6503to
6504reflect ACPI 5.0 support.
6505
6506Moved the external ACPI PM timer interface prototypes to the public
6507acpixf.h
6508file where they belong.
6509
6510Example Code and Data Size: These are the sizes for the OS-independent
6511acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6512debug
6513version of the code includes the debug output trace mechanism and has a
6514much
6515larger code and data size.
6516
6517  Previous Release:
6518    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
6519    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
6520  Current Release:
6521    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
6522    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6523
6524
65252) iASL Compiler/Disassembler and Tools:
6526
6527Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
6528descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
6529incorrectly displayed.
6530
6531AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
6532specification.
6533
6534----------------------------------------
653511 January 2012. Summary of changes for version 20120111:
6536
6537
65381) ACPICA Core Subsystem:
6539
6540Implemented a new mechanism to allow host device drivers to check for
6541address
6542range conflicts with ACPI Operation Regions. Both SystemMemory and
6543SystemIO
6544address spaces are supported. A new external interface,
6545AcpiCheckAddressRange,
6546allows drivers to check an address range against the ACPI namespace. See
6547the
6548ACPICA reference for additional details. Adds one new file,
6549utilities/utaddress.c. Lin Ming, Bob Moore.
6550
6551Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
6552Control
6553and
6554Status registers, update the ACPI 5.0 flags, and update internal data
6555structures to handle an FADT larger than 256 bytes. The size of the ACPI
65565.0
6557FADT is 268 bytes.
6558
6559Updated all ACPICA copyrights and signons to 2012. Added the 2012
6560copyright to
6561all module headers and signons, including the standard Linux header. This
6562affects virtually every file in the ACPICA core subsystem, iASL compiler,
6563and
6564all ACPICA utilities.
6565
6566Example Code and Data Size: These are the sizes for the OS-independent
6567acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6568debug
6569version of the code includes the debug output trace mechanism and has a
6570much
6571larger code and data size.
6572
6573  Previous Release:
6574    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
6575    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
6576  Current Release:
6577    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
6578    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
6579
6580
65812) iASL Compiler/Disassembler and Tools:
6582
6583Disassembler: fixed a problem with the automatic resource tag generation
6584support. Fixes a problem where the resource tags are inadvertently not
6585constructed if the table being disassembled contains external references
6586to
6587control methods. Moved the actual construction of the tags to after the
6588final
6589namespace is constructed (after 2nd parse is invoked due to external
6590control
6591method references.) ACPICA BZ 941.
6592
6593Table Compiler: Make all "generic" operators caseless. These are the
6594operators
6595like UINT8, String, etc. Making these caseless improves ease-of-use.
6596ACPICA BZ
6597934.
6598
6599----------------------------------------
660023 November 2011. Summary of changes for version 20111123:
6601
66020) ACPI 5.0 Support:
6603
6604This release contains full support for the ACPI 5.0 specification, as
6605summarized below.
6606
6607Reduced Hardware Support:
6608-------------------------
6609
6610This support allows for ACPI systems without the usual ACPI hardware.
6611This
6612support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
6613will
6614not attempt to initialize or use any of the usual ACPI hardware. Note,
6615when
6616this flag is set, all of the following ACPI hardware is assumed to be not
6617present and is not initialized or accessed:
6618
6619    General Purpose Events (GPEs)
6620    Fixed Events (PM1a/PM1b and PM Control)
6621    Power Management Timer and Console Buttons (power/sleep)
6622    Real-time Clock Alarm
6623    Global Lock
6624    System Control Interrupt (SCI)
6625    The FACS is assumed to be non-existent
6626
6627ACPI Tables:
6628------------
6629
6630All new tables and updates to existing tables are fully supported in the
6631ACPICA headers (for use by device drivers), the disassembler, and the
6632iASL
6633Data Table Compiler. ACPI 5.0 defines these new tables:
6634
6635    BGRT        /* Boot Graphics Resource Table */
6636    DRTM        /* Dynamic Root of Trust for Measurement table */
6637    FPDT        /* Firmware Performance Data Table */
6638    GTDT        /* Generic Timer Description Table */
6639    MPST        /* Memory Power State Table */
6640    PCCT        /* Platform Communications Channel Table */
6641    PMTT        /* Platform Memory Topology Table */
6642    RASF        /* RAS Feature table */
6643
6644Operation Regions/SpaceIDs:
6645---------------------------
6646
6647All new operation regions are fully supported by the iASL compiler, the
6648disassembler, and the ACPICA runtime code (for dispatch to region
6649handlers.)
6650The new operation region Space IDs are:
6651
6652    GeneralPurposeIo
6653    GenericSerialBus
6654
6655Resource Descriptors:
6656---------------------
6657
6658All new ASL resource descriptors are fully supported by the iASL
6659compiler,
6660the
6661ASL/AML disassembler, and the ACPICA runtime Resource Manager code
6662(including
6663all new predefined resource tags). New descriptors are:
6664
6665    FixedDma
6666    GpioIo
6667    GpioInt
6668    I2cSerialBus
6669    SpiSerialBus
6670    UartSerialBus
6671
6672ASL/AML Operators, New and Modified:
6673------------------------------------
6674
6675One new operator is added, the Connection operator, which is used to
6676associate
6677a GeneralPurposeIo or GenericSerialBus resource descriptor with
6678individual
6679field objects within an operation region. Several new protocols are
6680associated
6681with the AccessAs operator. All are fully supported by the iASL compiler,
6682disassembler, and runtime ACPICA AML interpreter:
6683
6684    Connection                      // Declare Field Connection
6685attributes
6686    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
6687    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
6688Protocol
6689    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
6690    RawDataBuffer                       // Data type for Vendor Data
6691fields
6692
6693Predefined ASL/AML Objects:
6694---------------------------
6695
6696All new predefined objects/control-methods are supported by the iASL
6697compiler
6698and the ACPICA runtime validation/repair (arguments and return values.)
6699New
6700predefined names include the following:
6701
6702Standard Predefined Names (Objects or Control Methods):
6703    _AEI, _CLS, _CPC, _CWS, _DEP,
6704    _DLM, _EVT, _GCP, _CRT, _GWS,
6705    _HRV, _PRE, _PSE, _SRT, _SUB.
6706
6707Resource Tags (Names used to access individual fields within resource
6708descriptors):
6709    _DBT, _DPL, _DRS, _END, _FLC,
6710    _IOR, _LIN, _MOD, _PAR, _PHA,
6711    _PIN, _PPI, _POL, _RXL, _SLV,
6712    _SPE, _STB, _TXL, _VEN.
6713
6714ACPICA External Interfaces:
6715---------------------------
6716
6717Several new interfaces have been defined for use by ACPI-related device
6718drivers and other host OS services:
6719
6720AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
6721to
6722acquire and release AML mutexes that are defined in the DSDT/SSDT tables
6723provided by the BIOS. They are intended to be used in conjunction with
6724the
6725ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
6726mutual exclusion with the AML code/interpreter.
6727
6728AcpiGetEventResources: Returns the (formatted) resource descriptors as
6729defined
6730by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
6731provides
6732resource descriptors associated with hardware-reduced platform events,
6733similar
6734to the AcpiGetCurrentResources interface.
6735
6736Operation Region Handlers: For General Purpose IO and Generic Serial Bus
6737operation regions, information about the Connection() object and any
6738optional
6739length information is passed to the region handler within the Context
6740parameter.
6741
6742AcpiBufferToResource: This interface converts a raw AML buffer containing
6743a
6744resource template or resource descriptor to the ACPI_RESOURCE internal
6745format
6746suitable for use by device drivers. Can be used by an operation region
6747handler
6748to convert the Connection() buffer object into a ACPI_RESOURCE.
6749
6750Miscellaneous/Tools/TestSuites:
6751-------------------------------
6752
6753Support for extended _HID names (Four alpha characters instead of three).
6754Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
6755Support for ACPI 5.0 features in the ASLTS test suite.
6756Fully updated documentation (ACPICA and iASL reference documents.)
6757
6758ACPI Table Definition Language:
6759-------------------------------
6760
6761Support for this language was implemented and released as a subsystem of
6762the
6763iASL compiler in 2010. (See the iASL compiler User Guide.)
6764
6765
6766Non-ACPI 5.0 changes for this release:
6767--------------------------------------
6768
67691) ACPICA Core Subsystem:
6770
6771Fix a problem with operation region declarations where a failure can
6772occur
6773if
6774the region name and an argument that evaluates to an object (such as the
6775region address) are in different namespace scopes. Lin Ming, ACPICA BZ
6776937.
6777
6778Do not abort an ACPI table load if an invalid space ID is found within.
6779This
6780will be caught later if the offending method is executed. ACPICA BZ 925.
6781
6782Fixed an issue with the FFixedHW space ID where the ID was not always
6783recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
6784
6785Fixed a problem with the 32-bit generation of the unix-specific OSL
6786(osunixxf.c). Lin Ming, ACPICA BZ 936.
6787
6788Several changes made to enable generation with the GCC 4.6 compiler.
6789ACPICA BZ
6790935.
6791
6792New error messages: Unsupported I/O requests (not 8/16/32 bit), and
6793Index/Bank
6794field registers out-of-range.
6795
67962) iASL Compiler/Disassembler and Tools:
6797
6798iASL: Implemented the __PATH__ operator, which returns the full pathname
6799of
6800the current source file.
6801
6802AcpiHelp: Automatically display expanded keyword information for all ASL
6803operators.
6804
6805Debugger: Add "Template" command to disassemble/dump resource template
6806buffers.
6807
6808Added a new master script to generate and execute the ASLTS test suite.
6809Automatically handles 32- and 64-bit generation. See tests/aslts.sh
6810
6811iASL: Fix problem with listing generation during processing of the
6812Switch()
6813operator where AML listing was disabled until the entire Switch block was
6814completed.
6815
6816iASL: Improve support for semicolon statement terminators. Fix "invalid
6817character" message for some cases when the semicolon is used. Semicolons
6818are
6819now allowed after every <Term> grammar element. ACPICA BZ 927.
6820
6821iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
6822923.
6823
6824Disassembler: Fix problem with disassembly of the DataTableRegion
6825operator
6826where an inadvertent "Unhandled deferred opcode" message could be
6827generated.
6828
68293) Example Code and Data Size
6830
6831These are the sizes for the OS-independent acpica.lib produced by the
6832Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6833includes the debug output trace mechanism and has a much larger code and
6834data
6835size.
6836
6837  Previous Release:
6838    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6839    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6840  Current Release:
6841    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
6842    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
6843
6844----------------------------------------
684522 September 2011. Summary of changes for version 20110922:
6846
68470) ACPI 5.0 News:
6848
6849Support for ACPI 5.0 in ACPICA has been underway for several months and
6850will
6851be released at the same time that ACPI 5.0 is officially released.
6852
6853The ACPI 5.0 specification is on track for release in the next few
6854months.
6855
68561) ACPICA Core Subsystem:
6857
6858Fixed a problem where the maximum sleep time for the Sleep() operator was
6859intended to be limited to two seconds, but was inadvertently limited to
686020
6861seconds instead.
6862
6863Linux and Unix makefiles: Added header file dependencies to ensure
6864correct
6865generation of ACPICA core code and utilities. Also simplified the
6866makefiles
6867considerably through the use of the vpath variable to specify search
6868paths.
6869ACPICA BZ 924.
6870
68712) iASL Compiler/Disassembler and Tools:
6872
6873iASL: Implemented support to check the access length for all fields
6874created to
6875access named Resource Descriptor fields. For example, if a resource field
6876is
6877defined to be two bits, a warning is issued if a CreateXxxxField() is
6878used
6879with an incorrect bit length. This is implemented for all current
6880resource
6881descriptor names. ACPICA BZ 930.
6882
6883Disassembler: Fixed a byte ordering problem with the output of 24-bit and
688456-
6885bit integers.
6886
6887iASL: Fixed a couple of issues associated with variable-length package
6888objects. 1) properly handle constants like One, Ones, Zero -- do not make
6889a
6890VAR_PACKAGE when these are used as a package length. 2) Allow the
6891VAR_PACKAGE
6892opcode (in addition to PACKAGE) when validating object types for
6893predefined
6894names.
6895
6896iASL: Emit statistics for all output files (instead of just the ASL input
6897and
6898AML output). Includes listings, hex files, etc.
6899
6900iASL: Added -G option to the table compiler to allow the compilation of
6901custom
6902ACPI tables. The only part of a table that is required is the standard
690336-
6904byte
6905ACPI header.
6906
6907AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
6908headers),
6909which also adds correct 64-bit support. Also, now all output filenames
6910are
6911completely lower case.
6912
6913AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
6914loading table files. A warning is issued for any such tables. The only
6915exception is an FADT. This also fixes a possible fault when attempting to
6916load
6917non-AML tables. ACPICA BZ 932.
6918
6919AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
6920a
6921missing table terminator could cause a fault when using the -p option.
6922
6923AcpiSrc: Fixed a possible divide-by-zero fault when generating file
6924statistics.
6925
69263) Example Code and Data Size
6927
6928These are the sizes for the OS-independent acpica.lib produced by the
6929Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6930includes the debug output trace mechanism and has a much larger code and
6931data
6932size.
6933
6934  Previous Release (VC 9.0):
6935    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6936    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6937  Current Release (VC 9.0):
6938    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6939    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6940
6941
6942----------------------------------------
694323 June 2011. Summary of changes for version 20110623:
6944
69451) ACPI CA Core Subsystem:
6946
6947Updated the predefined name repair mechanism to not attempt repair of a
6948_TSS
6949return object if a _PSS object is present. We can only sort the _TSS
6950return
6951package if there is no _PSS within the same scope. This is because if
6952_PSS
6953is
6954present, the ACPI specification dictates that the _TSS Power Dissipation
6955field
6956is to be ignored, and therefore some BIOSs leave garbage values in the
6957_TSS
6958Power field(s). In this case, it is best to just return the _TSS package
6959as-
6960is. Reported by, and fixed with assistance from Fenghua Yu.
6961
6962Added an option to globally disable the control method return value
6963validation
6964and repair. This runtime option can be used to disable return value
6965repair
6966if
6967this is causing a problem on a particular machine. Also added an option
6968to
6969AcpiExec (-dr) to set this disable flag.
6970
6971All makefiles and project files: Major changes to improve generation of
6972ACPICA
6973tools. ACPICA BZ 912:
6974    Reduce default optimization levels to improve compatibility
6975    For Linux, add strict-aliasing=0 for gcc 4
6976    Cleanup and simplify use of command line defines
6977    Cleanup multithread library support
6978    Improve usage messages
6979
6980Linux-specific header: update handling of THREAD_ID and pthread. For the
698132-
6982bit case, improve casting to eliminate possible warnings, especially with
6983the
6984acpica tools.
6985
6986Example Code and Data Size: These are the sizes for the OS-independent
6987acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6988debug
6989version of the code includes the debug output trace mechanism and has a
6990much
6991larger code and data size.
6992
6993  Previous Release (VC 9.0):
6994    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
6995    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6996  Current Release (VC 9.0):
6997    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6998    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6999
70002) iASL Compiler/Disassembler and Tools:
7001
7002With this release, a new utility named "acpihelp" has been added to the
7003ACPICA
7004package. This utility summarizes the ACPI specification chapters for the
7005ASL
7006and AML languages. It generates under Linux/Unix as well as Windows, and
7007provides the following functionality:
7008    Find/display ASL operator(s) -- with description and syntax.
7009    Find/display ASL keyword(s) -- with exact spelling and descriptions.
7010    Find/display ACPI predefined name(s) -- with description, number
7011        of arguments, and the return value data type.
7012    Find/display AML opcode name(s) -- with opcode, arguments, and
7013grammar.
7014    Decode/display AML opcode -- with opcode name, arguments, and
7015grammar.
7016
7017Service Layers: Make multi-thread support configurable. Conditionally
7018compile
7019the multi-thread support so that threading libraries will not be linked
7020if
7021not
7022necessary. The only tool that requires multi-thread support is AcpiExec.
7023
7024iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
7025of
7026Bison appear to want the interface to yyerror to be a const char * (or at
7027least this is a problem when generating iASL on some systems.) ACPICA BZ
7028923
7029Pierre Lejeune.
7030
7031Tools: Fix for systems where O_BINARY is not defined. Only used for
7032Windows
7033versions of the tools.
7034
7035----------------------------------------
703627 May 2011. Summary of changes for version 20110527:
7037
70381) ACPI CA Core Subsystem:
7039
7040ASL Load() operator: Reinstate most restrictions on the incoming ACPI
7041table
7042signature. Now, only allow SSDT, OEMx, and a null signature. History:
7043    1) Originally, we checked the table signature for "SSDT" or "PSDT".
7044       (PSDT is now obsolete.)
7045    2) We added support for OEMx tables, signature "OEM" plus a fourth
7046       "don't care" character.
7047    3) Valid tables were encountered with a null signature, so we just
7048       gave up on validating the signature, (05/2008).
7049    4) We encountered non-AML tables such as the MADT, which caused
7050       interpreter errors and kernel faults. So now, we once again allow
7051       only SSDT, OEMx, and now, also a null signature. (05/2011).
7052
7053Added the missing _TDL predefined name to the global name list in order
7054to
7055enable validation. Affects both the core ACPICA code and the iASL
7056compiler.
7057
7058Example Code and Data Size: These are the sizes for the OS-independent
7059acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7060debug
7061version of the code includes the debug output trace mechanism and has a
7062much
7063larger code and data size.
7064
7065  Previous Release (VC 9.0):
7066    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
7067    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
7068  Current Release (VC 9.0):
7069    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
7070    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7071
70722) iASL Compiler/Disassembler and Tools:
7073
7074Debugger/AcpiExec: Implemented support for "complex" method arguments on
7075the
7076debugger command line. This adds support beyond simple integers --
7077including
7078Strings, Buffers, and Packages. Includes support for nested packages.
7079Increased the default command line buffer size to accommodate these
7080arguments.
7081See the ACPICA reference for details and syntax. ACPICA BZ 917.
7082
7083Debugger/AcpiExec: Implemented support for "default" method arguments for
7084the
7085Execute/Debug command. Now, the debugger will always invoke a control
7086method
7087with the required number of arguments -- even if the command line
7088specifies
7089none or insufficient arguments. It uses default integer values for any
7090missing
7091arguments. Also fixes a bug where only six method arguments maximum were
7092supported instead of the required seven.
7093
7094Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
7095and
7096also return status in order to prevent buffer overruns. See the ACPICA
7097reference for details and syntax. ACPICA BZ 921
7098
7099iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
7100makefiles to simplify support for the two different but similar parser
7101generators, bison and yacc.
7102
7103Updated the generic unix makefile for gcc 4. The default gcc version is
7104now
7105expected to be 4 or greater, since options specific to gcc 4 are used.
7106
7107----------------------------------------
710813 April 2011. Summary of changes for version 20110413:
7109
71101) ACPI CA Core Subsystem:
7111
7112Implemented support to execute a so-called "orphan" _REG method under the
7113EC
7114device. This change will force the execution of a _REG method underneath
7115the
7116EC
7117device even if there is no corresponding operation region of type
7118EmbeddedControl. Fixes a problem seen on some machines and apparently is
7119compatible with Windows behavior. ACPICA BZ 875.
7120
7121Added more predefined methods that are eligible for automatic NULL
7122package
7123element removal. This change adds another group of predefined names to
7124the
7125list
7126of names that can be repaired by having NULL package elements dynamically
7127removed. This group are those methods that return a single variable-
7128length
7129package containing simple data types such as integers, buffers, strings.
7130This
7131includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
7132_PSL,
7133_Sx,
7134and _TZD. ACPICA BZ 914.
7135
7136Split and segregated all internal global lock functions to a new file,
7137evglock.c.
7138
7139Updated internal address SpaceID for DataTable regions. Moved this
7140internal
7141space
7142id in preparation for ACPI 5.0 changes that will include some new space
7143IDs.
7144This
7145change should not affect user/host code.
7146
7147Example Code and Data Size: These are the sizes for the OS-independent
7148acpica.lib
7149produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
7150version of
7151the code includes the debug output trace mechanism and has a much larger
7152code
7153and
7154data size.
7155
7156  Previous Release (VC 9.0):
7157    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
7158    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
7159  Current Release (VC 9.0):
7160    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
7161    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
7162
71632) iASL Compiler/Disassembler and Tools:
7164
7165iASL/DTC: Major update for new grammar features. Allow generic data types
7166in
7167custom ACPI tables. Field names are now optional. Any line can be split
7168to
7169multiple lines using the continuation char (\). Large buffers now use
7170line-
7171continuation character(s) and no colon on the continuation lines. See the
7172grammar
7173update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
7174Moore.
7175
7176iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
7177statements.
7178Since the parser stuffs a "zero" as the return value for these statements
7179(due
7180to
7181the underlying AML grammar), they were seen as "return with value" by the
7182iASL
7183semantic checking. They are now seen correctly as "null" return
7184statements.
7185
7186iASL: Check if a_REG declaration has a corresponding Operation Region.
7187Adds a
7188check for each _REG to ensure that there is in fact a corresponding
7189operation
7190region declaration in the same scope. If not, the _REG method is not very
7191useful
7192since it probably won't be executed. ACPICA BZ 915.
7193
7194iASL/DTC: Finish support for expression evaluation. Added a new
7195expression
7196parser
7197that implements c-style operator precedence and parenthesization. ACPICA
7198bugzilla
7199908.
7200
7201Disassembler/DTC: Remove support for () and <> style comments in data
7202tables.
7203Now
7204that DTC has full expression support, we don't want to have comment
7205strings
7206that
7207start with a parentheses or a less-than symbol. Now, only the standard /*
7208and
7209//
7210comments are supported, as well as the bracket [] comments.
7211
7212AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
7213"unusual"
7214headers in the acpidump file. Update the header validation to support
7215these
7216tables. Problem introduced in previous AcpiXtract version in the change
7217to
7218support "wrong checksum" error messages emitted by acpidump utility.
7219
7220iASL: Add a * option to generate all template files (as a synonym for
7221ALL)
7222as
7223in
7224"iasl -T *" or "iasl -T ALL".
7225
7226iASL/DTC: Do not abort compiler on fatal errors. We do not want to
7227completely
7228abort the compiler on "fatal" errors, simply should abort the current
7229compile.
7230This allows multiple compiles with a single (possibly wildcard) compiler
7231invocation.
7232
7233----------------------------------------
723416 March 2011. Summary of changes for version 20110316:
7235
72361) ACPI CA Core Subsystem:
7237
7238Fixed a problem caused by a _PRW method appearing at the namespace root
7239scope
7240during the setup of wake GPEs. A fault could occur if a _PRW directly
7241under
7242the
7243root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
7244
7245Implemented support for "spurious" Global Lock interrupts. On some
7246systems, a
7247global lock interrupt can occur without the pending flag being set. Upon
7248a
7249GL
7250interrupt, we now ensure that a thread is actually waiting for the lock
7251before
7252signaling GL availability. Rafael Wysocki, Bob Moore.
7253
7254Example Code and Data Size: These are the sizes for the OS-independent
7255acpica.lib
7256produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
7257version of
7258the code includes the debug output trace mechanism and has a much larger
7259code
7260and
7261data size.
7262
7263  Previous Release (VC 9.0):
7264    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7265    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7266  Current Release (VC 9.0):
7267    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
7268    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
7269
72702) iASL Compiler/Disassembler and Tools:
7271
7272Implemented full support for the "SLIC" ACPI table. Includes support in
7273the
7274header files, disassembler, table compiler, and template generator. Bob
7275Moore,
7276Lin Ming.
7277
7278AcpiXtract: Correctly handle embedded comments and messages from
7279AcpiDump.
7280Apparently some or all versions of acpidump will occasionally emit a
7281comment
7282like
7283"Wrong checksum", etc., into the dump file. This was causing problems for
7284AcpiXtract. ACPICA BZ 905.
7285
7286iASL: Fix the Linux makefile by removing an inadvertent double file
7287inclusion.
7288ACPICA BZ 913.
7289
7290AcpiExec: Update installation of operation region handlers. Install one
7291handler
7292for a user-defined address space. This is used by the ASL test suite
7293(ASLTS).
7294
7295----------------------------------------
729611 February 2011. Summary of changes for version 20110211:
7297
72981) ACPI CA Core Subsystem:
7299
7300Added a mechanism to defer _REG methods for some early-installed
7301handlers.
7302Most user handlers should be installed before call to
7303AcpiEnableSubsystem.
7304However, Event handlers and region handlers should be installed after
7305AcpiInitializeObjects. Override handlers for the "default" regions should
7306be
7307installed early, however. This change executes all _REG methods for the
7308default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
7309chicken/egg issues between them. ACPICA BZ 848.
7310
7311Implemented an optimization for GPE detection. This optimization will
7312simply
7313ignore GPE registers that contain no enabled GPEs -- there is no need to
7314read the register since this information is available internally. This
7315becomes more important on machines with a large GPE space. ACPICA
7316bugzilla
7317884. Lin Ming. Suggestion from Joe Liu.
7318
7319Removed all use of the highly unreliable FADT revision field. The
7320revision
7321number in the FADT has been found to be completely unreliable and cannot
7322be
7323trusted. Only the actual table length can be used to infer the version.
7324This
7325change updates the ACPICA core and the disassembler so that both no
7326longer
7327even look at the FADT version and instead depend solely upon the FADT
7328length.
7329
7330Fix an unresolved name issue for the no-debug and no-error-message source
7331generation cases. The _AcpiModuleName was left undefined in these cases,
7332but
7333it is actually needed as a parameter to some interfaces. Define
7334_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
7335
7336Split several large files (makefiles and project files updated)
7337  utglobal.c   -> utdecode.c
7338  dbcomds.c    -> dbmethod.c dbnames.c
7339  dsopcode.c   -> dsargs.c dscontrol.c
7340  dsload.c     -> dsload2.c
7341  aslanalyze.c -> aslbtypes.c aslwalks.c
7342
7343Example Code and Data Size: These are the sizes for the OS-independent
7344acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7345debug version of the code includes the debug output trace mechanism and
7346has
7347a much larger code and data size.
7348
7349  Previous Release (VC 9.0):
7350    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7351    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7352  Current Release (VC 9.0):
7353    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7354    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7355
73562) iASL Compiler/Disassembler and Tools:
7357
7358iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
7359These are useful C-style macros with the standard definitions. ACPICA
7360bugzilla 898.
7361
7362iASL/DTC: Added support for integer expressions and labels. Support for
7363full
7364expressions for all integer fields in all ACPI tables. Support for labels
7365in
7366"generic" portions of tables such as UEFI. See the iASL reference manual.
7367
7368Debugger: Added a command to display the status of global handlers. The
7369"handlers" command will display op region, fixed event, and miscellaneous
7370global handlers. installation status -- and for op regions, whether
7371default
7372or user-installed handler will be used.
7373
7374iASL: Warn if reserved method incorrectly returns a value. Many
7375predefined
7376names are defined such that they do not return a value. If implemented as
7377a
7378method, issue a warning if such a name explicitly returns a value. ACPICA
7379Bugzilla 855.
7380
7381iASL: Added detection of GPE method name conflicts. Detects a conflict
7382where
7383there are two GPE methods of the form _Lxy and _Exy in the same scope.
7384(For
7385example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
7386
7387iASL/DTC: Fixed a couple input scanner issues with comments and line
7388numbers. Comment remover could get confused and miss a comment ending.
7389Fixed
7390a problem with line counter maintenance.
7391
7392iASL/DTC: Reduced the severity of some errors from fatal to error. There
7393is
7394no need to abort on simple errors within a field definition.
7395
7396Debugger: Simplified the output of the help command. All help output now
7397in
7398a single screen, instead of help subcommands. ACPICA Bugzilla 897.
7399
7400----------------------------------------
740112 January 2011. Summary of changes for version 20110112:
7402
74031) ACPI CA Core Subsystem:
7404
7405Fixed a race condition between method execution and namespace walks that
7406can
7407possibly cause a fault. The problem was apparently introduced in version
740820100528 as a result of a performance optimization that reduces the
7409number
7410of
7411namespace walks upon method exit by using the delete_namespace_subtree
7412function instead of the delete_namespace_by_owner function used
7413previously.
7414Bug is a missing namespace lock in the delete_namespace_subtree function.
7415dana.myers@oracle.com
7416
7417Fixed several issues and a possible fault with the automatic "serialized"
7418method support. History: This support changes a method to "serialized" on
7419the
7420fly if the method generates an AE_ALREADY_EXISTS error, indicating the
7421possibility that it cannot handle reentrancy. This fix repairs a couple
7422of
7423issues seen in the field, especially on machines with many cores:
7424
7425    1) Delete method children only upon the exit of the last thread,
7426       so as to not delete objects out from under other running threads
7427      (and possibly causing a fault.)
7428    2) Set the "serialized" bit for the method only upon the exit of the
7429       Last thread, so as to not cause deadlock when running threads
7430       attempt to exit.
7431    3) Cleanup the use of the AML "MethodFlags" and internal method flags
7432       so that there is no longer any confusion between the two.
7433
7434    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
7435
7436Debugger: Now lock the namespace for duration of a namespace dump.
7437Prevents
7438issues if the namespace is changing dynamically underneath the debugger.
7439Especially affects temporary namespace nodes, since the debugger displays
7440these also.
7441
7442Updated the ordering of include files. The ACPICA headers should appear
7443before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
7444set
7445any necessary compiler-specific defines, etc. Affects the ACPI-related
7446tools
7447and utilities.
7448
7449Updated all ACPICA copyrights and signons to 2011. Added the 2011
7450copyright
7451to all module headers and signons, including the Linux header. This
7452affects
7453virtually every file in the ACPICA core subsystem, iASL compiler, and all
7454utilities.
7455
7456Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
7457project files for VC++ 6.0 are now obsolete. New project files can be
7458found
7459under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
7460details.
7461
7462Example Code and Data Size: These are the sizes for the OS-independent
7463acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7464debug version of the code includes the debug output trace mechanism and
7465has a
7466much larger code and data size.
7467
7468  Previous Release (VC 6.0):
7469    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
7470    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
7471  Current Release (VC 9.0):
7472    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7473    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7474
74752) iASL Compiler/Disassembler and Tools:
7476
7477iASL: Added generic data types to the Data Table compiler. Add "generic"
7478data
7479types such as UINT32, String, Unicode, etc., to simplify the generation
7480of
7481platform-defined tables such as UEFI. Lin Ming.
7482
7483iASL: Added listing support for the Data Table Compiler. Adds listing
7484support
7485(-l) to display actual binary output for each line of input code.
7486
7487----------------------------------------
748809 December 2010. Summary of changes for version 20101209:
7489
74901) ACPI CA Core Subsystem:
7491
7492Completed the major overhaul of the GPE support code that was begun in
7493July
74942010. Major features include: removal of _PRW execution in ACPICA (host
7495executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
7496changes to existing interfaces, simplification of GPE handler operation,
7497and
7498a handful of new interfaces:
7499
7500    AcpiUpdateAllGpes
7501    AcpiFinishGpe
7502    AcpiSetupGpeForWake
7503    AcpiSetGpeWakeMask
7504    One new file, evxfgpe.c to consolidate all external GPE interfaces.
7505
7506See the ACPICA Programmer Reference for full details and programming
7507information. See the new section 4.4 "General Purpose Event (GPE)
7508Support"
7509for a full overview, and section 8.7 "ACPI General Purpose Event
7510Management"
7511for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
7512Ming,
7513Bob Moore, Rafael Wysocki.
7514
7515Implemented a new GPE feature for Windows compatibility, the "Implicit
7516Wake
7517GPE Notify". This feature will automatically issue a Notify(2) on a
7518device
7519when a Wake GPE is received if there is no corresponding GPE method or
7520handler. ACPICA BZ 870.
7521
7522Fixed a problem with the Scope() operator during table parse and load
7523phase.
7524During load phase (table load or method execution), the scope operator
7525should
7526not enter the target into the namespace. Instead, it should open a new
7527scope
7528at the target location. Linux BZ 19462, ACPICA BZ 882.
7529
7530Example Code and Data Size: These are the sizes for the OS-independent
7531acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7532debug version of the code includes the debug output trace mechanism and
7533has a
7534much larger code and data size.
7535
7536  Previous Release:
7537    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
7538    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
7539  Current Release:
7540    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7541    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7542
75432) iASL Compiler/Disassembler and Tools:
7544
7545iASL: Relax the alphanumeric restriction on _CID strings. These strings
7546are
7547"bus-specific" per the ACPI specification, and therefore any characters
7548are
7549acceptable. The only checks that can be performed are for a null string
7550and
7551perhaps for a leading asterisk. ACPICA BZ 886.
7552
7553iASL: Fixed a problem where a syntax error that caused a premature EOF
7554condition on the source file emitted a very confusing error message. The
7555premature EOF is now detected correctly. ACPICA BZ 891.
7556
7557Disassembler: Decode the AccessSize within a Generic Address Structure
7558(byte
7559access, word access, etc.) Note, this field does not allow arbitrary bit
7560access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
7561
7562New: AcpiNames utility - Example namespace dump utility. Shows an example
7563of
7564ACPICA configuration for a minimal namespace dump utility. Uses table and
7565namespace managers, but no AML interpreter. Does not add any
7566functionality
7567over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
7568partition and configure ACPICA. ACPICA BZ 883.
7569
7570AML Debugger: Increased the debugger buffer size for method return
7571objects.
7572Was 4K, increased to 16K. Also enhanced error messages for debugger
7573method
7574execution, including the buffer overflow case.
7575
7576----------------------------------------
757713 October 2010. Summary of changes for version 20101013:
7578
75791) ACPI CA Core Subsystem:
7580
7581Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
7582now
7583clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
7584HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
7585
7586Changed the type of the predefined namespace object _TZ from ThermalZone
7587to
7588Device. This was found to be confusing to the host software that
7589processes
7590the various thermal zones, since _TZ is not really a ThermalZone.
7591However,
7592a
7593Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
7594Zhang.
7595
7596Added Windows Vista SP2 to the list of supported _OSI strings. The actual
7597string is "Windows 2006 SP2".
7598
7599Eliminated duplicate code in AcpiUtExecute* functions. Now that the
7600nsrepair
7601code automatically repairs _HID-related strings, this type of code is no
7602longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
7603878.
7604
7605Example Code and Data Size: These are the sizes for the OS-independent
7606acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7607debug version of the code includes the debug output trace mechanism and
7608has a
7609much larger code and data size.
7610
7611  Previous Release:
7612    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7613    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7614  Current Release:
7615    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7616    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7617
76182) iASL Compiler/Disassembler and Tools:
7619
7620iASL: Implemented additional compile-time validation for _HID strings.
7621The
7622non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
7623length
7624of
7625the string must be exactly seven or eight characters. For both _HID and
7626_CID
7627strings, all characters must be alphanumeric. ACPICA BZ 874.
7628
7629iASL: Allow certain "null" resource descriptors. Some BIOS code creates
7630descriptors that are mostly or all zeros, with the expectation that they
7631will
7632be filled in at runtime. iASL now allows this as long as there is a
7633"resource
7634tag" (name) associated with the descriptor, which gives the ASL a handle
7635needed to modify the descriptor. ACPICA BZ 873.
7636
7637Added single-thread support to the generic Unix application OSL.
7638Primarily
7639for iASL support, this change removes the use of semaphores in the
7640single-
7641threaded ACPICA tools/applications - increasing performance. The
7642_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
7643option. ACPICA BZ 879.
7644
7645AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
7646support
7647for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
7648
7649iASL: Moved all compiler messages to a new file, aslmessages.h.
7650
7651----------------------------------------
765215 September 2010. Summary of changes for version 20100915:
7653
76541) ACPI CA Core Subsystem:
7655
7656Removed the AcpiOsDerivePciId OSL interface. The various host
7657implementations
7658of this function were not OS-dependent and are now obsolete and can be
7659removed from all host OSLs. This function has been replaced by
7660AcpiHwDerivePciId, which is now part of the ACPICA core code.
7661AcpiHwDerivePciId has been implemented without recursion. Adds one new
7662module, hwpci.c. ACPICA BZ 857.
7663
7664Implemented a dynamic repair for _HID and _CID strings. The following
7665problems are now repaired at runtime: 1) Remove a leading asterisk in the
7666string, and 2) the entire string is uppercased. Both repairs are in
7667accordance with the ACPI specification and will simplify host driver
7668code.
7669ACPICA BZ 871.
7670
7671The ACPI_THREAD_ID type is no longer configurable, internally it is now
7672always UINT64. This simplifies the ACPICA code, especially any printf
7673output.
7674UINT64 is the only common data type for all thread_id types across all
7675operating systems. It is now up to the host OSL to cast the native
7676thread_id
7677type to UINT64 before returning the value to ACPICA (via
7678AcpiOsGetThreadId).
7679Lin Ming, Bob Moore.
7680
7681Added the ACPI_INLINE type to enhance the ACPICA configuration. The
7682"inline"
7683keyword is not standard across compilers, and this type allows inline to
7684be
7685configured on a per-compiler basis. Lin Ming.
7686
7687Made the system global AcpiGbl_SystemAwakeAndRunning publicly
7688available.
7689Added an extern for this boolean in acpixf.h. Some hosts utilize this
7690value
7691during suspend/restore operations. ACPICA BZ 869.
7692
7693All code that implements error/warning messages with the "ACPI:" prefix
7694has
7695been moved to a new module, utxferror.c.
7696
7697The UINT64_OVERLAY was moved to utmath.c, which is the only module where
7698it
7699is used. ACPICA BZ 829. Lin Ming, Bob Moore.
7700
7701Example Code and Data Size: These are the sizes for the OS-independent
7702acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7703debug version of the code includes the debug output trace mechanism and
7704has a
7705much larger code and data size.
7706
7707  Previous Release:
7708    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
7709    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
7710  Current Release:
7711    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7712    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7713
77142) iASL Compiler/Disassembler and Tools:
7715
7716iASL/Disassembler: Write ACPI errors to stderr instead of the output
7717file.
7718This keeps the output files free of random error messages that may
7719originate
7720from within the namespace/interpreter code. Used this opportunity to
7721merge
7722all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
7723866. Lin Ming, Bob Moore.
7724
7725Tools: update some printfs for ansi warnings on size_t. Handle width
7726change
7727of size_t on 32-bit versus 64-bit generations. Lin Ming.
7728
7729----------------------------------------
773006 August 2010. Summary of changes for version 20100806:
7731
77321) ACPI CA Core Subsystem:
7733
7734Designed and implemented a new host interface to the _OSI support code.
7735This
7736will allow the host to dynamically add or remove multiple _OSI strings,
7737as
7738well as install an optional handler that is called for each _OSI
7739invocation.
7740Also added a new AML debugger command, 'osi' to display and modify the
7741global
7742_OSI string table, and test support in the AcpiExec utility. See the
7743ACPICA
7744reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
7745New Functions:
7746    AcpiInstallInterface - Add an _OSI string.
7747    AcpiRemoveInterface - Delete an _OSI string.
7748    AcpiInstallInterfaceHandler - Install optional _OSI handler.
7749Obsolete Functions:
7750    AcpiOsValidateInterface - no longer used.
7751New Files:
7752    source/components/utilities/utosi.c
7753
7754Re-introduced the support to enable multi-byte transfers for Embedded
7755Controller (EC) operation regions. A reported problem was found to be a
7756bug
7757in the host OS, not in the multi-byte support. Previously, the maximum
7758data
7759size passed to the EC operation region handler was a single byte. There
7760are
7761often EC Fields larger than one byte that need to be transferred, and it
7762is
7763useful for the EC driver to lock these as a single transaction. This
7764change
7765enables single transfers larger than 8 bits. This effectively changes the
7766access to the EC space from ByteAcc to AnyAcc, and will probably require
7767changes to the host OS Embedded Controller driver to enable 16/32/64/256-
7768bit
7769transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
7770
7771Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
7772prototype in acpiosxf.h had the output value pointer as a (void *).
7773It should be a (UINT64 *). This may affect some host OSL code.
7774
7775Fixed a couple problems with the recently modified Linux makefiles for
7776iASL
7777and AcpiExec. These new makefiles place the generated object files in the
7778local directory so that there can be no collisions between the files that
7779are
7780shared between them that are compiled with different options.
7781
7782Example Code and Data Size: These are the sizes for the OS-independent
7783acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7784debug version of the code includes the debug output trace mechanism and
7785has a
7786much larger code and data size.
7787
7788  Previous Release:
7789    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7790    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
7791  Current Release:
7792    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
7793    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
7794
77952) iASL Compiler/Disassembler and Tools:
7796
7797iASL/Disassembler: Added a new option (-da, "disassemble all") to load
7798the
7799namespace from and disassemble an entire group of AML files. Useful for
7800loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
7801and
7802disassembling with one simple command. ACPICA BZ 865. Lin Ming.
7803
7804iASL: Allow multiple invocations of -e option. This change allows
7805multiple
7806uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
7807834.
7808Lin Ming.
7809
7810----------------------------------------
781102 July 2010. Summary of changes for version 20100702:
7812
78131) ACPI CA Core Subsystem:
7814
7815Implemented several updates to the recently added GPE reference count
7816support. The model for "wake" GPEs is changing to give the host OS
7817complete
7818control of these GPEs. Eventually, the ACPICA core will not execute any
7819_PRW
7820methods, since the host already must execute them. Also, additional
7821changes
7822were made to help ensure that the reference counts are kept in proper
7823synchronization with reality. Rafael J. Wysocki.
7824
78251) Ensure that GPEs are not enabled twice during initialization.
78262) Ensure that GPE enable masks stay in sync with the reference count.
78273) Do not inadvertently enable GPEs when writing GPE registers.
78284) Remove the internal wake reference counter and add new AcpiGpeWakeup
7829interface. This interface will set or clear individual GPEs for wakeup.
78305) Remove GpeType argument from AcpiEnable and AcpiDisable. These
7831interfaces
7832are now used for "runtime" GPEs only.
7833
7834Changed the behavior of the GPE install/remove handler interfaces. The
7835GPE
7836is
7837no longer disabled during this process, as it was found to cause problems
7838on
7839some machines. Rafael J. Wysocki.
7840
7841Reverted a change introduced in version 20100528 to enable Embedded
7842Controller multi-byte transfers. This change was found to cause problems
7843with
7844Index Fields and possibly Bank Fields. It will be reintroduced when these
7845problems have been resolved.
7846
7847Fixed a problem with references to Alias objects within Package Objects.
7848A
7849reference to an Alias within the definition of a Package was not always
7850resolved properly. Aliases to objects like Processors, Thermal zones,
7851etc.
7852were resolved to the actual object instead of a reference to the object
7853as
7854it
7855should be. Package objects are only allowed to contain integer, string,
7856buffer, package, and reference objects. Redhat bugzilla 608648.
7857
7858Example Code and Data Size: These are the sizes for the OS-independent
7859acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7860debug version of the code includes the debug output trace mechanism and
7861has a
7862much larger code and data size.
7863
7864  Previous Release:
7865    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7866    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
7867  Current Release:
7868    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7869    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
7870
78712) iASL Compiler/Disassembler and Tools:
7872
7873iASL: Implemented a new compiler subsystem to allow definition and
7874compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
7875These
7876are called "ACPI Data Tables", and the new compiler is the "Data Table
7877Compiler". This compiler is intended to simplify the existing error-prone
7878process of creating these tables for the BIOS, as well as allowing the
7879disassembly, modification, recompilation, and override of existing ACPI
7880data
7881tables. See the iASL User Guide for detailed information.
7882
7883iASL: Implemented a new Template Generator option in support of the new
7884Data
7885Table Compiler. This option will create examples of all known ACPI tables
7886that can be used as the basis for table development. See the iASL
7887documentation and the -T option.
7888
7889Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
7890Descriptor Table).
7891
7892Updated the Linux makefiles for iASL and AcpiExec to place the generated
7893object files in the local directory so that there can be no collisions
7894between the shared files between them that are generated with different
7895options.
7896
7897Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
7898Use
7899the #define __APPLE__ to enable this support.
7900
7901----------------------------------------
790228 May 2010. Summary of changes for version 20100528:
7903
7904Note: The ACPI 4.0a specification was released on April 5, 2010 and is
7905available at www.acpi.info. This is primarily an errata release.
7906
79071) ACPI CA Core Subsystem:
7908
7909Undefined ACPI tables: We are looking for the definitions for the
7910following
7911ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
7912
7913Implemented support to enable multi-byte transfers for Embedded
7914Controller
7915(EC) operation regions. Previously, the maximum data size passed to the
7916EC
7917operation region handler was a single byte. There are often EC Fields
7918larger
7919than one byte that need to be transferred, and it is useful for the EC
7920driver
7921to lock these as a single transaction. This change enables single
7922transfers
7923larger than 8 bits. This effectively changes the access to the EC space
7924from
7925ByteAcc to AnyAcc, and will probably require changes to the host OS
7926Embedded
7927Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
7928bit
7929transfers. Alexey Starikovskiy, Lin Ming
7930
7931Implemented a performance enhancement for namespace search and access.
7932This
7933change enhances the performance of namespace searches and walks by adding
7934a
7935backpointer to the parent in each namespace node. On large namespaces,
7936this
7937change can improve overall ACPI performance by up to 9X. Adding a pointer
7938to
7939each namespace node increases the overall size of the internal namespace
7940by
7941about 5%, since each namespace entry usually consists of both a namespace
7942node and an ACPI operand object. However, this is the first growth of the
7943namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
7944
7945Implemented a performance optimization that reduces the number of
7946namespace
7947walks. On control method exit, only walk the namespace if the method is
7948known
7949to have created namespace objects outside of its local scope. Previously,
7950the
7951entire namespace was traversed on each control method exit. This change
7952can
7953improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
7954Moore.
7955
7956Added support to truncate I/O addresses to 16 bits for Windows
7957compatibility.
7958Some ASL code has been seen in the field that inadvertently has bits set
7959above bit 15. This feature is optional and is enabled if the BIOS
7960requests
7961any Windows OSI strings. It can also be enabled by the host OS. Matthew
7962Garrett, Bob Moore.
7963
7964Added support to limit the maximum time for the ASL Sleep() operator. To
7965prevent accidental deep sleeps, limit the maximum time that Sleep() will
7966actually sleep. Configurable, the default maximum is two seconds. ACPICA
7967bugzilla 854.
7968
7969Added run-time validation support for the _WDG and_WED Microsoft
7970predefined
7971methods. These objects are defined by "Windows Instrumentation", and are
7972not
7973part of the ACPI spec. ACPICA BZ 860.
7974
7975Expanded all statistic counters used during namespace and device
7976initialization from 16 to 32 bits in order to support very large
7977namespaces.
7978
7979Replaced all instances of %d in printf format specifiers with %u since
7980nearly
7981all integers in ACPICA are unsigned.
7982
7983Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
7984returned
7985as AE_NO_HANDLER.
7986
7987Example Code and Data Size: These are the sizes for the OS-independent
7988acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7989debug version of the code includes the debug output trace mechanism and
7990has a
7991much larger code and data size.
7992
7993  Previous Release:
7994    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
7995    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
7996  Current Release:
7997    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7998    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
7999
80002) iASL Compiler/Disassembler and Tools:
8001
8002iASL: Added compiler support for the _WDG and_WED Microsoft predefined
8003methods. These objects are defined by "Windows Instrumentation", and are
8004not
8005part of the ACPI spec. ACPICA BZ 860.
8006
8007AcpiExec: added option to disable the memory tracking mechanism. The -dt
8008option will disable the tracking mechanism, which improves performance
8009considerably.
8010
8011AcpiExec: Restructured the command line options into -d (disable) and -e
8012(enable) options.
8013
8014----------------------------------------
801528 April 2010. Summary of changes for version 20100428:
8016
80171) ACPI CA Core Subsystem:
8018
8019Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
8020including FADT-based and GPE Block Devices, execute any _PRW methods in
8021the
8022new table, and process any _Lxx/_Exx GPE methods in the new table. Any
8023runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
8024immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
8025Devices. Provides compatibility with other ACPI implementations. Two new
8026files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
8027Moore.
8028
8029Fixed a regression introduced in version 20100331 within the table
8030manager
8031where initial table loading could fail. This was introduced in the fix
8032for
8033AcpiReallocateRootTable. Also, renamed some of fields in the table
8034manager
8035data structures to clarify their meaning and use.
8036
8037Fixed a possible allocation overrun during internal object copy in
8038AcpiUtCopySimpleObject. The original code did not correctly handle the
8039case
8040where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
8041847.
8042
8043Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
8044possible access beyond end-of-allocation. Also, now fully validate
8045descriptor
8046(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
8047
8048Example Code and Data Size: These are the sizes for the OS-independent
8049acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8050debug version of the code includes the debug output trace mechanism and
8051has a
8052much larger code and data size.
8053
8054  Previous Release:
8055    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
8056    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
8057  Current Release:
8058    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
8059    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
8060
80612) iASL Compiler/Disassembler and Tools:
8062
8063iASL: Implemented Min/Max/Len/Gran validation for address resource
8064descriptors. This change implements validation for the address fields
8065that
8066are common to all address-type resource descriptors. These checks are
8067implemented: Checks for valid Min/Max, length within the Min/Max window,
8068valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
8069per
8070table 6-40 in the ACPI 4.0a specification. Also split the large
8071aslrestype1.c
8072and aslrestype2.c files into five new files. ACPICA BZ 840.
8073
8074iASL: Added support for the _Wxx predefined names. This support was
8075missing
8076and these names were not recognized by the compiler as valid predefined
8077names. ACPICA BZ 851.
8078
8079iASL: Added an error for all predefined names that are defined to return
8080no
8081value and thus must be implemented as Control Methods. These include all
8082of
8083the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
8084names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
8085
8086iASL: Implemented the -ts option to emit hex AML data in ASL format, as
8087an
8088ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
8089be
8090dynamically loaded via the Load() operator. Also cleaned up output for
8091the
8092-
8093ta and -tc options. ACPICA BZ 853.
8094
8095Tests: Added a new file with examples of extended iASL error checking.
8096Demonstrates the advanced error checking ability of the iASL compiler.
8097Available at tests/misc/badcode.asl.
8098
8099----------------------------------------
810031 March 2010. Summary of changes for version 20100331:
8101
81021) ACPI CA Core Subsystem:
8103
8104Completed a major update for the GPE support in order to improve support
8105for
8106shared GPEs and to simplify both host OS and ACPICA code. Added a
8107reference
8108count mechanism to support shared GPEs that require multiple device
8109drivers.
8110Several external interfaces have changed. One external interface has been
8111removed. One new external interface was added. Most of the GPE external
8112interfaces now use the GPE spinlock instead of the events mutex (and the
8113Flags parameter for many GPE interfaces has been removed.) See the
8114updated
8115ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
8116Rafael
8117Wysocki. ACPICA BZ 831.
8118
8119Changed:
8120    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
8121Removed:
8122    AcpiSetGpeType
8123New:
8124    AcpiSetGpe
8125
8126Implemented write support for DataTable operation regions. These regions
8127are
8128defined via the DataTableRegion() operator. Previously, only read support
8129was
8130implemented. The ACPI specification allows DataTableRegions to be
8131read/write,
8132however.
8133
8134Implemented a new subsystem option to force a copy of the DSDT to local
8135memory. Optionally copy the entire DSDT to local memory (instead of
8136simply
8137mapping it.) There are some (albeit very rare) BIOSs that corrupt or
8138replace
8139the original DSDT, creating the need for this option. Default is FALSE,
8140do
8141not copy the DSDT.
8142
8143Implemented detection of a corrupted or replaced DSDT. This change adds
8144support to detect a DSDT that has been corrupted and/or replaced from
8145outside
8146the OS (by firmware). This is typically catastrophic for the system, but
8147has
8148been seen on some machines. Once this problem has been detected, the DSDT
8149copy option can be enabled via system configuration. Lin Ming, Bob Moore.
8150
8151Fixed two problems with AcpiReallocateRootTable during the root table
8152copy.
8153When copying the root table to the new allocation, the length used was
8154incorrect. The new size was used instead of the current table size,
8155meaning
8156too much data was copied. Also, the count of available slots for ACPI
8157tables
8158was not set correctly. Alexey Starikovskiy, Bob Moore.
8159
8160Example Code and Data Size: These are the sizes for the OS-independent
8161acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8162debug version of the code includes the debug output trace mechanism and
8163has a
8164much larger code and data size.
8165
8166  Previous Release:
8167    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
8168    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
8169  Current Release:
8170    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
8171    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
8172
81732) iASL Compiler/Disassembler and Tools:
8174
8175iASL: Implement limited typechecking for values returned from predefined
8176control methods. The type of any returned static (unnamed) object is now
8177validated. For example, Return(1). ACPICA BZ 786.
8178
8179iASL: Fixed a predefined name object verification regression. Fixes a
8180problem
8181introduced in version 20100304. An error is incorrectly generated if a
8182predefined name is declared as a static named object with a value defined
8183using the keywords "Zero", "One", or "Ones". Lin Ming.
8184
8185iASL: Added Windows 7 support for the -g option (get local ACPI tables)
8186by
8187reducing the requested registry access rights. ACPICA BZ 842.
8188
8189Disassembler: fixed a possible fault when generating External()
8190statements.
8191Introduced in commit ae7d6fd: Properly handle externals with parent-
8192prefix
8193(carat). Fixes a string length allocation calculation. Lin Ming.
8194
8195----------------------------------------
819604 March 2010. Summary of changes for version 20100304:
8197
81981) ACPI CA Core Subsystem:
8199
8200Fixed a possible problem with the AML Mutex handling function
8201AcpiExReleaseMutex where the function could fault under the very rare
8202condition when the interpreter has blocked, the interpreter lock is
8203released,
8204the interpreter is then reentered via the same thread, and attempts to
8205acquire an AML mutex that was previously acquired. FreeBSD report 140979.
8206Lin
8207Ming.
8208
8209Implemented additional configuration support for the AML "Debug Object".
8210Output from the debug object can now be enabled via a global variable,
8211AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
8212debugging.
8213This debug output is now available in the release version of ACPICA
8214instead
8215of just the debug version. Also, the entire debug output module can now
8216be
8217configured out of the ACPICA build if desired. One new file added,
8218executer/exdebug.c. Lin Ming, Bob Moore.
8219
8220Added header support for the ACPI MCHI table (Management Controller Host
8221Interface Table). This table was added in ACPI 4.0, but the defining
8222document
8223has only recently become available.
8224
8225Standardized output of integer values for ACPICA warnings/errors. Always
8226use
82270x prefix for hex output, always use %u for unsigned integer decimal
8228output.
8229Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
8230400
8231invocations.) These invocations were converted from the original
8232ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
8233
8234Example Code and Data Size: These are the sizes for the OS-independent
8235acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8236debug version of the code includes the debug output trace mechanism and
8237has a
8238much larger code and data size.
8239
8240  Previous Release:
8241    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
8242    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
8243  Current Release:
8244    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
8245    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
8246
82472) iASL Compiler/Disassembler and Tools:
8248
8249iASL: Implemented typechecking support for static (non-control method)
8250predefined named objects that are declared with the Name() operator. For
8251example, the type of this object is now validated to be of type Integer:
8252Name(_BBN, 1). This change migrates the compiler to using the core
8253predefined
8254name table instead of maintaining a local version. Added a new file,
8255aslpredef.c. ACPICA BZ 832.
8256
8257Disassembler: Added support for the ACPI 4.0 MCHI table.
8258
8259----------------------------------------
826021 January 2010. Summary of changes for version 20100121:
8261
82621) ACPI CA Core Subsystem:
8263
8264Added the 2010 copyright to all module headers and signons. This affects
8265virtually every file in the ACPICA core subsystem, the iASL compiler, the
8266tools/utilities, and the test suites.
8267
8268Implemented a change to the AcpiGetDevices interface to eliminate
8269unnecessary
8270invocations of the _STA method. In the case where a specific _HID is
8271requested, do not run _STA until a _HID match is found. This eliminates
8272potentially dozens of _STA calls during a search for a particular
8273device/HID,
8274which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
8275
8276Implemented an additional repair for predefined method return values.
8277Attempt
8278to repair unexpected NULL elements within returned Package objects.
8279Create
8280an
8281Integer of value zero, a NULL String, or a zero-length Buffer as
8282appropriate.
8283ACPICA BZ 818. Lin Ming, Bob Moore.
8284
8285Removed the obsolete ACPI_INTEGER data type. This type was introduced as
8286the
8287code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
8288(with
828964-bit AML integers). It is now obsolete and this change removes it from
8290the
8291ACPICA code base, replaced by UINT64. The original typedef has been
8292retained
8293for now for compatibility with existing device driver code. ACPICA BZ
8294824.
8295
8296Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
8297in
8298the parse tree object.
8299
8300Added additional warning options for the gcc-4 generation. Updated the
8301source
8302accordingly. This includes some code restructuring to eliminate
8303unreachable
8304code, elimination of some gotos, elimination of unused return values,
8305some
8306additional casting, and removal of redundant declarations.
8307
8308Example Code and Data Size: These are the sizes for the OS-independent
8309acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8310debug version of the code includes the debug output trace mechanism and
8311has a
8312much larger code and data size.
8313
8314  Previous Release:
8315    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
8316    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
8317  Current Release:
8318    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
8319    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
8320
83212) iASL Compiler/Disassembler and Tools:
8322
8323No functional changes for this release.
8324
8325----------------------------------------
832614 December 2009. Summary of changes for version 20091214:
8327
83281) ACPI CA Core Subsystem:
8329
8330Enhanced automatic data type conversions for predefined name repairs.
8331This
8332change expands the automatic repairs/conversions for predefined name
8333return
8334values to make Integers, Strings, and Buffers fully interchangeable.
8335Also,
8336a
8337Buffer can be converted to a Package of Integers if necessary. The
8338nsrepair.c
8339module was completely restructured. Lin Ming, Bob Moore.
8340
8341Implemented automatic removal of null package elements during predefined
8342name
8343repairs. This change will automatically remove embedded and trailing NULL
8344package elements from returned package objects that are defined to
8345contain
8346a
8347variable number of sub-packages. The driver is then presented with a
8348package
8349with no null elements to deal with. ACPICA BZ 819.
8350
8351Implemented a repair for the predefined _FDE and _GTM names. The expected
8352return value for both names is a Buffer of 5 DWORDs. This repair fixes
8353two
8354possible problems (both seen in the field), where a package of integers
8355is
8356returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
8357Kim.
8358
8359Implemented additional module-level code support. This change will
8360properly
8361execute module-level code that is not at the root of the namespace (under
8362a
8363Device object, etc.). Now executes the code within the current scope
8364instead
8365of the root. ACPICA BZ 762. Lin Ming.
8366
8367Fixed possible mutex acquisition errors when running _REG methods. Fixes
8368a
8369problem where mutex errors can occur when running a _REG method that is
8370in
8371the same scope as a method-defined operation region or an operation
8372region
8373under a module-level IF block. This type of code is rare, so the problem
8374has
8375not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
8376
8377Fixed a possible memory leak during module-level code execution. An
8378object
8379could be leaked for each block of executed module-level code if the
8380interpreter slack mode is enabled This change deletes any implicitly
8381returned
8382object from the module-level code block. Lin Ming.
8383
8384Removed messages for successful predefined repair(s). The repair
8385mechanism
8386was considered too wordy. Now, messages are only unconditionally emitted
8387if
8388the return object cannot be repaired. Existing messages for successful
8389repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
8390827.
8391
8392Example Code and Data Size: These are the sizes for the OS-independent
8393acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8394debug version of the code includes the debug output trace mechanism and
8395has a
8396much larger code and data size.
8397
8398  Previous Release:
8399    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
8400    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
8401  Current Release:
8402    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
8403    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
8404
84052) iASL Compiler/Disassembler and Tools:
8406
8407iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
8408files
8409were no longer automatically removed at the termination of the compile.
8410
8411acpiexec: Implemented the -f option to specify default region fill value.
8412This option specifies the value used to initialize buffers that simulate
8413operation regions. Default value is zero. Useful for debugging problems
8414that
8415depend on a specific initial value for a region or field.
8416
8417----------------------------------------
841812 November 2009. Summary of changes for version 20091112:
8419
84201) ACPI CA Core Subsystem:
8421
8422Implemented a post-order callback to AcpiWalkNamespace. The existing
8423interface only has a pre-order callback. This change adds an additional
8424parameter for a post-order callback which will be more useful for bus
8425scans.
8426ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
8427
8428Modified the behavior of the operation region memory mapping cache for
8429SystemMemory. Ensure that the memory mappings created for operation
8430regions
8431do not cross 4K page boundaries. Crossing a page boundary while mapping
8432regions can cause kernel warnings on some hosts if the pages have
8433different
8434attributes. Such regions are probably BIOS bugs, and this is the
8435workaround.
8436Linux BZ 14445. Lin Ming.
8437
8438Implemented an automatic repair for predefined methods that must return
8439sorted lists. This change will repair (by sorting) packages returned by
8440_ALR,
8441_PSS, and _TSS. Drivers can now assume that the packages are correctly
8442sorted
8443and do not contain NULL package elements. Adds one new file,
8444namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
8445
8446Fixed a possible fault during predefined name validation if a return
8447Package
8448object contains NULL elements. Also adds a warning if a NULL element is
8449followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
8450may
8451include repair or removal of all such NULL elements where possible.
8452
8453Implemented additional module-level executable AML code support. This
8454change
8455will execute module-level code that is not at the root of the namespace
8456(under a Device object, etc.) at table load time. Module-level executable
8457AML
8458code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
8459
8460Implemented a new internal function to create Integer objects. This
8461function
8462simplifies miscellaneous object creation code. ACPICA BZ 823.
8463
8464Reduced the severity of predefined repair messages, Warning to Info.
8465Since
8466the object was successfully repaired, a warning is too severe. Reduced to
8467an
8468info message for now. These messages may eventually be changed to debug-
8469only.
8470ACPICA BZ 812.
8471
8472Example Code and Data Size: These are the sizes for the OS-independent
8473acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8474debug version of the code includes the debug output trace mechanism and
8475has a
8476much larger code and data size.
8477
8478  Previous Release:
8479    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
8480    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
8481  Current Release:
8482    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
8483    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
8484
84852) iASL Compiler/Disassembler and Tools:
8486
8487iASL: Implemented Switch() with While(1) so that Break works correctly.
8488This
8489change correctly implements the Switch operator with a surrounding
8490While(1)
8491so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
8492
8493iASL: Added a message if a package initializer list is shorter than
8494package
8495length. Adds a new remark for a Package() declaration if an initializer
8496list
8497exists, but is shorter than the declared length of the package. Although
8498technically legal, this is probably a coding error and it is seen in the
8499field. ACPICA BZ 815. Lin Ming, Bob Moore.
8500
8501iASL: Fixed a problem where the compiler could fault after the maximum
8502number
8503of errors was reached (200).
8504
8505acpixtract: Fixed a possible warning for pointer cast if the compiler
8506warning
8507level set very high.
8508
8509----------------------------------------
851013 October 2009. Summary of changes for version 20091013:
8511
85121) ACPI CA Core Subsystem:
8513
8514Fixed a problem where an Operation Region _REG method could be executed
8515more
8516than once. If a custom address space handler is installed by the host
8517before
8518the "initialize operation regions" phase of the ACPICA initialization,
8519any
8520_REG methods for that address space could be executed twice. This change
8521fixes the problem. ACPICA BZ 427. Lin Ming.
8522
8523Fixed a possible memory leak for the Scope() ASL operator. When the exact
8524invocation of "Scope(\)" is executed (change scope to root), one internal
8525operand object was leaked. Lin Ming.
8526
8527Implemented a run-time repair for the _MAT predefined method. If the _MAT
8528return value is defined as a Field object in the AML, and the field
8529size is less than or equal to the default width of an integer (32 or
853064),_MAT
8531can incorrectly return an Integer instead of a Buffer. ACPICA now
8532automatically repairs this problem. ACPICA BZ 810.
8533
8534Implemented a run-time repair for the _BIF and _BIX predefined methods.
8535The
8536"OEM Information" field is often incorrectly returned as an Integer with
8537value zero if the field is not supported by the platform. This is due to
8538an
8539ambiguity in the ACPI specification. The field should always be a string.
8540ACPICA now automatically repairs this problem by returning a NULL string
8541within the returned Package. ACPICA BZ 807.
8542
8543Example Code and Data Size: These are the sizes for the OS-independent
8544acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8545debug version of the code includes the debug output trace mechanism and
8546has a
8547much larger code and data size.
8548
8549  Previous Release:
8550    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
8551    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
8552  Current Release:
8553    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
8554    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
8555
85562) iASL Compiler/Disassembler and Tools:
8557
8558Disassembler: Fixed a problem where references to external symbols that
8559contained one or more parent-prefixes (carats) were not handled
8560correctly,
8561possibly causing a fault. ACPICA BZ 806. Lin Ming.
8562
8563Disassembler: Restructured the code so that all functions that handle
8564external symbols are in a single module. One new file is added,
8565common/dmextern.c.
8566
8567AML Debugger: Added a max count argument for the Batch command (which
8568executes multiple predefined methods within the namespace.)
8569
8570iASL: Updated the compiler documentation (User Reference.) Available at
8571http://www.acpica.org/documentation/. ACPICA BZ 750.
8572
8573AcpiXtract: Updated for Lint and other formatting changes. Close all open
8574files.
8575
8576----------------------------------------
857703 September 2009. Summary of changes for version 20090903:
8578
85791) ACPI CA Core Subsystem:
8580
8581For Windows Vista compatibility, added the automatic execution of an _INI
8582method located at the namespace root (\_INI). This method is executed at
8583table load time. This support is in addition to the automatic execution
8584of
8585\_SB._INI. Lin Ming.
8586
8587Fixed a possible memory leak in the interpreter for AML package objects
8588if
8589the package initializer list is longer than the defined size of the
8590package.
8591This apparently can only happen if the BIOS changes the package size on
8592the
8593fly (seen in a _PSS object), as ASL compilers do not allow this. The
8594interpreter will truncate the package to the defined size (and issue an
8595error
8596message), but previously could leave the extra objects undeleted if they
8597were
8598pre-created during the argument processing (such is the case if the
8599package
8600consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
8601
8602Fixed a problem seen when a Buffer or String is stored to itself via ASL.
8603This has been reported in the field. Previously, ACPICA would zero out
8604the
8605buffer/string. Now, the operation is treated as a noop. Provides Windows
8606compatibility. ACPICA BZ 803. Lin Ming.
8607
8608Removed an extraneous error message for ASL constructs of the form
8609Store(LocalX,LocalX) when LocalX is uninitialized. These curious
8610statements
8611are seen in many BIOSs and are once again treated as NOOPs and no error
8612is
8613emitted when they are encountered. ACPICA BZ 785.
8614
8615Fixed an extraneous warning message if a _DSM reserved method returns a
8616Package object. _DSM can return any type of object, so validation on the
8617return type cannot be performed. ACPICA BZ 802.
8618
8619Example Code and Data Size: These are the sizes for the OS-independent
8620acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8621debug version of the code includes the debug output trace mechanism and
8622has a
8623much larger code and data size.
8624
8625  Previous Release:
8626    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
8627    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
8628  Current Release:
8629    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
8630    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
8631
86322) iASL Compiler/Disassembler and Tools:
8633
8634iASL: Fixed a problem with the use of the Alias operator and Resource
8635Templates. The correct alias is now constructed and no error is emitted.
8636ACPICA BZ 738.
8637
8638iASL: Implemented the -I option to specify additional search directories
8639for
8640include files. Allows multiple additional search paths for include files.
8641Directories are searched in the order specified on the command line
8642(after
8643the local directory is searched.) ACPICA BZ 800.
8644
8645iASL: Fixed a problem where the full pathname for include files was not
8646emitted for warnings/errors. This caused the IDE support to not work
8647properly. ACPICA BZ 765.
8648
8649iASL: Implemented the -@ option to specify a Windows-style response file
8650containing additional command line options. ACPICA BZ 801.
8651
8652AcpiExec: Added support to load multiple AML files simultaneously (such
8653as
8654a
8655DSDT and multiple SSDTs). Also added support for wildcards within the AML
8656pathname. These features allow all machine tables to be easily loaded and
8657debugged together. ACPICA BZ 804.
8658
8659Disassembler: Added missing support for disassembly of HEST table Error
8660Bank
8661subtables.
8662
8663----------------------------------------
866430 July 2009. Summary of changes for version 20090730:
8665
8666The ACPI 4.0 implementation for ACPICA is complete with this release.
8667
86681) ACPI CA Core Subsystem:
8669
8670ACPI 4.0: Added header file support for all new and changed ACPI tables.
8671Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
8672new
8673for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
8674BERT,
8675EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
8676There
8677have been some ACPI 4.0 changes to other existing tables. Split the large
8678actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
8679
8680ACPI 4.0: Implemented predefined name validation for all new names. There
8681are
868231 new names in ACPI 4.0. The predefined validation module was split into
8683two
8684files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
8685
8686Implemented support for so-called "module-level executable code". This is
8687executable AML code that exists outside of any control method and is
8688intended
8689to be executed at table load time. Although illegal since ACPI 2.0, this
8690type
8691of code still exists and is apparently still being created. Blocks of
8692this
8693code are now detected and executed as intended. Currently, the code
8694blocks
8695must exist under either an If, Else, or While construct; these are the
8696typical cases seen in the field. ACPICA BZ 762. Lin Ming.
8697
8698Implemented an automatic dynamic repair for predefined names that return
8699nested Package objects. This applies to predefined names that are defined
8700to
8701return a variable-length Package of sub-packages. If the number of sub-
8702packages is one, BIOS code is occasionally seen that creates a simple
8703single
8704package with no sub-packages. This code attempts to fix the problem by
8705wrapping a new package object around the existing package. These methods
8706can
8707be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
8708BZ
8709790.
8710
8711Fixed a regression introduced in 20090625 for the AcpiGetDevices
8712interface.
8713The _HID/_CID matching was broken and no longer matched IDs correctly.
8714ACPICA
8715BZ 793.
8716
8717Fixed a problem with AcpiReset where the reset would silently fail if the
8718register was one of the protected I/O ports. AcpiReset now bypasses the
8719port
8720validation mechanism. This may eventually be driven into the
8721AcpiRead/Write
8722interfaces.
8723
8724Fixed a regression related to the recent update of the AcpiRead/Write
8725interfaces. A sleep/suspend could fail if the optional PM2 Control
8726register
8727does not exist during an attempt to write the Bus Master Arbitration bit.
8728(However, some hosts already delete the code that writes this bit, and
8729the
8730code may in fact be obsolete at this date.) ACPICA BZ 799.
8731
8732Fixed a problem where AcpiTerminate could fault if inadvertently called
8733twice
8734in succession. ACPICA BZ 795.
8735
8736Example Code and Data Size: These are the sizes for the OS-independent
8737acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8738debug version of the code includes the debug output trace mechanism and
8739has a
8740much larger code and data size.
8741
8742  Previous Release:
8743    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
8744    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
8745  Current Release:
8746    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
8747    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
8748
87492) iASL Compiler/Disassembler and Tools:
8750
8751ACPI 4.0: Implemented disassembler support for all new ACPI tables and
8752changes to existing tables. ACPICA BZ 775.
8753
8754----------------------------------------
875525 June 2009. Summary of changes for version 20090625:
8756
8757The ACPI 4.0 Specification was released on June 16 and is available at
8758www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
8759continue for the next few releases.
8760
87611) ACPI CA Core Subsystem:
8762
8763ACPI 4.0: Implemented interpreter support for the IPMI operation region
8764address space. Includes support for bi-directional data buffers and an
8765IPMI
8766address space handler (to be installed by an IPMI device driver.) ACPICA
8767BZ
8768773. Lin Ming.
8769
8770ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
8771Includes
8772support in both the header files and the disassembler.
8773
8774Completed a major update for the AcpiGetObjectInfo external interface.
8775Changes include:
8776 - Support for variable, unlimited length HID, UID, and CID strings.
8777 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
8778etc.)
8779 - Call the _SxW power methods on behalf of a device object.
8780 - Determine if a device is a PCI root bridge.
8781 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
8782These changes will require an update to all callers of this interface.
8783See
8784the updated ACPICA Programmer Reference for details. One new source file
8785has
8786been added - utilities/utids.c. ACPICA BZ 368, 780.
8787
8788Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
8789transfers. The Value parameter has been extended from 32 bits to 64 bits
8790in
8791order to support new ACPI 4.0 tables. These changes will require an
8792update
8793to
8794all callers of these interfaces. See the ACPICA Programmer Reference for
8795details. ACPICA BZ 768.
8796
8797Fixed several problems with AcpiAttachData. The handler was not invoked
8798when
8799the host node was deleted. The data sub-object was not automatically
8800deleted
8801when the host node was deleted. The interface to the handler had an
8802unused
8803parameter, this was removed. ACPICA BZ 778.
8804
8805Enhanced the function that dumps ACPI table headers. All non-printable
8806characters in the string fields are now replaced with '?' (Signature,
8807OemId,
8808OemTableId, and CompilerId.) ACPI tables with non-printable characters in
8809these fields are occasionally seen in the field. ACPICA BZ 788.
8810
8811Fixed a problem with predefined method repair code where the code that
8812attempts to repair/convert an object of incorrect type is only executed
8813on
8814the first time the predefined method is called. The mechanism that
8815disables
8816warnings on subsequent calls was interfering with the repair mechanism.
8817ACPICA BZ 781.
8818
8819Fixed a possible memory leak in the predefined validation/repair code
8820when
8821a
8822buffer is automatically converted to an expected string object.
8823
8824Removed obsolete 16-bit files from the distribution and from the current
8825git
8826tree head. ACPICA BZ 776.
8827
8828Example Code and Data Size: These are the sizes for the OS-independent
8829acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8830debug version of the code includes the debug output trace mechanism and
8831has a
8832much larger code and data size.
8833
8834  Previous Release:
8835    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
8836    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
8837  Current Release:
8838    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
8839    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
8840
88412) iASL Compiler/Disassembler and Tools:
8842
8843ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
8844operation region keyword. ACPICA BZ 771, 772. Lin Ming.
8845
8846ACPI 4.0: iASL - implemented compile-time validation support for all new
8847predefined names and control methods (31 total). ACPICA BZ 769.
8848
8849----------------------------------------
885021 May 2009. Summary of changes for version 20090521:
8851
88521) ACPI CA Core Subsystem:
8853
8854Disabled the preservation of the SCI enable bit in the PM1 control
8855register.
8856The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
8857to
8858be
8859a "preserved" bit - "OSPM always preserves this bit position", section
88604.7.3.2.1. However, some machines fail if this bit is in fact preserved
8861because the bit needs to be explicitly set by the OS as a workaround. No
8862machines fail if the bit is not preserved. Therefore, ACPICA no longer
8863attempts to preserve this bit.
8864
8865Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
8866incorrectly formed _PRT package could cause a fault. Added validation to
8867ensure that each package element is actually a sub-package.
8868
8869Implemented a new interface to install or override a single control
8870method,
8871AcpiInstallMethod. This interface is useful when debugging in order to
8872repair
8873an existing method or to install a missing method without having to
8874override
8875the entire ACPI table. See the ACPICA Programmer Reference for use and
8876examples. Lin Ming, Bob Moore.
8877
8878Fixed several reference count issues with the DdbHandle object that is
8879created from a Load or LoadTable operator. Prevent premature deletion of
8880the
8881object. Also, mark the object as invalid once the table has been
8882unloaded.
8883This is needed because the handle itself may not be deleted after the
8884table
8885unload, depending on whether it has been stored in a named object by the
8886caller. Lin Ming.
8887
8888Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
8889mutexes of the same sync level are acquired but then not released in
8890strict
8891opposite order, the internally maintained Current Sync Level becomes
8892confused
8893and can cause subsequent execution errors. ACPICA BZ 471.
8894
8895Changed the allowable release order for ASL mutex objects. The ACPI 4.0
8896specification has been changed to make the SyncLevel for mutex objects
8897more
8898useful. When releasing a mutex, the SyncLevel of the mutex must now be
8899the
8900same as the current sync level. This makes more sense than the previous
8901rule
8902(SyncLevel less than or equal). This change updates the code to match the
8903specification.
8904
8905Fixed a problem with the local version of the AcpiOsPurgeCache function.
8906The
8907(local) cache must be locked during all cache object deletions. Andrew
8908Baumann.
8909
8910Updated the Load operator to use operation region interfaces. This
8911replaces
8912direct memory mapping with region access calls. Now, all region accesses
8913go
8914through the installed region handler as they should.
8915
8916Simplified and optimized the NsGetNextNode function. Reduced parameter
8917count
8918and reduced code for this frequently used function.
8919
8920Example Code and Data Size: These are the sizes for the OS-independent
8921acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8922debug version of the code includes the debug output trace mechanism and
8923has a
8924much larger code and data size.
8925
8926  Previous Release:
8927    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
8928    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
8929  Current Release:
8930    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
8931    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
8932
89332) iASL Compiler/Disassembler and Tools:
8934
8935Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
8936problems
8937with sub-table disassembly and handling invalid sub-tables. Attempt
8938recovery
8939after an invalid sub-table ID.
8940
8941----------------------------------------
894222 April 2009. Summary of changes for version 20090422:
8943
89441) ACPI CA Core Subsystem:
8945
8946Fixed a compatibility issue with the recently released I/O port
8947protection
8948mechanism. For windows compatibility, 1) On a port protection violation,
8949simply ignore the request and do not return an exception (allow the
8950control
8951method to continue execution.) 2) If only part of the request overlaps a
8952protected port, read/write the individual ports that are not protected.
8953Linux
8954BZ 13036. Lin Ming
8955
8956Enhanced the execution of the ASL/AML BreakPoint operator so that it
8957actually
8958breaks into the AML debugger if the debugger is present. This matches the
8959ACPI-defined behavior.
8960
8961Fixed several possible warnings related to the use of the configurable
8962ACPI_THREAD_ID. This type can now be configured as either an integer or a
8963pointer with no warnings. Also fixes several warnings in printf-like
8964statements for the 64-bit build when the type is configured as a pointer.
8965ACPICA BZ 766, 767.
8966
8967Fixed a number of possible warnings when compiling with gcc 4+ (depending
8968on
8969warning options.) Examples include printf formats, aliasing, unused
8970globals,
8971missing prototypes, missing switch default statements, use of non-ANSI
8972library functions, use of non-ANSI constructs. See generate/unix/Makefile
8973for
8974a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
8975
8976Example Code and Data Size: These are the sizes for the OS-independent
8977acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8978debug version of the code includes the debug output trace mechanism and
8979has a
8980much larger code and data size.
8981
8982  Previous Release:
8983    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
8984    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
8985  Current Release:
8986    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
8987    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
8988
89892) iASL Compiler/Disassembler and Tools:
8990
8991iASL: Fixed a generation warning from Bison 2.3 and fixed several
8992warnings
8993on
8994the 64-bit build.
8995
8996iASL: Fixed a problem where the Unix/Linux versions of the compiler could
8997not
8998correctly digest Windows/DOS formatted files (with CR/LF).
8999
9000iASL: Added a new option for "quiet mode" (-va) that produces only the
9001compilation summary, not individual errors and warnings. Useful for large
9002batch compilations.
9003
9004AcpiExec: Implemented a new option (-z) to enable a forced
9005semaphore/mutex
9006timeout that can be used to detect hang conditions during execution of
9007AML
9008code (includes both internal semaphores and AML-defined mutexes and
9009events.)
9010
9011Added new makefiles for the generation of acpica in a generic unix-like
9012environment. These makefiles are intended to generate the acpica tools
9013and
9014utilities from the original acpica git source tree structure.
9015
9016Test Suites: Updated and cleaned up the documentation files. Updated the
9017copyrights to 2009, affecting all source files. Use the new version of
9018iASL
9019with quiet mode. Increased the number of available semaphores in the
9020Windows
9021OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
9022added
9023an alternate implementation of the semaphore timeout to allow aslts to
9024execute fully on Cygwin.
9025
9026----------------------------------------
902720 March 2009. Summary of changes for version 20090320:
9028
90291) ACPI CA Core Subsystem:
9030
9031Fixed a possible race condition between AcpiWalkNamespace and dynamic
9032table
9033unloads. Added a reader/writer locking mechanism to allow multiple
9034concurrent
9035namespace walks (readers), but block a dynamic table unload until it can
9036gain
9037exclusive write access to the namespace. This fixes a problem where a
9038table
9039unload could (possibly catastrophically) delete the portion of the
9040namespace
9041that is currently being examined by a walk. Adds a new file, utlock.c,
9042that
9043implements the reader/writer lock mechanism. ACPICA BZ 749.
9044
9045Fixed a regression introduced in version 20090220 where a change to the
9046FADT
9047handling could cause the ACPICA subsystem to access non-existent I/O
9048ports.
9049
9050Modified the handling of FADT register and table (FACS/DSDT) addresses.
9051The
9052FADT can contain both 32-bit and 64-bit versions of these addresses.
9053Previously, the 64-bit versions were favored, meaning that if both 32 and
905464
9055versions were valid, but not equal, the 64-bit version was used. This was
9056found to cause some machines to fail. Now, in this case, the 32-bit
9057version
9058is used instead. This now matches the Windows behavior.
9059
9060Implemented a new mechanism to protect certain I/O ports. Provides
9061Microsoft
9062compatibility and protects the standard PC I/O ports from access via AML
9063code. Adds a new file, hwvalid.c
9064
9065Fixed a possible extraneous warning message from the FADT support. The
9066message warns of a 32/64 length mismatch between the legacy and GAS
9067definitions for a register.
9068
9069Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
9070is
9071made obsolete by the port protection mechanism above. It was previously
9072used
9073to validate the entire address range of an operation region, which could
9074be
9075incorrect if the range included illegal ports, but fields within the
9076operation region did not actually access those ports. Validation is now
9077performed on a per-field basis instead of the entire region.
9078
9079Modified the handling of the PM1 Status Register ignored bit (bit 11.)
9080Ignored bits must be "preserved" according to the ACPI spec. Usually,
9081this
9082means a read/modify/write when writing to the register. However, for
9083status
9084registers, writing a one means clear the event. Writing a zero means
9085preserve
9086the event (do not clear.) This behavior is clarified in the ACPI 4.0
9087spec,
9088and the ACPICA code now simply always writes a zero to the ignored bit.
9089
9090Modified the handling of ignored bits for the PM1 A/B Control Registers.
9091As
9092per the ACPI specification, for the control registers, preserve
9093(read/modify/write) all bits that are defined as either reserved or
9094ignored.
9095
9096Updated the handling of write-only bits in the PM1 A/B Control Registers.
9097When reading the register, zero the write-only bits as per the ACPI spec.
9098ACPICA BZ 443. Lin Ming.
9099
9100Removed "Linux" from the list of supported _OSI strings. Linux no longer
9101wants to reply true to this request. The Windows strings are the only
9102paths
9103through the AML that are tested and known to work properly.
9104
9105  Previous Release:
9106    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
9107    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
9108  Current Release:
9109    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
9110    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
9111
91122) iASL Compiler/Disassembler and Tools:
9113
9114Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
9115and
9116aetables.c
9117
9118----------------------------------------
911920 February 2009. Summary of changes for version 20090220:
9120
91211) ACPI CA Core Subsystem:
9122
9123Optimized the ACPI register locking. Removed locking for reads from the
9124ACPI
9125bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
9126is
9127not required when reading the single-bit registers. The
9128AcpiGetRegisterUnlocked function is no longer needed and has been
9129removed.
9130This will improve performance for reads on these registers. ACPICA BZ
9131760.
9132
9133Fixed the parameter validation for AcpiRead/Write. Now return
9134AE_BAD_PARAMETER if the input register pointer is null, and
9135AE_BAD_ADDRESS
9136if
9137the register has an address of zero. Previously, these cases simply
9138returned
9139AE_OK. For optional registers such as PM1B status/enable/control, the
9140caller
9141should check for a valid register address before calling. ACPICA BZ 748.
9142
9143Renamed the external ACPI bit register access functions. Renamed
9144AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
9145functions. The new names are AcpiReadBitRegister and
9146AcpiWriteBitRegister.
9147Also, restructured the code for these functions by simplifying the code
9148path
9149and condensing duplicate code to reduce code size.
9150
9151Added new functions to transparently handle the possibly split PM1 A/B
9152registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
9153functions
9154now handle the split registers for PM1 Status, Enable, and Control.
9155ACPICA
9156BZ
9157746.
9158
9159Added a function to handle the PM1 control registers,
9160AcpiHwWritePm1Control.
9161This function writes both of the PM1 control registers (A/B). These
9162registers
9163are different than the PM1 A/B status and enable registers in that
9164different
9165values can be written to the A/B registers. Most notably, the SLP_TYP
9166bits
9167can be different, as per the values returned from the _Sx predefined
9168methods.
9169
9170Removed an extra register write within AcpiHwClearAcpiStatus. This
9171function
9172was writing an optional PM1B status register twice. The existing call to
9173the
9174low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
9175A/B
9176register. ACPICA BZ 751.
9177
9178Split out the PM1 Status registers from the FADT. Added new globals for
9179these
9180registers (A/B), similar to the way the PM1 Enable registers are handled.
9181Instead of overloading the FADT Event Register blocks. This makes the
9182code
9183clearer and less prone to error.
9184
9185Fixed the warning message for when the platform contains too many ACPI
9186tables
9187for the default size of the global root table data structure. The
9188calculation
9189for the truncation value was incorrect.
9190
9191Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
9192obsolete macro, since it is now a simple reference to ->common.type.
9193There
9194were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
9195
9196Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
9197TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
9198simply SLEEP_TYPE. ACPICA BZ 754.
9199
9200Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
9201function is only needed on 64-bit host operating systems and is thus not
9202included for 32-bit hosts.
9203
9204Debug output: print the input and result for invocations of the _OSI
9205reserved
9206control method via the ACPI_LV_INFO debug level. Also, reduced some of
9207the
9208verbosity of this debug level. Len Brown.
9209
9210Example Code and Data Size: These are the sizes for the OS-independent
9211acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9212debug version of the code includes the debug output trace mechanism and
9213has a
9214much larger code and data size.
9215
9216  Previous Release:
9217    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
9218    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
9219  Current Release:
9220    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
9221    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
9222
92232) iASL Compiler/Disassembler and Tools:
9224
9225Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
9226various legal performance profiles.
9227
9228----------------------------------------
922923 January 2009. Summary of changes for version 20090123:
9230
92311) ACPI CA Core Subsystem:
9232
9233Added the 2009 copyright to all module headers and signons. This affects
9234virtually every file in the ACPICA core subsystem, the iASL compiler, and
9235the tools/utilities.
9236
9237Implemented a change to allow the host to override any ACPI table,
9238including
9239dynamically loaded tables. Previously, only the DSDT could be replaced by
9240the
9241host. With this change, the AcpiOsTableOverride interface is called for
9242each
9243table found in the RSDT/XSDT during ACPICA initialization, and also
9244whenever
9245a table is dynamically loaded via the AML Load operator.
9246
9247Updated FADT flag definitions, especially the Boot Architecture flags.
9248
9249Debugger: For the Find command, automatically pad the input ACPI name
9250with
9251underscores if the name is shorter than 4 characters. This enables a
9252match
9253with the actual namespace entry which is itself padded with underscores.
9254
9255Example Code and Data Size: These are the sizes for the OS-independent
9256acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9257debug version of the code includes the debug output trace mechanism and
9258has a
9259much larger code and data size.
9260
9261  Previous Release:
9262    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
9263    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
9264  Current Release:
9265    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
9266    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
9267
92682) iASL Compiler/Disassembler and Tools:
9269
9270Fix build error under Bison-2.4.
9271
9272Disassembler: Enhanced FADT support. Added decoding of the Boot
9273Architecture
9274flags. Now decode all flags, regardless of the FADT version. Flag output
9275includes the FADT version which first defined each flag.
9276
9277The iASL -g option now dumps the RSDT to a file (in addition to the FADT
9278and
9279DSDT). Windows only.
9280
9281----------------------------------------
928204 December 2008. Summary of changes for version 20081204:
9283
92841) ACPI CA Core Subsystem:
9285
9286The ACPICA Programmer Reference has been completely updated and revamped
9287for
9288this release. This includes updates to the external interfaces, OSL
9289interfaces, the overview sections, and the debugger reference.
9290
9291Several new ACPICA interfaces have been implemented and documented in the
9292programmer reference:
9293AcpiReset - Writes the reset value to the FADT-defined reset register.
9294AcpiDisableAllGpes - Disable all available GPEs.
9295AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
9296AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
9297AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
9298AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
9299AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
9300
9301Most of the public ACPI hardware-related interfaces have been moved to a
9302new
9303file, components/hardware/hwxface.c
9304
9305Enhanced the FADT parsing and low-level ACPI register access: The ACPI
9306register lengths within the FADT are now used, and the low level ACPI
9307register access no longer hardcodes the ACPI register lengths. Given that
9308there may be some risk in actually trusting the FADT register lengths, a
9309run-
9310time option was added to fall back to the default hardcoded lengths if
9311the
9312FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
9313option is set to true for now, and a warning is issued if a suspicious
9314FADT
9315register length is overridden with the default value.
9316
9317Fixed a reference count issue in NsRepairObject. This problem was
9318introduced
9319in version 20081031 as part of a fix to repair Buffer objects within
9320Packages. Lin Ming.
9321
9322Added semaphore support to the Linux/Unix application OS-services layer
9323(OSL). ACPICA BZ 448. Lin Ming.
9324
9325Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
9326will
9327be implemented in the OSL, or will binary semaphores be used instead.
9328
9329Example Code and Data Size: These are the sizes for the OS-independent
9330acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9331debug version of the code includes the debug output trace mechanism and
9332has a
9333much larger code and data size.
9334
9335  Previous Release:
9336    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
9337    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
9338  Current Release:
9339    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
9340    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
9341
93422) iASL Compiler/Disassembler and Tools:
9343
9344iASL: Completed the '-e' option to include additional ACPI tables in
9345order
9346to
9347aid with disassembly and External statement generation. ACPICA BZ 742.
9348Lin
9349Ming.
9350
9351iASL: Removed the "named object in while loop" error. The compiler cannot
9352determine how many times a loop will execute. ACPICA BZ 730.
9353
9354Disassembler: Implemented support for FADT revision 2 (MS extension).
9355ACPICA
9356BZ 743.
9357
9358Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
9359MCFG).
9360
9361----------------------------------------
936231 October 2008. Summary of changes for version 20081031:
9363
93641) ACPI CA Core Subsystem:
9365
9366Restructured the ACPICA header files into public/private. acpi.h now
9367includes
9368only the "public" acpica headers. All other acpica headers are "private"
9369and
9370should not be included by acpica users. One new file, accommon.h is used
9371to
9372include the commonly used private headers for acpica code generation.
9373Future
9374plans include moving all private headers to a new subdirectory.
9375
9376Implemented an automatic Buffer->String return value conversion for
9377predefined ACPI methods. For these methods (such as _BIF), added
9378automatic
9379conversion for return objects that are required to be a String, but a
9380Buffer
9381was found instead. This can happen when reading string battery data from
9382an
9383operation region, because it used to be difficult to convert the data
9384from
9385buffer to string from within the ASL. Ensures that the host OS is
9386provided
9387with a valid null-terminated string. Linux BZ 11822.
9388
9389Updated the FACS waking vector interfaces. Split
9390AcpiSetFirmwareWakingVector
9391into two: one for the 32-bit vector, another for the 64-bit vector. This
9392is
9393required because the host OS must setup the wake much differently for
9394each
9395vector (real vs. protected mode, etc.) and the interface itself should
9396not
9397be
9398deciding which vector to use. Also, eliminated the
9399GetFirmwareWakingVector
9400interface, as it served no purpose (only the firmware reads the vector,
9401OS
9402only writes the vector.) ACPICA BZ 731.
9403
9404Implemented a mechanism to escape infinite AML While() loops. Added a
9405loop
9406counter to force exit from AML While loops if the count becomes too
9407large.
9408This can occur in poorly written AML when the hardware does not respond
9409within a while loop and the loop does not implement a timeout. The
9410maximum
9411loop count is configurable. A new exception code is returned when a loop
9412is
9413broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
9414
9415Optimized the execution of AML While loops. Previously, a control state
9416object was allocated and freed for each execution of the loop. The
9417optimization is to simply reuse the control state for each iteration.
9418This
9419speeds up the raw loop execution time by about 5%.
9420
9421Enhanced the implicit return mechanism. For Windows compatibility, return
9422an
9423implicit integer of value zero for methods that contain no executable
9424code.
9425Such methods are seen in the field as stubs (presumably), and can cause
9426drivers to fail if they expect a return value. Lin Ming.
9427
9428Allow multiple backslashes as root prefixes in namepaths. In a fully
9429qualified namepath, allow multiple backslash prefixes. This can happen
9430(and
9431is seen in the field) because of the use of a double-backslash in strings
9432(since backslash is the escape character) causing confusion. ACPICA BZ
9433739
9434Lin Ming.
9435
9436Emit a warning if two different FACS or DSDT tables are discovered in the
9437FADT. Checks if there are two valid but different addresses for the FACS
9438and
9439DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
9440
9441Consolidated the method argument count validation code. Merged the code
9442that
9443validates control method argument counts into the predefined validation
9444module. Eliminates possible multiple warnings for incorrect argument
9445counts.
9446
9447Implemented ACPICA example code. Includes code for ACPICA initialization,
9448handler installation, and calling a control method. Available at
9449source/tools/examples.
9450
9451Added a global pointer for FACS table to simplify internal FACS access.
9452Use
9453the global pointer instead of using AcpiGetTableByIndex for each FACS
9454access.
9455This simplifies the code for the Global Lock and the Firmware Waking
9456Vector(s).
9457
9458Example Code and Data Size: These are the sizes for the OS-independent
9459acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9460debug version of the code includes the debug output trace mechanism and
9461has a
9462much larger code and data size.
9463
9464  Previous Release:
9465    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
9466    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
9467  Current Release:
9468    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
9469    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
9470
94712) iASL Compiler/Disassembler and Tools:
9472
9473iASL: Improved disassembly of external method calls. Added the -e option
9474to
9475allow the inclusion of additional ACPI tables to help with the
9476disassembly
9477of
9478method invocations and the generation of external declarations during the
9479disassembly. Certain external method invocations cannot be disassembled
9480properly without the actual declaration of the method. Use the -e option
9481to
9482include the table where the external method(s) are actually declared.
9483Most
9484useful for disassembling SSDTs that make method calls back to the master
9485DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
9486-d
9487-e dsdt.aml ssdt1.aml
9488
9489iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
9490problem where the use of an alias within a namepath would result in a not
9491found error or cause the compiler to fault. Also now allows forward
9492references from the Alias operator itself. ACPICA BZ 738.
9493
9494----------------------------------------
949526 September 2008. Summary of changes for version 20080926:
9496
94971) ACPI CA Core Subsystem:
9498
9499Designed and implemented a mechanism to validate predefined ACPI methods
9500and
9501objects. This code validates the predefined ACPI objects (objects whose
9502names
9503start with underscore) that appear in the namespace, at the time they are
9504evaluated. The argument count and the type of the returned object are
9505validated against the ACPI specification. The purpose of this validation
9506is
9507to detect problems with the BIOS-implemented predefined ACPI objects
9508before
9509the results are returned to the ACPI-related drivers. Future enhancements
9510may
9511include actual repair of incorrect return objects where possible. Two new
9512files are nspredef.c and acpredef.h.
9513
9514Fixed a fault in the AML parser if a memory allocation fails during the
9515Op
9516completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
9517
9518Fixed an issue with implicit return compatibility. This change improves
9519the
9520implicit return mechanism to be more compatible with the MS interpreter.
9521Lin
9522Ming, ACPICA BZ 349.
9523
9524Implemented support for zero-length buffer-to-string conversions. Allow
9525zero
9526length strings during interpreter buffer-to-string conversions. For
9527example,
9528during the ToDecimalString and ToHexString operators, as well as implicit
9529conversions. Fiodor Suietov, ACPICA BZ 585.
9530
9531Fixed two possible memory leaks in the error exit paths of
9532AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
9533are
9534similar in that they use a stack of state objects in order to eliminate
9535recursion. The stack must be fully unwound and deallocated if an error
9536occurs. Lin Ming. ACPICA BZ 383.
9537
9538Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
9539global
9540ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
9541Moore ACPICA BZ 442.
9542
9543Removed the obsolete version number in module headers. Removed the
9544"$Revision" number that appeared in each module header. This version
9545number
9546was useful under SourceSafe and CVS, but has no meaning under git. It is
9547not
9548only incorrect, it could also be misleading.
9549
9550Example Code and Data Size: These are the sizes for the OS-independent
9551acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9552debug version of the code includes the debug output trace mechanism and
9553has a
9554much larger code and data size.
9555
9556  Previous Release:
9557    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9558    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
9559  Current Release:
9560    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
9561    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
9562
9563----------------------------------------
956429 August 2008. Summary of changes for version 20080829:
9565
95661) ACPI CA Core Subsystem:
9567
9568Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
9569Reference. Changes include the elimination of cheating on the Object
9570field
9571for the DdbHandle subtype, addition of a reference class field to
9572differentiate the various reference types (instead of an AML opcode), and
9573the
9574cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
9575
9576Reduce an error to a warning for an incorrect method argument count.
9577Previously aborted with an error if too few arguments were passed to a
9578control method via the external ACPICA interface. Now issue a warning
9579instead
9580and continue. Handles the case where the method inadvertently declares
9581too
9582many arguments, but does not actually use the extra ones. Applies mainly
9583to
9584the predefined methods. Lin Ming. Linux BZ 11032.
9585
9586Disallow the evaluation of named object types with no intrinsic value.
9587Return
9588AE_TYPE for objects that have no value and therefore evaluation is
9589undefined:
9590Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
9591of
9592these types were allowed, but an exception would be generated at some
9593point
9594during the evaluation. Now, the error is generated up front.
9595
9596Fixed a possible memory leak in the AcpiNsGetExternalPathname function
9597(nsnames.c). Fixes a leak in the error exit path.
9598
9599Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
9600debug
9601levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
9602ACPI_EXCEPTION
9603interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
9604ACPI_LV_EVENTS.
9605
9606Removed obsolete and/or unused exception codes from the acexcep.h header.
9607There is the possibility that certain device drivers may be affected if
9608they
9609use any of these exceptions.
9610
9611The ACPICA documentation has been added to the public git source tree,
9612under
9613acpica/documents. Included are the ACPICA programmer reference, the iASL
9614compiler reference, and the changes.txt release logfile.
9615
9616Example Code and Data Size: These are the sizes for the OS-independent
9617acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9618debug version of the code includes the debug output trace mechanism and
9619has a
9620much larger code and data size.
9621
9622  Previous Release:
9623    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9624    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
9625  Current Release:
9626    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9627    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
9628
96292) iASL Compiler/Disassembler and Tools:
9630
9631Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
9632defines _SCP with 3 arguments. Previous versions defined it with only 1
9633argument. iASL now allows both definitions.
9634
9635iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
9636zero-
9637length subtables when disassembling ACPI tables. Also fixed a couple of
9638errors where a full 16-bit table type field was not extracted from the
9639input
9640properly.
9641
9642acpisrc: Improve comment counting mechanism for generating source code
9643statistics. Count first and last lines of multi-line comments as
9644whitespace,
9645not comment lines. Handle Linux legal header in addition to standard
9646acpica
9647header.
9648
9649----------------------------------------
9650
965129 July 2008. Summary of changes for version 20080729:
9652
96531) ACPI CA Core Subsystem:
9654
9655Fix a possible deadlock in the GPE dispatch. Remove call to
9656AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
9657attempt
9658to acquire the GPE lock but can deadlock since the GPE lock is already
9659held
9660at dispatch time. This code was introduced in version 20060831 as a
9661response
9662to Linux BZ 6881 and has since been removed from Linux.
9663
9664Add a function to dereference returned reference objects. Examines the
9665return
9666object from a call to AcpiEvaluateObject. Any Index or RefOf references
9667are
9668automatically dereferenced in an attempt to return something useful
9669(these
9670reference types cannot be converted into an external ACPI_OBJECT.)
9671Provides
9672MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
9673
9674x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
9675subtables for the MADT and one new subtable for the SRAT. Includes
9676disassembler and AcpiSrc support. Data from the Intel 64 Architecture
9677x2APIC
9678Specification, June 2008.
9679
9680Additional error checking for pathname utilities. Add error check after
9681all
9682calls to AcpiNsGetPathnameLength. Add status return from
9683AcpiNsBuildExternalPath and check after all calls. Add parameter
9684validation
9685to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
9686
9687Return status from the global init function AcpiUtGlobalInitialize. This
9688is
9689used by both the kernel subsystem and the utilities such as iASL
9690compiler.
9691The function could possibly fail when the caches are initialized. Yang
9692Yi.
9693
9694Add a function to decode reference object types to strings. Created for
9695improved error messages.
9696
9697Improve object conversion error messages. Better error messages during
9698object
9699conversion from internal to the external ACPI_OBJECT. Used for external
9700calls
9701to AcpiEvaluateObject.
9702
9703Example Code and Data Size: These are the sizes for the OS-independent
9704acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9705debug version of the code includes the debug output trace mechanism and
9706has a
9707much larger code and data size.
9708
9709  Previous Release:
9710    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
9711    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
9712  Current Release:
9713    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9714    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
9715
97162) iASL Compiler/Disassembler and Tools:
9717
9718Debugger: fix a possible hang when evaluating non-methods. Fixes a
9719problem
9720introduced in version 20080701. If the object being evaluated (via
9721execute
9722command) is not a method, the debugger can hang while trying to obtain
9723non-
9724existent parameters.
9725
9726iASL: relax error for using reserved "_T_x" identifiers. These names can
9727appear in a disassembled ASL file if they were emitted by the original
9728compiler. Instead of issuing an error or warning and forcing the user to
9729manually change these names, issue a remark instead.
9730
9731iASL: error if named object created in while loop. Emit an error if any
9732named
9733object is created within a While loop. If allowed, this code will
9734generate
9735a
9736run-time error on the second iteration of the loop when an attempt is
9737made
9738to
9739create the same named object twice. ACPICA bugzilla 730.
9740
9741iASL: Support absolute pathnames for include files. Add support for
9742absolute
9743pathnames within the Include operator. previously, only relative
9744pathnames
9745were supported.
9746
9747iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
9748Descriptor.
9749The ACPI spec requires one interrupt minimum. BZ 423
9750
9751iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
9752Handles the case for the Interrupt Resource Descriptor where
9753the ResourceSource argument is omitted but ResourceSourceIndex
9754is present. Now leave room for the Index. BZ 426
9755
9756iASL: Prevent error message if CondRefOf target does not exist. Fixes
9757cases
9758where an error message is emitted if the target does not exist. BZ 516
9759
9760iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
9761(get ACPI tables on Windows). This was apparently broken in version
976220070919.
9763
9764AcpiXtract: Handle EOF while extracting data. Correctly handle the case
9765where
9766the EOF happens immediately after the last table in the input file. Print
9767completion message. Previously, no message was displayed in this case.
9768
9769----------------------------------------
977001 July 2008. Summary of changes for version 20080701:
9771
97720) Git source tree / acpica.org
9773
9774Fixed a problem where a git-clone from http would not transfer the entire
9775source tree.
9776
97771) ACPI CA Core Subsystem:
9778
9779Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
9780enable bit. Now performs a read-change-write of the enable register
9781instead
9782of simply writing out the cached enable mask. This will prevent
9783inadvertent
9784enabling of GPEs if a rogue GPE is received during initialization (before
9785GPE
9786handlers are installed.)
9787
9788Implemented a copy for dynamically loaded tables. Previously, dynamically
9789loaded tables were simply mapped - but on some machines this memory is
9790corrupted after suspend. Now copy the table to a local buffer. For the
9791OpRegion case, added checksum verify. Use the table length from the table
9792header, not the region length. For the Buffer case, use the table length
9793also. Dennis Noordsij, Bob Moore. BZ 10734
9794
9795Fixed a problem where the same ACPI table could not be dynamically loaded
9796and
9797unloaded more than once. Without this change, a table cannot be loaded
9798again
9799once it has been loaded/unloaded one time. The current mechanism does not
9800unregister a table upon an unload. During a load, if the same table is
9801found,
9802this no longer returns an exception. BZ 722
9803
9804Fixed a problem where the wrong descriptor length was calculated for the
9805EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
9806EndTag
9807are calculated as 12 bytes long, but the actual length in the internal
9808descriptor is 16 because of the round-up to 8 on the 64-bit build.
9809Reported
9810by Linn Crosetto. BZ 728
9811
9812Fixed a possible memory leak in the Unload operator. The DdbHandle
9813returned
9814by Load() did not have its reference count decremented during unload,
9815leading
9816to a memory leak. Lin Ming. BZ 727
9817
9818Fixed a possible memory leak when deleting thermal/processor objects. Any
9819associated notify handlers (and objects) were not being deleted. Fiodor
9820Suietov. BZ 506
9821
9822Fixed the ordering of the ASCII names in the global mutex table to match
9823the
9824actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
9825only.
9826Vegard Nossum. BZ 726
9827
9828Enhanced the AcpiGetObjectInfo interface to return the number of required
9829arguments if the object is a control method. Added this call to the
9830debugger
9831so the proper number of default arguments are passed to a method. This
9832prevents a warning when executing methods from AcpiExec.
9833
9834Added a check for an invalid handle in AcpiGetObjectInfo. Return
9835AE_BAD_PARAMETER if input handle is invalid. BZ 474
9836
9837Fixed an extraneous warning from exconfig.c on the 64-bit build.
9838
9839Example Code and Data Size: These are the sizes for the OS-independent
9840acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9841debug version of the code includes the debug output trace mechanism and
9842has a
9843much larger code and data size.
9844
9845  Previous Release:
9846    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
9847    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
9848  Current Release:
9849    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
9850    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
9851
98522) iASL Compiler/Disassembler and Tools:
9853
9854iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
9855resource descriptor names.
9856
9857iASL: Detect invalid ASCII characters in input (windows version). Removed
9858the
9859"-CF" flag from the flex compile, enables correct detection of non-ASCII
9860characters in the input. BZ 441
9861
9862iASL: Eliminate warning when result of LoadTable is not used. Eliminate
9863the
9864"result of operation not used" warning when the DDB handle returned from
9865LoadTable is not used. The warning is not needed. BZ 590
9866
9867AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
9868method
9869to
9870pass address of table to the AML. Added option to disable OpRegion
9871simulation
9872to allow creation of an OpRegion with a real address that was passed to
9873_CFG.
9874All of this allows testing of the Load and Unload operators from
9875AcpiExec.
9876
9877Debugger: update tables command for unloaded tables. Handle unloaded
9878tables
9879and use the standard table header output routine.
9880
9881----------------------------------------
988209 June 2008. Summary of changes for version 20080609:
9883
98841) ACPI CA Core Subsystem:
9885
9886Implemented a workaround for reversed _PRT entries. A significant number
9887of
9888BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
9889change dynamically detects and repairs this problem. Provides
9890compatibility
9891with MS ACPI. BZ 6859
9892
9893Simplified the internal ACPI hardware interfaces to eliminate the locking
9894flag parameter from Register Read/Write. Added a new external interface,
9895AcpiGetRegisterUnlocked.
9896
9897Fixed a problem where the invocation of a GPE control method could hang.
9898This
9899was a regression introduced in 20080514. The new method argument count
9900validation mechanism can enter an infinite loop when a GPE method is
9901dispatched. Problem fixed by removing the obsolete code that passed GPE
9902block
9903information to the notify handler via the control method parameter
9904pointer.
9905
9906Fixed a problem where the _SST execution status was incorrectly returned
9907to
9908the caller of AcpiEnterSleepStatePrep. This was a regression introduced
9909in
991020080514. _SST is optional and a NOT_FOUND exception should never be
9911returned. BZ 716
9912
9913Fixed a problem where a deleted object could be accessed from within the
9914AML
9915parser. This was a regression introduced in version 20080123 as a fix for
9916the
9917Unload operator. Lin Ming. BZ 10669
9918
9919Cleaned up the debug operand dump mechanism. Eliminated unnecessary
9920operands
9921and eliminated the use of a negative index in a loop. Operands are now
9922displayed in the correct order, not backwards. This also fixes a
9923regression
9924introduced in 20080514 on 64-bit systems where the elimination of
9925ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
9926715
9927
9928Fixed a possible memory leak in EvPciConfigRegionSetup where the error
9929exit
9930path did not delete a locally allocated structure.
9931
9932Updated definitions for the DMAR and SRAT tables to synchronize with the
9933current specifications. Includes disassembler support.
9934
9935Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
9936loop termination value was used. Loop terminated on iteration early,
9937missing
9938one mutex. Linn Crosetto
9939
9940Example Code and Data Size: These are the sizes for the OS-independent
9941acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9942debug version of the code includes the debug output trace mechanism and
9943has a
9944much larger code and data size.
9945
9946  Previous Release:
9947    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
9948    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
9949  Current Release:
9950    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
9951    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
9952
99532) iASL Compiler/Disassembler and Tools:
9954
9955Disassembler: Implemented support for EisaId() within _CID objects. Now
9956disassemble integer _CID objects back to EisaId invocations, including
9957multiple integers within _CID packages. Includes single-step support for
9958debugger also.
9959
9960Disassembler: Added support for DMAR and SRAT table definition changes.
9961
9962----------------------------------------
996314 May 2008. Summary of changes for version 20080514:
9964
99651) ACPI CA Core Subsystem:
9966
9967Fixed a problem where GPEs were enabled too early during the ACPICA
9968initialization. This could lead to "handler not installed" errors on some
9969machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
9970This
9971ensures that all operation regions and devices throughout the namespace
9972have
9973been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
9974
9975Implemented a change to the enter sleep code. Moved execution of the _GTS
9976method to just before setting sleep enable bit. The execution was moved
9977from
9978AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
9979immediately before the SLP_EN bit is set, as per the ACPI specification.
9980Luming Yu, BZ 1653.
9981
9982Implemented a fix to disable unknown GPEs (2nd version). Now always
9983disable
9984the GPE, even if ACPICA thinks that that it is already disabled. It is
9985possible that the AML or some other code has enabled the GPE unbeknownst
9986to
9987the ACPICA code.
9988
9989Fixed a problem with the Field operator where zero-length fields would
9990return
9991an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
9992ASL
9993field declarations in Field(), BankField(), and IndexField(). BZ 10606.
9994
9995Implemented a fix for the Load operator, now load the table at the
9996namespace
9997root. This reverts a change introduced in version 20071019. The table is
9998now
9999loaded at the namespace root even though this goes against the ACPI
10000specification. This provides compatibility with other ACPI
10001implementations.
10002The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
10003Ming.
10004
10005Fixed a problem where ACPICA would not Load() tables with unusual
10006signatures.
10007Now ignore ACPI table signature for Load() operator. Only "SSDT" is
10008acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
10009Therefore, signature validation is worthless. Apparently MS ACPI accepts
10010such
10011signatures, ACPICA must be compatible. BZ 10454.
10012
10013Fixed a possible negative array index in AcpiUtValidateException. Added
10014NULL
10015fields to the exception string arrays to eliminate a -1 subtraction on
10016the
10017SubStatus field.
10018
10019Updated the debug tracking macros to reduce overall code and data size.
10020Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
10021instead of pointers to static strings. Jan Beulich and Bob Moore.
10022
10023Implemented argument count checking in control method invocation via
10024AcpiEvaluateObject. Now emit an error if too few arguments, warning if
10025too
10026many. This applies only to extern programmatic control method execution,
10027not
10028method-to-method calls within the AML. Lin Ming.
10029
10030Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
10031no
10032longer needed, especially with the removal of 16-bit support. It was
10033replaced
10034mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
10035bit
10036on
1003732/64-bit platforms is required.
10038
10039Added the C const qualifier for appropriate string constants -- mostly
10040MODULE_NAME and printf format strings. Jan Beulich.
10041
10042Example Code and Data Size: These are the sizes for the OS-independent
10043acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10044debug version of the code includes the debug output trace mechanism and
10045has a
10046much larger code and data size.
10047
10048  Previous Release:
10049    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
10050    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
10051  Current Release:
10052    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
10053    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
10054
100552) iASL Compiler/Disassembler and Tools:
10056
10057Implemented ACPI table revision ID validation in the disassembler. Zero
10058is
10059always invalid. For DSDTs, the ID controls the interpreter integer width.
100601
10061means 32-bit and this is unusual. 2 or greater is 64-bit.
10062
10063----------------------------------------
1006421 March 2008. Summary of changes for version 20080321:
10065
100661) ACPI CA Core Subsystem:
10067
10068Implemented an additional change to the GPE support in order to suppress
10069spurious or stray GPEs. The AcpiEvDisableGpe function will now
10070permanently
10071disable incoming GPEs that are neither enabled nor disabled -- meaning
10072that
10073the GPE is unknown to the system. This should prevent future interrupt
10074floods
10075from that GPE. BZ 6217 (Zhang Rui)
10076
10077Fixed a problem where NULL package elements were not returned to the
10078AcpiEvaluateObject interface correctly. The element was simply ignored
10079instead of returning a NULL ACPI_OBJECT package element, potentially
10080causing
10081a buffer overflow and/or confusing the caller who expected a fixed number
10082of
10083elements. BZ 10132 (Lin Ming, Bob Moore)
10084
10085Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
10086Dword,
10087Qword), Field, BankField, and IndexField operators when invoked from
10088inside
10089an executing control method. In this case, these operators created
10090namespace
10091nodes that were incorrectly left marked as permanent nodes instead of
10092temporary nodes. This could cause a problem if there is race condition
10093between an exiting control method and a running namespace walk. (Reported
10094by
10095Linn Crosetto)
10096
10097Fixed a problem where the CreateField and CreateXXXField operators would
10098incorrectly allow duplicate names (the name of the field) with no
10099exception
10100generated.
10101
10102Implemented several changes for Notify handling. Added support for new
10103Notify
10104values (ACPI 2.0+) and improved the Notify debug output. Notify on
10105PowerResource objects is no longer allowed, as per the ACPI
10106specification.
10107(Bob Moore, Zhang Rui)
10108
10109All Reference Objects returned via the AcpiEvaluateObject interface are
10110now
10111marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
10112for
10113NULL objects - either NULL package elements or unresolved named
10114references.
10115
10116Fixed a problem where an extraneous debug message was produced for
10117package
10118objects (when debugging enabled). The message "Package List length larger
10119than NumElements count" is now produced in the correct case, and is now
10120an
10121error message rather than a debug message. Added a debug message for the
10122opposite case, where NumElements is larger than the Package List (the
10123package
10124will be padded out with NULL elements as per the ACPI spec.)
10125
10126Implemented several improvements for the output of the ASL "Debug" object
10127to
10128clarify and keep all data for a given object on one output line.
10129
10130Fixed two size calculation issues with the variable-length Start
10131Dependent
10132resource descriptor.
10133
10134Example Code and Data Size: These are the sizes for the OS-independent
10135acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10136debug version of the code includes the debug output trace mechanism and
10137has
10138a much larger code and data size.
10139
10140  Previous Release:
10141    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
10142    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
10143  Current Release:
10144    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
10145    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
10146
101472) iASL Compiler/Disassembler and Tools:
10148
10149Fixed a problem with the use of the Switch operator where execution of
10150the
10151containing method by multiple concurrent threads could cause an
10152AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
10153actual Switch opcode, it must be simulated with local named temporary
10154variables and if/else pairs. The solution chosen was to mark any method
10155that
10156uses Switch as Serialized, thus preventing multiple thread entries. BZ
10157469.
10158
10159----------------------------------------
1016013 February 2008. Summary of changes for version 20080213:
10161
101621) ACPI CA Core Subsystem:
10163
10164Implemented another MS compatibility design change for GPE/Notify
10165handling.
10166GPEs are now cleared/enabled asynchronously to allow all pending notifies
10167to
10168complete first. It is expected that the OSL will queue the enable request
10169behind all pending notify requests (may require changes to the local host
10170OSL
10171in AcpiOsExecute). Alexey Starikovskiy.
10172
10173Fixed a problem where buffer and package objects passed as arguments to a
10174control method via the external AcpiEvaluateObject interface could cause
10175an
10176AE_AML_INTERNAL exception depending on the order and type of operators
10177executed by the target control method.
10178
10179Fixed a problem where resource descriptor size optimization could cause a
10180problem when a _CRS resource template is passed to a _SRS method. The
10181_SRS
10182resource template must use the same descriptors (with the same size) as
10183returned from _CRS. This change affects the following resource
10184descriptors:
10185IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
101869487)
10187
10188Fixed a problem where a CopyObject to RegionField, BankField, and
10189IndexField
10190objects did not perform an implicit conversion as it should. These types
10191must
10192retain their initial type permanently as per the ACPI specification.
10193However,
10194a CopyObject to all other object types should not perform an implicit
10195conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
10196
10197Fixed a problem with the AcpiGetDevices interface where the mechanism to
10198match device CIDs did not examine the entire list of available CIDs, but
10199instead aborted on the first non-matching CID. Andrew Patterson.
10200
10201Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
10202was
10203inadvertently changed to return a 16-bit value instead of a 32-bit value,
10204truncating the upper dword of a 64-bit value. This macro is only used to
10205display debug output, so no incorrect calculations were made. Also,
10206reimplemented the macro so that a 64-bit shift is not performed by
10207inefficient compilers.
10208
10209Added missing va_end statements that should correspond with each va_start
10210statement.
10211
10212Example Code and Data Size: These are the sizes for the OS-independent
10213acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10214debug version of the code includes the debug output trace mechanism and
10215has
10216a much larger code and data size.
10217
10218  Previous Release:
10219    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
10220    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
10221  Current Release:
10222    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
10223    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
10224
102252) iASL Compiler/Disassembler and Tools:
10226
10227Implemented full disassembler support for the following new ACPI tables:
10228BERT, EINJ, and ERST. Implemented partial disassembler support for the
10229complicated HEST table. These tables support the Windows Hardware Error
10230Architecture (WHEA).
10231
10232----------------------------------------
1023323 January 2008. Summary of changes for version 20080123:
10234
102351) ACPI CA Core Subsystem:
10236
10237Added the 2008 copyright to all module headers and signons. This affects
10238virtually every file in the ACPICA core subsystem, the iASL compiler, and
10239the tools/utilities.
10240
10241Fixed a problem with the SizeOf operator when used with Package and
10242Buffer
10243objects. These objects have deferred execution for some arguments, and
10244the
10245execution is now completed before the SizeOf is executed. This problem
10246caused
10247unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
10248BZ
102499558
10250
10251Implemented an enhancement to the interpreter "slack mode". In the
10252absence
10253of
10254an explicit return or an implicitly returned object from the last
10255executed
10256opcode, a control method will now implicitly return an integer of value 0
10257for
10258Microsoft compatibility. (Lin Ming) BZ 392
10259
10260Fixed a problem with the Load operator where an exception was not
10261returned
10262in
10263the case where the table is already loaded. (Lin Ming) BZ 463
10264
10265Implemented support for the use of DDBHandles as an Indexed Reference, as
10266per
10267the ACPI spec. (Lin Ming) BZ 486
10268
10269Implemented support for UserTerm (Method invocation) for the Unload
10270operator
10271as per the ACPI spec. (Lin Ming) BZ 580
10272
10273Fixed a problem with the LoadTable operator where the OemId and
10274OemTableId
10275input strings could cause unexpected failures if they were shorter than
10276the
10277maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
10278
10279Implemented support for UserTerm (Method invocation) for the Unload
10280operator
10281as per the ACPI spec. (Lin Ming) BZ 580
10282
10283Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
10284HEST,
10285IBFT, UEFI, WDAT. Disassembler support is forthcoming.
10286
10287Example Code and Data Size: These are the sizes for the OS-independent
10288acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10289debug version of the code includes the debug output trace mechanism and
10290has
10291a much larger code and data size.
10292
10293  Previous Release:
10294    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
10295    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
10296  Current Release:
10297    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
10298    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
10299
103002) iASL Compiler/Disassembler and Tools:
10301
10302Implemented support in the disassembler for checksum validation on
10303incoming
10304binary DSDTs and SSDTs. If incorrect, a message is displayed within the
10305table
10306header dump at the start of the disassembly.
10307
10308Implemented additional debugging information in the namespace listing
10309file
10310created during compilation. In addition to the namespace hierarchy, the
10311full
10312pathname to each namespace object is displayed.
10313
10314Fixed a problem with the disassembler where invalid ACPI tables could
10315cause
10316faults or infinite loops.
10317
10318Fixed an unexpected parse error when using the optional "parameter types"
10319list in a control method declaration. (Lin Ming) BZ 397
10320
10321Fixed a problem where two External declarations with the same name did
10322not
10323cause an error (Lin Ming) BZ 509
10324
10325Implemented support for full TermArgs (adding Argx, Localx and method
10326invocation) for the ParameterData parameter to the LoadTable operator.
10327(Lin
10328Ming) BZ 583,587
10329
10330----------------------------------------
1033119 December 2007. Summary of changes for version 20071219:
10332
103331) ACPI CA Core Subsystem:
10334
10335Implemented full support for deferred execution for the TermArg string
10336arguments for DataTableRegion. This enables forward references and full
10337operand resolution for the three string arguments. Similar to
10338OperationRegion
10339deferred argument execution.) Lin Ming. BZ 430
10340
10341Implemented full argument resolution support for the BankValue argument
10342to
10343BankField. Previously, only constants were supported, now any TermArg may
10344be
10345used. Lin Ming BZ 387, 393
10346
10347Fixed a problem with AcpiGetDevices where the search of a branch of the
10348device tree could be terminated prematurely. In accordance with the ACPI
10349specification, the search down the current branch is terminated if a
10350device
10351is both not present and not functional (instead of just not present.)
10352Yakui
10353Zhao.
10354
10355Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
10356if
10357the underlying AML code changed the GPE enable registers. Now, any
10358unknown
10359incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
10360disabled
10361instead of simply ignored. Rui Zhang.
10362
10363Fixed a problem with Index Fields where the Index register was
10364incorrectly
10365limited to a maximum of 32 bits. Now any size may be used.
10366
10367Fixed a couple memory leaks associated with "implicit return" objects
10368when
10369the AML Interpreter slack mode is enabled. Lin Ming BZ 349
10370
10371Example Code and Data Size: These are the sizes for the OS-independent
10372acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10373debug version of the code includes the debug output trace mechanism and
10374has
10375a much larger code and data size.
10376
10377  Previous Release:
10378    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
10379    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
10380  Current Release:
10381    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
10382    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
10383
10384----------------------------------------
1038514 November 2007. Summary of changes for version 20071114:
10386
103871) ACPI CA Core Subsystem:
10388
10389Implemented event counters for each of the Fixed Events, the ACPI SCI
10390(interrupt) itself, and control methods executed. Named
10391AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
10392These
10393should be useful for debugging and statistics.
10394
10395Implemented a new external interface, AcpiGetStatistics, to retrieve the
10396contents of the various event counters. Returns the current values for
10397AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
10398AcpiMethodCount. The interface can be expanded in the future if new
10399counters
10400are added. Device drivers should use this interface rather than access
10401the
10402counters directly.
10403
10404Fixed a problem with the FromBCD and ToBCD operators. With some
10405compilers,
10406the ShortDivide function worked incorrectly, causing problems with the
10407BCD
10408functions with large input values. A truncation from 64-bit to 32-bit
10409inadvertently occurred. Internal BZ 435. Lin Ming
10410
10411Fixed a problem with Index references passed as method arguments.
10412References
10413passed as arguments to control methods were dereferenced immediately
10414(before
10415control was passed to the called method). The references are now
10416correctly
10417passed directly to the called method. BZ 5389. Lin Ming
10418
10419Fixed a problem with CopyObject used in conjunction with the Index
10420operator.
10421The reference was incorrectly dereferenced before the copy. The reference
10422is
10423now correctly copied. BZ 5391. Lin Ming
10424
10425Fixed a problem with Control Method references within Package objects.
10426These
10427references are now correctly generated. This completes the package
10428construction overhaul that began in version 20071019.
10429
10430Example Code and Data Size: These are the sizes for the OS-independent
10431acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10432debug version of the code includes the debug output trace mechanism and
10433has
10434a much larger code and data size.
10435
10436  Previous Release:
10437    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
10438    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
10439  Current Release:
10440    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
10441    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
10442
10443
104442) iASL Compiler/Disassembler and Tools:
10445
10446The AcpiExec utility now installs handlers for all of the predefined
10447Operation Region types. New types supported are: PCI_Config, CMOS, and
10448PCIBARTarget.
10449
10450Fixed a problem with the 64-bit version of AcpiExec where the extended
10451(64-
10452bit) address fields for the DSDT and FACS within the FADT were not being
10453used, causing truncation of the upper 32-bits of these addresses. Lin
10454Ming
10455and Bob Moore
10456
10457----------------------------------------
1045819 October 2007. Summary of changes for version 20071019:
10459
104601) ACPI CA Core Subsystem:
10461
10462Fixed a problem with the Alias operator when the target of the alias is a
10463named ASL operator that opens a new scope -- Scope, Device,
10464PowerResource,
10465Processor, and ThermalZone. In these cases, any children of the original
10466operator could not be accessed via the alias, potentially causing
10467unexpected
10468AE_NOT_FOUND exceptions. (BZ 9067)
10469
10470Fixed a problem with the Package operator where all named references were
10471created as object references and left otherwise unresolved. According to
10472the
10473ACPI specification, a Package can only contain Data Objects or references
10474to
10475control methods. The implication is that named references to Data Objects
10476(Integer, Buffer, String, Package, BufferField, Field) should be resolved
10477immediately upon package creation. This is the approach taken with this
10478change. References to all other named objects (Methods, Devices, Scopes,
10479etc.) are all now properly created as reference objects. (BZ 5328)
10480
10481Reverted a change to Notify handling that was introduced in version
1048220070508. This version changed the Notify handling from asynchronous to
10483fully synchronous (Device driver Notify handling with respect to the
10484Notify
10485ASL operator). It was found that this change caused more problems than it
10486solved and was removed by most users.
10487
10488Fixed a problem with the Increment and Decrement operators where the type
10489of
10490the target object could be unexpectedly and incorrectly changed. (BZ 353)
10491Lin Ming.
10492
10493Fixed a problem with the Load and LoadTable operators where the table
10494location within the namespace was ignored. Instead, the table was always
10495loaded into the root or current scope. Lin Ming.
10496
10497Fixed a problem with the Load operator when loading a table from a buffer
10498object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
10499
10500Fixed a problem with the Debug object where a store of a DdbHandle
10501reference
10502object to the Debug object could cause a fault.
10503
10504Added a table checksum verification for the Load operator, in the case
10505where
10506the load is from a buffer. (BZ 578).
10507
10508Implemented additional parameter validation for the LoadTable operator.
10509The
10510length of the input strings SignatureString, OemIdString, and OemTableId
10511are
10512now checked for maximum lengths. (BZ 582) Lin Ming.
10513
10514Example Code and Data Size: These are the sizes for the OS-independent
10515acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10516debug version of the code includes the debug output trace mechanism and
10517has
10518a much larger code and data size.
10519
10520  Previous Release:
10521    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
10522    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
10523  Current Release:
10524    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
10525    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
10526
10527
105282) iASL Compiler/Disassembler:
10529
10530Fixed a problem where if a single file was specified and the file did not
10531exist, no error message was emitted. (Introduced with wildcard support in
10532version 20070917.)
10533
10534----------------------------------------
1053519 September 2007. Summary of changes for version 20070919:
10536
105371) ACPI CA Core Subsystem:
10538
10539Designed and implemented new external interfaces to install and remove
10540handlers for ACPI table-related events. Current events that are defined
10541are
10542LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
10543they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
10544AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
10545
10546Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
10547(acpi_serialized option on Linux) could cause some systems to hang during
10548initialization. (Bob Moore) BZ 8171
10549
10550Fixed a problem where objects of certain types (Device, ThermalZone,
10551Processor, PowerResource) can be not found if they are declared and
10552referenced from within the same control method (Lin Ming) BZ 341
10553
10554Example Code and Data Size: These are the sizes for the OS-independent
10555acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10556debug version of the code includes the debug output trace mechanism and
10557has
10558a much larger code and data size.
10559
10560  Previous Release:
10561    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
10562    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
10563  Current Release:
10564    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
10565    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
10566
10567
105682) iASL Compiler/Disassembler:
10569
10570Implemented support to allow multiple files to be compiled/disassembled
10571in
10572a
10573single invocation. This includes command line wildcard support for both
10574the
10575Windows and Unix versions of the compiler. This feature simplifies the
10576disassembly and compilation of multiple ACPI tables in a single
10577directory.
10578
10579----------------------------------------
1058008 May 2007. Summary of changes for version 20070508:
10581
105821) ACPI CA Core Subsystem:
10583
10584Implemented a Microsoft compatibility design change for the handling of
10585the
10586Notify AML operator. Previously, notify handlers were dispatched and
10587executed completely asynchronously in a deferred thread. The new design
10588still executes the notify handlers in a different thread, but the
10589original
10590thread that executed the Notify() now waits at a synchronization point
10591for
10592the notify handler to complete. Some machines depend on a synchronous
10593Notify
10594operator in order to operate correctly.
10595
10596Implemented support to allow Package objects to be passed as method
10597arguments to the external AcpiEvaluateObject interface. Previously, this
10598would return the AE_NOT_IMPLEMENTED exception. This feature had not been
10599implemented since there were no reserved control methods that required it
10600until recently.
10601
10602Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
10603that
10604contained invalid non-zero values in reserved fields could cause later
10605failures because these fields have meaning in later revisions of the
10606FADT.
10607For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
10608fields
10609are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
10610
10611Fixed a problem where the Global Lock handle was not properly updated if
10612a
10613thread that acquired the Global Lock via executing AML code then
10614attempted
10615to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
10616Joe
10617Liu.
10618
10619Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
10620could be corrupted if the interrupt being removed was at the head of the
10621list. Reported by Linn Crosetto.
10622
10623Example Code and Data Size: These are the sizes for the OS-independent
10624acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10625debug version of the code includes the debug output trace mechanism and
10626has
10627a much larger code and data size.
10628
10629  Previous Release:
10630    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10631    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
10632  Current Release:
10633    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
10634    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
10635
10636----------------------------------------
1063720 March 2007. Summary of changes for version 20070320:
10638
106391) ACPI CA Core Subsystem:
10640
10641Implemented a change to the order of interpretation and evaluation of AML
10642operand objects within the AML interpreter. The interpreter now evaluates
10643operands in the order that they appear in the AML stream (and the
10644corresponding ASL code), instead of in the reverse order (after the
10645entire
10646operand list has been parsed). The previous behavior caused several
10647subtle
10648incompatibilities with the Microsoft AML interpreter as well as being
10649somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
10650
10651Implemented a change to the ACPI Global Lock support. All interfaces to
10652the
10653global lock now allow the same thread to acquire the lock multiple times.
10654This affects the AcpiAcquireGlobalLock external interface to the global
10655lock
10656as well as the internal use of the global lock to support AML fields -- a
10657control method that is holding the global lock can now simultaneously
10658access
10659AML fields that require global lock protection. Previously, in both
10660cases,
10661this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
10662to
10663AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
10664Controller. There is no change to the behavior of the AML Acquire
10665operator,
10666as this can already be used to acquire a mutex multiple times by the same
10667thread. BZ 8066. With assistance from Alexey Starikovskiy.
10668
10669Fixed a problem where invalid objects could be referenced in the AML
10670Interpreter after error conditions. During operand evaluation, ensure
10671that
10672the internal "Return Object" field is cleared on error and only valid
10673pointers are stored there. Caused occasional access to deleted objects
10674that
10675resulted in "large reference count" warning messages. Valery Podrezov.
10676
10677Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
10678on
10679deeply nested control method invocations. BZ 7873, local BZ 487. Valery
10680Podrezov.
10681
10682Fixed an internal problem with the handling of result objects on the
10683interpreter result stack. BZ 7872. Valery Podrezov.
10684
10685Removed obsolete code that handled the case where AML_NAME_OP is the
10686target
10687of a reference (Reference.Opcode). This code was no longer necessary. BZ
106887874. Valery Podrezov.
10689
10690Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
10691was
10692a
10693remnant from the previously discontinued 16-bit support.
10694
10695Example Code and Data Size: These are the sizes for the OS-independent
10696acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10697debug version of the code includes the debug output trace mechanism and
10698has
10699a much larger code and data size.
10700
10701  Previous Release:
10702    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10703    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10704  Current Release:
10705    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10706    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
10707
10708----------------------------------------
1070926 January 2007. Summary of changes for version 20070126:
10710
107111) ACPI CA Core Subsystem:
10712
10713Added the 2007 copyright to all module headers and signons. This affects
10714virtually every file in the ACPICA core subsystem, the iASL compiler, and
10715the utilities.
10716
10717Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
10718during a table load. A bad pointer was passed in the case where the DSDT
10719is
10720overridden, causing a fault in this case.
10721
10722Example Code and Data Size: These are the sizes for the OS-independent
10723acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10724debug version of the code includes the debug output trace mechanism and
10725has
10726a much larger code and data size.
10727
10728  Previous Release:
10729    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10730    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10731  Current Release:
10732    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10733    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10734
10735----------------------------------------
1073615 December 2006. Summary of changes for version 20061215:
10737
107381) ACPI CA Core Subsystem:
10739
10740Support for 16-bit ACPICA has been completely removed since it is no
10741longer
10742necessary and it clutters the code. All 16-bit macros, types, and
10743conditional compiles have been removed, cleaning up and simplifying the
10744code
10745across the entire subsystem. DOS support is no longer needed since the
10746bootable Linux firmware kit is now available.
10747
10748The handler for the Global Lock is now removed during AcpiTerminate to
10749enable a clean subsystem restart, via the implementation of the
10750AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
10751HP)
10752
10753Implemented enhancements to the multithreading support within the
10754debugger
10755to enable improved multithreading debugging and evaluation of the
10756subsystem.
10757(Valery Podrezov)
10758
10759Debugger: Enhanced the Statistics/Memory command to emit the total
10760(maximum)
10761memory used during the execution, as well as the maximum memory consumed
10762by
10763each of the various object types. (Valery Podrezov)
10764
10765Example Code and Data Size: These are the sizes for the OS-independent
10766acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10767debug version of the code includes the debug output trace mechanism and
10768has
10769a much larger code and data size.
10770
10771  Previous Release:
10772    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
10773    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
10774  Current Release:
10775    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10776    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10777
10778
107792) iASL Compiler/Disassembler and Tools:
10780
10781AcpiExec: Implemented a new option (-m) to display full memory use
10782statistics upon subsystem/program termination. (Valery Podrezov)
10783
10784----------------------------------------
1078509 November 2006. Summary of changes for version 20061109:
10786
107871) ACPI CA Core Subsystem:
10788
10789Optimized the Load ASL operator in the case where the source operand is
10790an
10791operation region. Simply map the operation region memory, instead of
10792performing a bytewise read. (Region must be of type SystemMemory, see
10793below.)
10794
10795Fixed the Load ASL operator for the case where the source operand is a
10796region field. A buffer object is also allowed as the source operand. BZ
10797480
10798
10799Fixed a problem where the Load ASL operator allowed the source operand to
10800be
10801an operation region of any type. It is now restricted to regions of type
10802SystemMemory, as per the ACPI specification. BZ 481
10803
10804Additional cleanup and optimizations for the new Table Manager code.
10805
10806AcpiEnable will now fail if all of the required ACPI tables are not
10807loaded
10808(FADT, FACS, DSDT). BZ 477
10809
10810Added #pragma pack(8/4) to acobject.h to ensure that the structures in
10811this
10812header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
10813manually optimized to be aligned and will not work if it is byte-packed.
10814
10815Example Code and Data Size: These are the sizes for the OS-independent
10816acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10817debug version of the code includes the debug output trace mechanism and
10818has
10819a much larger code and data size.
10820
10821  Previous Release:
10822    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
10823    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
10824  Current Release:
10825    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
10826    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
10827
10828
108292) iASL Compiler/Disassembler and Tools:
10830
10831Fixed a problem where the presence of the _OSI predefined control method
10832within complex expressions could cause an internal compiler error.
10833
10834AcpiExec: Implemented full region support for multiple address spaces.
10835SpaceId is now part of the REGION object. BZ 429
10836
10837----------------------------------------
1083811 October 2006. Summary of changes for version 20061011:
10839
108401) ACPI CA Core Subsystem:
10841
10842Completed an AML interpreter performance enhancement for control method
10843execution. Previously a 2-pass parse/execution, control methods are now
10844completely parsed and executed in a single pass. This improves overall
10845interpreter performance by ~25%, reduces code size, and reduces CPU stack
10846use. (Valery Podrezov + interpreter changes in version 20051202 that
10847eliminated namespace loading during the pass one parse.)
10848
10849Implemented _CID support for PCI Root Bridge detection. If the _HID does
10850not
10851match the predefined PCI Root Bridge IDs, the _CID list (if present) is
10852now
10853obtained and also checked for an ID match.
10854
10855Implemented additional support for the PCI _ADR execution: upsearch until
10856a
10857device scope is found before executing _ADR. This allows PCI_Config
10858operation regions to be declared locally within control methods
10859underneath
10860PCI device objects.
10861
10862Fixed a problem with a possible race condition between threads executing
10863AcpiWalkNamespace and the AML interpreter. This condition was removed by
10864modifying AcpiWalkNamespace to (by default) ignore all temporary
10865namespace
10866entries created during any concurrent control method execution. An
10867additional namespace race condition is known to exist between
10868AcpiWalkNamespace and the Load/Unload ASL operators and is still under
10869investigation.
10870
10871Restructured the AML ParseLoop function, breaking it into several
10872subfunctions in order to reduce CPU stack use and improve
10873maintainability.
10874(Mikhail Kouzmich)
10875
10876AcpiGetHandle: Fix for parameter validation to detect invalid
10877combinations
10878of prefix handle and pathname. BZ 478
10879
10880Example Code and Data Size: These are the sizes for the OS-independent
10881acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10882debug version of the code includes the debug output trace mechanism and
10883has
10884a much larger code and data size.
10885
10886  Previous Release:
10887    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10888    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
10889  Current Release:
10890    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
10891    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
10892
108932) iASL Compiler/Disassembler and Tools:
10894
10895Ported the -g option (get local ACPI tables) to the new ACPICA Table
10896Manager
10897to restore original behavior.
10898
10899----------------------------------------
1090027 September 2006. Summary of changes for version 20060927:
10901
109021) ACPI CA Core Subsystem:
10903
10904Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
10905These functions now use a spinlock for mutual exclusion and the interrupt
10906level indication flag is not needed.
10907
10908Fixed a problem with the Global Lock where the lock could appear to be
10909obtained before it is actually obtained. The global lock semaphore was
10910inadvertently created with one unit instead of zero units. (BZ 464)
10911Fiodor
10912Suietov.
10913
10914Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
10915during
10916a read from a buffer or region field. (BZ 458) Fiodor Suietov.
10917
10918Example Code and Data Size: These are the sizes for the OS-independent
10919acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10920debug version of the code includes the debug output trace mechanism and
10921has
10922a much larger code and data size.
10923
10924  Previous Release:
10925    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10926    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
10927  Current Release:
10928    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10929    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
10930
10931
109322) iASL Compiler/Disassembler and Tools:
10933
10934Fixed a compilation problem with the pre-defined Resource Descriptor
10935field
10936names where an "object does not exist" error could be incorrectly
10937generated
10938if the parent ResourceTemplate pathname places the template within a
10939different namespace scope than the current scope. (BZ 7212)
10940
10941Fixed a problem where the compiler could hang after syntax errors
10942detected
10943in an ElseIf construct. (BZ 453)
10944
10945Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
10946operator. An incorrect output filename was produced when this parameter
10947was
10948a null string (""). Now, the original input filename is used as the AML
10949output filename, with an ".aml" extension.
10950
10951Implemented a generic batch command mode for the AcpiExec utility
10952(execute
10953any AML debugger command) (Valery Podrezov).
10954
10955----------------------------------------
1095612 September 2006. Summary of changes for version 20060912:
10957
109581) ACPI CA Core Subsystem:
10959
10960Enhanced the implementation of the "serialized mode" of the interpreter
10961(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
10962specified, instead of creating a serialization semaphore per control
10963method,
10964the interpreter lock is simply no longer released before a blocking
10965operation during control method execution. This effectively makes the AML
10966Interpreter single-threaded. The overhead of a semaphore per-method is
10967eliminated.
10968
10969Fixed a regression where an error was no longer emitted if a control
10970method
10971attempts to create 2 objects of the same name. This once again returns
10972AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
10973that
10974will dynamically serialize the control method to possible prevent future
10975errors. (BZ 440)
10976
10977Integrated a fix for a problem with PCI Express HID detection in the PCI
10978Config Space setup procedure. (BZ 7145)
10979
10980Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
10981AcpiHwInitialize function - the FADT registers are now validated when the
10982table is loaded.
10983
10984Added two new warnings during FADT verification - 1) if the FADT is
10985larger
10986than the largest known FADT version, and 2) if there is a mismatch
10987between
10988a
1098932-bit block address and the 64-bit X counterpart (when both are non-
10990zero.)
10991
10992Example Code and Data Size: These are the sizes for the OS-independent
10993acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10994debug version of the code includes the debug output trace mechanism and
10995has
10996a much larger code and data size.
10997
10998  Previous Release:
10999    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
11000    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
11001  Current Release:
11002    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11003    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
11004
11005
110062) iASL Compiler/Disassembler and Tools:
11007
11008Fixed a problem with the implementation of the Switch() operator where
11009the
11010temporary variable was declared too close to the actual Switch, instead
11011of
11012at method level. This could cause a problem if the Switch() operator is
11013within a while loop, causing an error on the second iteration. (BZ 460)
11014
11015Disassembler - fix for error emitted for unknown type for target of scope
11016operator. Now, ignore it and continue.
11017
11018Disassembly of an FADT now verifies the input FADT and reports any errors
11019found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
11020
11021Disassembly of raw data buffers with byte initialization data now
11022prefixes
11023each output line with the current buffer offset.
11024
11025Disassembly of ASF! table now includes all variable-length data fields at
11026the end of some of the subtables.
11027
11028The disassembler now emits a comment if a buffer appears to be a
11029ResourceTemplate, but cannot be disassembled as such because the EndTag
11030does
11031not appear at the very end of the buffer.
11032
11033AcpiExec - Added the "-t" command line option to enable the serialized
11034mode
11035of the AML interpreter.
11036
11037----------------------------------------
1103831 August 2006. Summary of changes for version 20060831:
11039
110401) ACPI CA Core Subsystem:
11041
11042Miscellaneous fixes for the Table Manager:
11043- Correctly initialize internal common FADT for all 64-bit "X" fields
11044- Fixed a couple table mapping issues during table load
11045- Fixed a couple alignment issues for IA64
11046- Initialize input array to zero in AcpiInitializeTables
11047- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
11048AcpiGetTableByIndex
11049
11050Change for GPE support: when a "wake" GPE is received, all wake GPEs are
11051now
11052immediately disabled to prevent the waking GPE from firing again and to
11053prevent other wake GPEs from interrupting the wake process.
11054
11055Added the AcpiGpeCount global that tracks the number of processed GPEs,
11056to
11057be used for debugging systems with a large number of ACPI interrupts.
11058
11059Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
11060both the ACPICA headers and the disassembler.
11061
11062Example Code and Data Size: These are the sizes for the OS-independent
11063acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11064debug version of the code includes the debug output trace mechanism and
11065has
11066a much larger code and data size.
11067
11068  Previous Release:
11069    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
11070    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
11071  Current Release:
11072    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
11073    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
11074
11075
110762) iASL Compiler/Disassembler and Tools:
11077
11078Disassembler support for the DMAR ACPI table.
11079
11080----------------------------------------
1108123 August 2006. Summary of changes for version 20060823:
11082
110831) ACPI CA Core Subsystem:
11084
11085The Table Manager component has been completely redesigned and
11086reimplemented. The new design is much simpler, and reduces the overall
11087code
11088and data size of the kernel-resident ACPICA by approximately 5%. Also, it
11089is
11090now possible to obtain the ACPI tables very early during kernel
11091initialization, even before dynamic memory management is initialized.
11092(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
11093
11094Obsolete ACPICA interfaces:
11095
11096- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
11097init
11098time).
11099- AcpiLoadTable: Not needed.
11100- AcpiUnloadTable: Not needed.
11101
11102New ACPICA interfaces:
11103
11104- AcpiInitializeTables: Must be called before the table manager can be
11105used.
11106- AcpiReallocateRootTable: Used to transfer the root table to dynamically
11107allocated memory after it becomes available.
11108- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
11109tables
11110in the RSDT/XSDT.
11111
11112Other ACPICA changes:
11113
11114- AcpiGetTableHeader returns the actual mapped table header, not a copy.
11115Use
11116AcpiOsUnmapMemory to free this mapping.
11117- AcpiGetTable returns the actual mapped table. The mapping is managed
11118internally and must not be deleted by the caller. Use of this interface
11119causes no additional dynamic memory allocation.
11120- AcpiFindRootPointer: Support for physical addressing has been
11121eliminated,
11122it appeared to be unused.
11123- The interface to AcpiOsMapMemory has changed to be consistent with the
11124other allocation interfaces.
11125- The interface to AcpiOsGetRootPointer has changed to eliminate
11126unnecessary
11127parameters.
11128- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
1112964-
11130bit platforms. Was previously 64 bits on all platforms.
11131- The interface to the ACPI Global Lock acquire/release macros have
11132changed
11133slightly since ACPICA no longer keeps a local copy of the FACS with a
11134constructed pointer to the actual global lock.
11135
11136Porting to the new table manager:
11137
11138- AcpiInitializeTables: Must be called once, and can be called anytime
11139during the OS initialization process. It allows the host to specify an
11140area
11141of memory to be used to store the internal version of the RSDT/XSDT (root
11142table). This allows the host to access ACPI tables before memory
11143management
11144is initialized and running.
11145- AcpiReallocateRootTable: Can be called after memory management is
11146running
11147to copy the root table to a dynamically allocated array, freeing up the
11148scratch memory specified in the call to AcpiInitializeTables.
11149- AcpiSubsystemInitialize: This existing interface is independent of the
11150Table Manager, and does not have to be called before the Table Manager
11151can
11152be used, it only must be called before the rest of ACPICA can be used.
11153- ACPI Tables: Some changes have been made to the names and structure of
11154the
11155actbl.h and actbl1.h header files and may require changes to existing
11156code.
11157For example, bitfields have been completely removed because of their lack
11158of
11159portability across C compilers.
11160- Update interfaces to the Global Lock acquire/release macros if local
11161versions are used. (see acwin.h)
11162
11163Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
11164
11165New files: tbfind.c
11166
11167Example Code and Data Size: These are the sizes for the OS-independent
11168acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11169debug version of the code includes the debug output trace mechanism and
11170has
11171a much larger code and data size.
11172
11173  Previous Release:
11174    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11175    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11176  Current Release:
11177    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
11178    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
11179
11180
111812) iASL Compiler/Disassembler and Tools:
11182
11183No changes for this release.
11184
11185----------------------------------------
1118621 July 2006. Summary of changes for version 20060721:
11187
111881) ACPI CA Core Subsystem:
11189
11190The full source code for the ASL test suite used to validate the iASL
11191compiler and the ACPICA core subsystem is being released with the ACPICA
11192source for the first time. The source is contained in a separate package
11193and
11194consists of over 1100 files that exercise all ASL/AML operators. The
11195package
11196should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
11197Fiodor
11198Suietov)
11199
11200Completed a new design and implementation for support of the ACPI Global
11201Lock. On the OS side, the global lock is now treated as a standard AML
11202mutex. Previously, multiple OS threads could "acquire" the global lock
11203simultaneously. However, this could cause the BIOS to be starved out of
11204the
11205lock - especially in cases such as the Embedded Controller driver where
11206there is a tight coupling between the OS and the BIOS.
11207
11208Implemented an optimization for the ACPI Global Lock interrupt mechanism.
11209The Global Lock interrupt handler no longer queues the execution of a
11210separate thread to signal the global lock semaphore. Instead, the
11211semaphore
11212is signaled directly from the interrupt handler.
11213
11214Implemented support within the AML interpreter for package objects that
11215contain a larger AML length (package list length) than the package
11216element
11217count. In this case, the length of the package is truncated to match the
11218package element count. Some BIOS code apparently modifies the package
11219length
11220on the fly, and this change supports this behavior. Provides
11221compatibility
11222with the MS AML interpreter. (With assistance from Fiodor Suietov)
11223
11224Implemented a temporary fix for the BankValue parameter of a Bank Field
11225to
11226support all constant values, now including the Zero and One opcodes.
11227Evaluation of this parameter must eventually be converted to a full
11228TermArg
11229evaluation. A not-implemented error is now returned (temporarily) for
11230non-
11231constant values for this parameter.
11232
11233Fixed problem reports (Fiodor Suietov) integrated:
11234- Fix for premature object deletion after CopyObject on Operation Region
11235(BZ
11236350)
11237
11238Example Code and Data Size: These are the sizes for the OS-independent
11239acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11240debug version of the code includes the debug output trace mechanism and
11241has
11242a much larger code and data size.
11243
11244  Previous Release:
11245    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
11246    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
11247  Current Release:
11248    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11249    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11250
11251
112522) iASL Compiler/Disassembler and Tools:
11253
11254No changes for this release.
11255
11256----------------------------------------
1125707 July 2006. Summary of changes for version 20060707:
11258
112591) ACPI CA Core Subsystem:
11260
11261Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
11262that do not allow the initialization of address pointers within packed
11263structures - even though the hardware itself may support misaligned
11264transfers. Some of the debug data structures are packed by default to
11265minimize size.
11266
11267Added an error message for the case where AcpiOsGetThreadId() returns
11268zero.
11269A non-zero value is required by the core ACPICA code to ensure the proper
11270operation of AML mutexes and recursive control methods.
11271
11272The DSDT is now the only ACPI table that determines whether the AML
11273interpreter is in 32-bit or 64-bit mode. Not really a functional change,
11274but
11275the hooks for per-table 32/64 switching have been removed from the code.
11276A
11277clarification to the ACPI specification is forthcoming in ACPI 3.0B.
11278
11279Fixed a possible leak of an OwnerID in the error path of
11280AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
11281deletion to a single place in AcpiTbUninstallTable to correct possible
11282leaks
11283when using the AcpiTbDeleteTablesByType interface (with assistance from
11284Lance Ortiz.)
11285
11286Fixed a problem with Serialized control methods where the semaphore
11287associated with the method could be over-signaled after multiple method
11288invocations.
11289
11290Fixed two issues with the locking of the internal namespace data
11291structure.
11292Both the Unload() operator and AcpiUnloadTable interface now lock the
11293namespace during the namespace deletion associated with the table unload
11294(with assistance from Linn Crosetto.)
11295
11296Fixed problem reports (Valery Podrezov) integrated:
11297- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
11298
11299Fixed problem reports (Fiodor Suietov) integrated:
11300- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
11301- On Address Space handler deletion, needless deactivation call (BZ 374)
11302- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
11303375)
11304- Possible memory leak, Notify sub-objects of Processor, Power,
11305ThermalZone
11306(BZ 376)
11307- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
11308- Minimum Length of RSDT should be validated (BZ 379)
11309- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
11310Handler (BZ (380)
11311- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
11312loaded
11313(BZ 381)
11314
11315Example Code and Data Size: These are the sizes for the OS-independent
11316acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11317debug version of the code includes the debug output trace mechanism and
11318has
11319a much larger code and data size.
11320
11321  Previous Release:
11322    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
11323    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
11324  Current Release:
11325    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11326    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11327
11328
113292) iASL Compiler/Disassembler and Tools:
11330
11331Fixed problem reports:
11332Compiler segfault when ASL contains a long (>1024) String declaration (BZ
11333436)
11334
11335----------------------------------------
1133623 June 2006. Summary of changes for version 20060623:
11337
113381) ACPI CA Core Subsystem:
11339
11340Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
11341allows the type to be customized to the host OS for improved efficiency
11342(since a spinlock is usually a very small object.)
11343
11344Implemented support for "ignored" bits in the ACPI registers. According
11345to
11346the ACPI specification, these bits should be preserved when writing the
11347registers via a read/modify/write cycle. There are 3 bits preserved in
11348this
11349manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
11350
11351Implemented the initial deployment of new OSL mutex interfaces. Since
11352some
11353host operating systems have separate mutex and semaphore objects, this
11354feature was requested. The base code now uses mutexes (and the new mutex
11355interfaces) wherever a binary semaphore was used previously. However, for
11356the current release, the mutex interfaces are defined as macros to map
11357them
11358to the existing semaphore interfaces. Therefore, no OSL changes are
11359required
11360at this time. (See acpiosxf.h)
11361
11362Fixed several problems with the support for the control method SyncLevel
11363parameter. The SyncLevel now works according to the ACPI specification
11364and
11365in concert with the Mutex SyncLevel parameter, since the current
11366SyncLevel
11367is a property of the executing thread. Mutual exclusion for control
11368methods
11369is now implemented with a mutex instead of a semaphore.
11370
11371Fixed three instances of the use of the C shift operator in the bitfield
11372support code (exfldio.c) to avoid the use of a shift value larger than
11373the
11374target data width. The behavior of C compilers is undefined in this case
11375and
11376can cause unpredictable results, and therefore the case must be detected
11377and
11378avoided. (Fiodor Suietov)
11379
11380Added an info message whenever an SSDT or OEM table is loaded dynamically
11381via the Load() or LoadTable() ASL operators. This should improve
11382debugging
11383capability since it will show exactly what tables have been loaded
11384(beyond
11385the tables present in the RSDT/XSDT.)
11386
11387Example Code and Data Size: These are the sizes for the OS-independent
11388acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11389debug version of the code includes the debug output trace mechanism and
11390has
11391a much larger code and data size.
11392
11393  Previous Release:
11394    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
11395    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
11396  Current Release:
11397    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
11398    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
11399
11400
114012) iASL Compiler/Disassembler and Tools:
11402
11403No changes for this release.
11404
11405----------------------------------------
1140608 June 2006. Summary of changes for version 20060608:
11407
114081) ACPI CA Core Subsystem:
11409
11410Converted the locking mutex used for the ACPI hardware to a spinlock.
11411This
11412change should eliminate all problems caused by attempting to acquire a
11413semaphore at interrupt level, and it means that all ACPICA external
11414interfaces that directly access the ACPI hardware can be safely called
11415from
11416interrupt level. OSL code that implements the semaphore interfaces should
11417be
11418able to eliminate any workarounds for being called at interrupt level.
11419
11420Fixed a regression introduced in 20060526 where the ACPI device
11421initialization could be prematurely aborted with an AE_NOT_FOUND if a
11422device
11423did not have an optional _INI method.
11424
11425Fixed an IndexField issue where a write to the Data Register should be
11426limited in size to the AccessSize (width) of the IndexField itself. (BZ
11427433,
11428Fiodor Suietov)
11429
11430Fixed problem reports (Valery Podrezov) integrated:
11431- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
11432
11433Fixed problem reports (Fiodor Suietov) integrated:
11434- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
11435
11436Removed four global mutexes that were obsolete and were no longer being
11437used.
11438
11439Example Code and Data Size: These are the sizes for the OS-independent
11440acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11441debug version of the code includes the debug output trace mechanism and
11442has
11443a much larger code and data size.
11444
11445  Previous Release:
11446    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
11447    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
11448  Current Release:
11449    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
11450    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
11451
11452
114532) iASL Compiler/Disassembler and Tools:
11454
11455Fixed a fault when using -g option (get tables from registry) on Windows
11456machines.
11457
11458Fixed problem reports integrated:
11459- Generate error if CreateField NumBits parameter is zero. (BZ 405)
11460- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
11461Suietov)
11462- Global table revision override (-r) is ignored (BZ 413)
11463
11464----------------------------------------
1146526 May 2006. Summary of changes for version 20060526:
11466
114671) ACPI CA Core Subsystem:
11468
11469Restructured, flattened, and simplified the internal interfaces for
11470namespace object evaluation - resulting in smaller code, less CPU stack
11471use,
11472and fewer interfaces. (With assistance from Mikhail Kouzmich)
11473
11474Fixed a problem with the CopyObject operator where the first parameter
11475was
11476not typed correctly for the parser, interpreter, compiler, and
11477disassembler.
11478Caused various errors and unexpected behavior.
11479
11480Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
11481produced incorrect results with some C compilers. Since the behavior of C
11482compilers when the shift value is larger than the datatype width is
11483apparently not well defined, the interpreter now detects this condition
11484and
11485simply returns zero as expected in all such cases. (BZ 395)
11486
11487Fixed problem reports (Valery Podrezov) integrated:
11488- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
11489- Allow interpreter to handle nested method declarations (BZ 5361)
11490
11491Fixed problem reports (Fiodor Suietov) integrated:
11492- AcpiTerminate doesn't free debug memory allocation list objects (BZ
11493355)
11494- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
11495356)
11496- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
11497- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
11498- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
11499- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
11500- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
11501- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
11502- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
11503365)
11504- Status of the Global Initialization Handler call not used (BZ 366)
11505- Incorrect object parameter to Global Initialization Handler (BZ 367)
11506
11507Example Code and Data Size: These are the sizes for the OS-independent
11508acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11509debug version of the code includes the debug output trace mechanism and
11510has
11511a much larger code and data size.
11512
11513  Previous Release:
11514    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
11515    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
11516  Current Release:
11517    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
11518    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
11519
11520
115212) iASL Compiler/Disassembler and Tools:
11522
11523Modified the parser to allow the names IO, DMA, and IRQ to be used as
11524namespace identifiers with no collision with existing resource descriptor
11525macro names. This provides compatibility with other ASL compilers and is
11526most useful for disassembly/recompilation of existing tables without
11527parse
11528errors. (With assistance from Thomas Renninger)
11529
11530Disassembler: fixed an incorrect disassembly problem with the
11531DataTableRegion and CopyObject operators. Fixed a possible fault during
11532disassembly of some Alias operators.
11533
11534----------------------------------------
1153512 May 2006. Summary of changes for version 20060512:
11536
115371) ACPI CA Core Subsystem:
11538
11539Replaced the AcpiOsQueueForExecution interface with a new interface named
11540AcpiOsExecute. The major difference is that the new interface does not
11541have
11542a Priority parameter, this appeared to be useless and has been replaced
11543by
11544a
11545Type parameter. The Type tells the host what type of execution is being
11546requested, such as global lock handler, notify handler, GPE handler, etc.
11547This allows the host to queue and execute the request as appropriate for
11548the
11549request type, possibly using different work queues and different
11550priorities
11551for the various request types. This enables fixes for multithreading
11552deadlock problems such as BZ #5534, and will require changes to all
11553existing
11554OS interface layers. (Alexey Starikovskiy and Bob Moore)
11555
11556Fixed a possible memory leak associated with the support for the so-
11557called
11558"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
11559Suietov)
11560
11561Fixed a problem with the Load() operator where a table load from an
11562operation region could overwrite an internal table buffer by up to 7
11563bytes
11564and cause alignment faults on IPF systems. (With assistance from Luming
11565Yu)
11566
11567Example Code and Data Size: These are the sizes for the OS-independent
11568acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11569debug version of the code includes the debug output trace mechanism and
11570has
11571a much larger code and data size.
11572
11573  Previous Release:
11574    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
11575    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
11576  Current Release:
11577    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
11578    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
11579
11580
11581
115822) iASL Compiler/Disassembler and Tools:
11583
11584Disassembler: Implemented support to cross reference the internal
11585namespace
11586and automatically generate ASL External() statements for symbols not
11587defined
11588within the current table being disassembled. This will simplify the
11589disassembly and recompilation of interdependent tables such as SSDTs
11590since
11591these statements will no longer have to be added manually.
11592
11593Disassembler: Implemented experimental support to automatically detect
11594invocations of external control methods and generate appropriate
11595External()
11596statements. This is problematic because the AML cannot be correctly
11597parsed
11598until the number of arguments for each control method is known.
11599Currently,
11600standalone method invocations and invocations as the source operand of a
11601Store() statement are supported.
11602
11603Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
11604LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
11605LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
11606more readable and likely closer to the original ASL source.
11607
11608----------------------------------------
1160921 April 2006. Summary of changes for version 20060421:
11610
116111) ACPI CA Core Subsystem:
11612
11613Removed a device initialization optimization introduced in 20051216 where
11614the _STA method was not run unless an _INI was also present for the same
11615device. This optimization could cause problems because it could allow
11616_INI
11617methods to be run within a not-present device subtree. (If a not-present
11618device had no _INI, _STA would not be run, the not-present status would
11619not
11620be discovered, and the children of the device would be incorrectly
11621traversed.)
11622
11623Implemented a new _STA optimization where namespace subtrees that do not
11624contain _INI are identified and ignored during device initialization.
11625Selectively running _STA can significantly improve boot time on large
11626machines (with assistance from Len Brown.)
11627
11628Implemented support for the device initialization case where the returned
11629_STA flags indicate a device not-present but functioning. In this case,
11630_INI
11631is not run, but the device children are examined for presence, as per the
11632ACPI specification.
11633
11634Implemented an additional change to the IndexField support in order to
11635conform to MS behavior. The value written to the Index Register is not
11636simply a byte offset, it is a byte offset in units of the access width of
11637the parent Index Field. (Fiodor Suietov)
11638
11639Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
11640interface is called during the creation of all AML operation regions, and
11641allows the host OS to exert control over what addresses it will allow the
11642AML code to access. Operation Regions whose addresses are disallowed will
11643cause a runtime exception when they are actually accessed (will not
11644affect
11645or abort table loading.) See oswinxf or osunixxf for an example
11646implementation.
11647
11648Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
11649interface allows the host OS to match the various "optional"
11650interface/behavior strings for the _OSI predefined control method as
11651appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
11652for an example implementation.
11653
11654Restructured and corrected various problems in the exception handling
11655code
11656paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
11657(with assistance from Takayoshi Kochi.)
11658
11659Modified the Linux source converter to ignore quoted string literals
11660while
11661converting identifiers from mixed to lower case. This will correct
11662problems
11663with the disassembler and other areas where such strings must not be
11664modified.
11665
11666The ACPI_FUNCTION_* macros no longer require quotes around the function
11667name. This allows the Linux source converter to convert the names, now
11668that
11669the converter ignores quoted strings.
11670
11671Example Code and Data Size: These are the sizes for the OS-independent
11672acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11673debug version of the code includes the debug output trace mechanism and
11674has
11675a much larger code and data size.
11676
11677  Previous Release:
11678
11679    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
11680    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
11681  Current Release:
11682    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
11683    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
11684
11685
116862) iASL Compiler/Disassembler and Tools:
11687
11688Implemented 3 new warnings for iASL, and implemented multiple warning
11689levels
11690(w2 flag).
11691
116921) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
11693not
11694WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
11695check for the possible timeout, a warning is issued.
11696
116972) Useless operators: If an ASL operator does not specify an optional
11698target
11699operand and it also does not use the function return value from the
11700operator, a warning is issued since the operator effectively does
11701nothing.
11702
117033) Unreferenced objects: If a namespace object is created, but never
11704referenced, a warning is issued. This is a warning level 2 since there
11705are
11706cases where this is ok, such as when a secondary table is loaded that
11707uses
11708the unreferenced objects. Even so, care is taken to only flag objects
11709that
11710don't look like they will ever be used. For example, the reserved methods
11711(starting with an underscore) are usually not referenced because it is
11712expected that the OS will invoke them.
11713
11714----------------------------------------
1171531 March 2006. Summary of changes for version 20060331:
11716
117171) ACPI CA Core Subsystem:
11718
11719Implemented header file support for the following additional ACPI tables:
11720ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
11721support,
11722all current and known ACPI tables are now defined in the ACPICA headers
11723and
11724are available for use by device drivers and other software.
11725
11726Implemented support to allow tables that contain ACPI names with invalid
11727characters to be loaded. Previously, this would cause the table load to
11728fail, but since there are several known cases of such tables on existing
11729machines, this change was made to enable ACPI support for them. Also,
11730this
11731matches the behavior of the Microsoft ACPI implementation.
11732
11733Fixed a couple regressions introduced during the memory optimization in
11734the
1173520060317 release. The namespace node definition required additional
11736reorganization and an internal datatype that had been changed to 8-bit
11737was
11738restored to 32-bit. (Valery Podrezov)
11739
11740Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
11741could be passed through to AcpiOsReleaseObject which is unexpected. Such
11742null pointers are now trapped and ignored, matching the behavior of the
11743previous implementation before the deployment of AcpiOsReleaseObject.
11744(Valery Podrezov, Fiodor Suietov)
11745
11746Fixed a memory mapping leak during the deletion of a SystemMemory
11747operation
11748region where a cached memory mapping was not deleted. This became a
11749noticeable problem for operation regions that are defined within
11750frequently
11751used control methods. (Dana Meyers)
11752
11753Reorganized the ACPI table header files into two main files: one for the
11754ACPI tables consumed by the ACPICA core, and another for the
11755miscellaneous
11756ACPI tables that are consumed by the drivers and other software. The
11757various
11758FADT definitions were merged into one common section and three different
11759tables (ACPI 1.0, 1.0+, and 2.0)
11760
11761Example Code and Data Size: These are the sizes for the OS-independent
11762acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11763debug version of the code includes the debug output trace mechanism and
11764has
11765a much larger code and data size.
11766
11767  Previous Release:
11768    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
11769    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
11770  Current Release:
11771    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
11772    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
11773
11774
117752) iASL Compiler/Disassembler and Tools:
11776
11777Disassembler: Implemented support to decode and format all non-AML ACPI
11778tables (tables other than DSDTs and SSDTs.) This includes the new tables
11779added to the ACPICA headers, therefore all current and known ACPI tables
11780are
11781supported.
11782
11783Disassembler: The change to allow ACPI names with invalid characters also
11784enables the disassembly of such tables. Invalid characters within names
11785are
11786changed to '*' to make the name printable; the iASL compiler will still
11787generate an error for such names, however, since this is an invalid ACPI
11788character.
11789
11790Implemented an option for AcpiXtract (-a) to extract all tables found in
11791the
11792input file. The default invocation extracts only the DSDTs and SSDTs.
11793
11794Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
11795makefile for the AcpiXtract utility.
11796
11797----------------------------------------
1179817 March 2006. Summary of changes for version 20060317:
11799
118001) ACPI CA Core Subsystem:
11801
11802Implemented the use of a cache object for all internal namespace nodes.
11803Since there are about 1000 static nodes in a typical system, this will
11804decrease memory use for cache implementations that minimize per-
11805allocation
11806overhead (such as a slab allocator.)
11807
11808Removed the reference count mechanism for internal namespace nodes, since
11809it
11810was deemed unnecessary. This reduces the size of each namespace node by
11811about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
11812case,
11813and 32 bytes for the 64-bit case.
11814
11815Optimized several internal data structures to reduce object size on 64-
11816bit
11817platforms by packing data within the 64-bit alignment. This includes the
11818frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
11819instances corresponding to the namespace objects.
11820
11821Added two new strings for the predefined _OSI method: "Windows 2001.1
11822SP1"
11823and "Windows 2006".
11824
11825Split the allocation tracking mechanism out to a separate file, from
11826utalloc.c to uttrack.c. This mechanism appears to be only useful for
11827application-level code. Kernels may wish to not include uttrack.c in
11828distributions.
11829
11830Removed all remnants of the obsolete ACPI_REPORT_* macros and the
11831associated
11832code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
11833macros.)
11834
11835Code and Data Size: These are the sizes for the acpica.lib produced by
11836the
11837Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11838ACPI
11839driver or OSPM code. The debug version of the code includes the debug
11840output
11841trace mechanism and has a much larger code and data size. Note that these
11842values will vary depending on the efficiency of the compiler and the
11843compiler options used during generation.
11844
11845  Previous Release:
11846    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11847    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
11848  Current Release:
11849    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
11850    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
11851
11852
118532) iASL Compiler/Disassembler and Tools:
11854
11855Implemented an ANSI C version of the acpixtract utility. This version
11856will
11857automatically extract the DSDT and all SSDTs from the input acpidump text
11858file and dump the binary output to separate files. It can also display a
11859summary of the input file including the headers for each table found and
11860will extract any single ACPI table, with any signature. (See
11861source/tools/acpixtract)
11862
11863----------------------------------------
1186410 March 2006. Summary of changes for version 20060310:
11865
118661) ACPI CA Core Subsystem:
11867
11868Tagged all external interfaces to the subsystem with the new
11869ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
11870assist
11871kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
11872macro. The default definition is NULL.
11873
11874Added the ACPI_THREAD_ID type for the return value from
11875AcpiOsGetThreadId.
11876This allows the host to define this as necessary to simplify kernel
11877integration. The default definition is ACPI_NATIVE_UINT.
11878
11879Fixed two interpreter problems related to error processing, the deletion
11880of
11881objects, and placing invalid pointers onto the internal operator result
11882stack. BZ 6028, 6151 (Valery Podrezov)
11883
11884Increased the reference count threshold where a warning is emitted for
11885large
11886reference counts in order to eliminate unnecessary warnings on systems
11887with
11888large namespaces (especially 64-bit.) Increased the value from 0x400 to
118890x800.
11890
11891Due to universal disagreement as to the meaning of the 'c' in the
11892calloc()
11893function, the ACPI_MEM_CALLOCATE macro has been renamed to
11894ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
11895ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
11896ACPI_FREE.
11897
11898Code and Data Size: These are the sizes for the acpica.lib produced by
11899the
11900Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11901ACPI
11902driver or OSPM code. The debug version of the code includes the debug
11903output
11904trace mechanism and has a much larger code and data size. Note that these
11905values will vary depending on the efficiency of the compiler and the
11906compiler options used during generation.
11907
11908  Previous Release:
11909    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
11910    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
11911  Current Release:
11912    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11913    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
11914
11915
119162) iASL Compiler/Disassembler:
11917
11918Disassembler: implemented support for symbolic resource descriptor
11919references. If a CreateXxxxField operator references a fixed offset
11920within
11921a
11922resource descriptor, a name is assigned to the descriptor and the offset
11923is
11924translated to the appropriate resource tag and pathname. The addition of
11925this support brings the disassembled code very close to the original ASL
11926source code and helps eliminate run-time errors when the disassembled
11927code
11928is modified (and recompiled) in such a way as to invalidate the original
11929fixed offsets.
11930
11931Implemented support for a Descriptor Name as the last parameter to the
11932ASL
11933Register() macro. This parameter was inadvertently left out of the ACPI
11934specification, and will be added for ACPI 3.0b.
11935
11936Fixed a problem where the use of the "_OSI" string (versus the full path
11937"\_OSI") caused an internal compiler error. ("No back ptr to op")
11938
11939Fixed a problem with the error message that occurs when an invalid string
11940is
11941used for a _HID object (such as one with an embedded asterisk:
11942"*PNP010A".)
11943The correct message is now displayed.
11944
11945----------------------------------------
1194617 February 2006. Summary of changes for version 20060217:
11947
119481) ACPI CA Core Subsystem:
11949
11950Implemented a change to the IndexField support to match the behavior of
11951the
11952Microsoft AML interpreter. The value written to the Index register is now
11953a
11954byte offset, no longer an index based upon the width of the Data
11955register.
11956This should fix IndexField problems seen on some machines where the Data
11957register is not exactly one byte wide. The ACPI specification will be
11958clarified on this point.
11959
11960Fixed a problem where several resource descriptor types could overrun the
11961internal descriptor buffer due to size miscalculation: VendorShort,
11962VendorLong, and Interrupt. This was noticed on IA64 machines, but could
11963affect all platforms.
11964
11965Fixed a problem where individual resource descriptors were misaligned
11966within
11967the internal buffer, causing alignment faults on IA64 platforms.
11968
11969Code and Data Size: These are the sizes for the acpica.lib produced by
11970the
11971Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11972ACPI
11973driver or OSPM code. The debug version of the code includes the debug
11974output
11975trace mechanism and has a much larger code and data size. Note that these
11976values will vary depending on the efficiency of the compiler and the
11977compiler options used during generation.
11978
11979  Previous Release:
11980    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11981    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
11982  Current Release:
11983    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
11984    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
11985
11986
119872) iASL Compiler/Disassembler:
11988
11989Implemented support for new reserved names: _WDG and _WED are Microsoft
11990extensions for Windows Instrumentation Management, _TDL is a new ACPI-
11991defined method (Throttling Depth Limit.)
11992
11993Fixed a problem where a zero-length VendorShort or VendorLong resource
11994descriptor was incorrectly emitted as a descriptor of length one.
11995
11996----------------------------------------
1199710 February 2006. Summary of changes for version 20060210:
11998
119991) ACPI CA Core Subsystem:
12000
12001Removed a couple of extraneous ACPI_ERROR messages that appeared during
12002normal execution. These became apparent after the conversion from
12003ACPI_DEBUG_PRINT.
12004
12005Fixed a problem where the CreateField operator could hang if the BitIndex
12006or
12007NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
12008
12009Fixed a problem where a DeRefOf operation on a buffer object incorrectly
12010failed with an exception. This also fixes a couple of related RefOf and
12011DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
12012
12013Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
12014of
12015AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
12016BZ
120175480)
12018
12019Implemented a memory cleanup at the end of the execution of each
12020iteration
12021of an AML While() loop, preventing the accumulation of outstanding
12022objects.
12023(Valery Podrezov, BZ 5427)
12024
12025Eliminated a chunk of duplicate code in the object resolution code.
12026(Valery
12027Podrezov, BZ 5336)
12028
12029Fixed several warnings during the 64-bit code generation.
12030
12031The AcpiSrc source code conversion tool now inserts one line of
12032whitespace
12033after an if() statement that is followed immediately by a comment,
12034improving
12035readability of the Linux code.
12036
12037Code and Data Size: The current and previous library sizes for the core
12038subsystem are shown below. These are the code and data sizes for the
12039acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12040These
12041values do not include any ACPI driver or OSPM code. The debug version of
12042the
12043code includes the debug output trace mechanism and has a much larger code
12044and data size. Note that these values will vary depending on the
12045efficiency
12046of the compiler and the compiler options used during generation.
12047
12048  Previous Release:
12049    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
12050    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
12051  Current Release:
12052    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12053    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
12054
12055
120562) iASL Compiler/Disassembler:
12057
12058Fixed a problem with the disassembly of a BankField operator with a
12059complex
12060expression for the BankValue parameter.
12061
12062----------------------------------------
1206327 January 2006. Summary of changes for version 20060127:
12064
120651) ACPI CA Core Subsystem:
12066
12067Implemented support in the Resource Manager to allow unresolved
12068namestring
12069references within resource package objects for the _PRT method. This
12070support
12071is in addition to the previously implemented unresolved reference support
12072within the AML parser. If the interpreter slack mode is enabled, these
12073unresolved references will be passed through to the caller as a NULL
12074package
12075entry.
12076
12077Implemented and deployed new macros and functions for error and warning
12078messages across the subsystem. These macros are simpler and generate less
12079code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
12080ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
12081macros remain defined to allow ACPI drivers time to migrate to the new
12082macros.
12083
12084Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
12085the
12086Acquire/Release Lock OSL interfaces.
12087
12088Fixed a problem where Alias ASL operators are sometimes not correctly
12089resolved, in both the interpreter and the iASL compiler.
12090
12091Fixed several problems with the implementation of the
12092ConcatenateResTemplate
12093ASL operator. As per the ACPI specification, zero length buffers are now
12094treated as a single EndTag. One-length buffers always cause a fatal
12095exception. Non-zero length buffers that do not end with a full 2-byte
12096EndTag
12097cause a fatal exception.
12098
12099Fixed a possible structure overwrite in the AcpiGetObjectInfo external
12100interface. (With assistance from Thomas Renninger)
12101
12102Code and Data Size: The current and previous library sizes for the core
12103subsystem are shown below. These are the code and data sizes for the
12104acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12105These
12106values do not include any ACPI driver or OSPM code. The debug version of
12107the
12108code includes the debug output trace mechanism and has a much larger code
12109and data size. Note that these values will vary depending on the
12110efficiency
12111of the compiler and the compiler options used during generation.
12112
12113  Previous Release:
12114    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
12115    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
12116  Current Release:
12117    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
12118    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
12119
12120
121212) iASL Compiler/Disassembler:
12122
12123Fixed an internal error that was generated for any forward references to
12124ASL
12125Alias objects.
12126
12127----------------------------------------
1212813 January 2006. Summary of changes for version 20060113:
12129
121301) ACPI CA Core Subsystem:
12131
12132Added 2006 copyright to all module headers and signons. This affects
12133virtually every file in the ACPICA core subsystem, iASL compiler, and the
12134utilities.
12135
12136Enhanced the ACPICA error reporting in order to simplify user migration
12137to
12138the non-debug version of ACPICA. Replaced all instances of the
12139ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
12140debug
12141levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
12142respectively. This preserves all error and warning messages in the non-
12143debug
12144version of the ACPICA code (this has been referred to as the "debug lite"
12145option.) Over 200 cases were converted to create a total of over 380
12146error/warning messages across the ACPICA code. This increases the code
12147and
12148data size of the default non-debug version of the code somewhat (about
1214913K),
12150but all error/warning reporting may be disabled if desired (and code
12151eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
12152configuration option. The size of the debug version of ACPICA remains
12153about
12154the same.
12155
12156Fixed a memory leak within the AML Debugger "Set" command. One object was
12157not properly deleted for every successful invocation of the command.
12158
12159Code and Data Size: The current and previous library sizes for the core
12160subsystem are shown below. These are the code and data sizes for the
12161acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12162These
12163values do not include any ACPI driver or OSPM code. The debug version of
12164the
12165code includes the debug output trace mechanism and has a much larger code
12166and data size. Note that these values will vary depending on the
12167efficiency
12168of the compiler and the compiler options used during generation.
12169
12170  Previous Release:
12171    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
12172    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
12173  Current Release:
12174    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
12175    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
12176
12177
121782) iASL Compiler/Disassembler:
12179
12180The compiler now officially supports the ACPI 3.0a specification that was
12181released on December 30, 2005. (Specification is available at
12182www.acpi.info)
12183
12184----------------------------------------
1218516 December 2005. Summary of changes for version 20051216:
12186
121871) ACPI CA Core Subsystem:
12188
12189Implemented optional support to allow unresolved names within ASL Package
12190objects. A null object is inserted in the package when a named reference
12191cannot be located in the current namespace. Enabled via the interpreter
12192slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
12193machines
12194that contain such code.
12195
12196Implemented an optimization to the initialization sequence that can
12197improve
12198boot time. During ACPI device initialization, the _STA method is now run
12199if
12200and only if the _INI method exists. The _STA method is used to determine
12201if
12202the device is present; An _INI can only be run if _STA returns present,
12203but
12204it is a waste of time to run the _STA method if the _INI does not exist.
12205(Prototype and assistance from Dong Wei)
12206
12207Implemented use of the C99 uintptr_t for the pointer casting macros if it
12208is
12209available in the current compiler. Otherwise, the default (void *) cast
12210is
12211used as before.
12212
12213Fixed some possible memory leaks found within the execution path of the
12214Break, Continue, If, and CreateField operators. (Valery Podrezov)
12215
12216Fixed a problem introduced in the 20051202 release where an exception is
12217generated during method execution if a control method attempts to declare
12218another method.
12219
12220Moved resource descriptor string constants that are used by both the AML
12221disassembler and AML debugger to the common utilities directory so that
12222these components are independent.
12223
12224Implemented support in the AcpiExec utility (-e switch) to globally
12225ignore
12226exceptions during control method execution (method is not aborted.)
12227
12228Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
12229generation.
12230
12231Code and Data Size: The current and previous library sizes for the core
12232subsystem are shown below. These are the code and data sizes for the
12233acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12234These
12235values do not include any ACPI driver or OSPM code. The debug version of
12236the
12237code includes the debug output trace mechanism and has a much larger code
12238and data size. Note that these values will vary depending on the
12239efficiency
12240of the compiler and the compiler options used during generation.
12241
12242  Previous Release:
12243    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12244    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
12245  Current Release:
12246    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
12247    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
12248
12249
122502) iASL Compiler/Disassembler:
12251
12252Fixed a problem where a CPU stack overflow fault could occur if a
12253recursive
12254method call was made from within a Return statement.
12255
12256----------------------------------------
1225702 December 2005. Summary of changes for version 20051202:
12258
122591) ACPI CA Core Subsystem:
12260
12261Modified the parsing of control methods to no longer create namespace
12262objects during the first pass of the parse. Objects are now created only
12263during the execute phase, at the moment the namespace creation operator
12264is
12265encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
12266This
12267should eliminate ALREADY_EXISTS exceptions seen on some machines where
12268reentrant control methods are protected by an AML mutex. The mutex will
12269now
12270correctly block multiple threads from attempting to create the same
12271object
12272more than once.
12273
12274Increased the number of available Owner Ids for namespace object tracking
12275from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
12276on
12277some machines with a large number of ACPI tables (either static or
12278dynamic).
12279
12280Fixed a problem with the AcpiExec utility where a fault could occur when
12281the
12282-b switch (batch mode) is used.
12283
12284Enhanced the namespace dump routine to output the owner ID for each
12285namespace object.
12286
12287Code and Data Size: The current and previous library sizes for the core
12288subsystem are shown below. These are the code and data sizes for the
12289acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12290These
12291values do not include any ACPI driver or OSPM code. The debug version of
12292the
12293code includes the debug output trace mechanism and has a much larger code
12294and data size. Note that these values will vary depending on the
12295efficiency
12296of the compiler and the compiler options used during generation.
12297
12298  Previous Release:
12299    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12300    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12301  Current Release:
12302    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12303    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
12304
12305
123062) iASL Compiler/Disassembler:
12307
12308Fixed a parse error during compilation of certain Switch/Case constructs.
12309To
12310simplify the parse, the grammar now allows for multiple Default
12311statements
12312and this error is now detected and flagged during the analysis phase.
12313
12314Disassembler: The disassembly now includes the contents of the original
12315table header within a comment at the start of the file. This includes the
12316name and version of the original ASL compiler.
12317
12318----------------------------------------
1231917 November 2005. Summary of changes for version 20051117:
12320
123211) ACPI CA Core Subsystem:
12322
12323Fixed a problem in the AML parser where the method thread count could be
12324decremented below zero if any errors occurred during the method parse
12325phase.
12326This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
12327machines.
12328This also fixed a related regression with the mechanism that detects and
12329corrects methods that cannot properly handle reentrancy (related to the
12330deployment of the new OwnerId mechanism.)
12331
12332Eliminated the pre-parsing of control methods (to detect errors) during
12333table load. Related to the problem above, this was causing unwind issues
12334if
12335any errors occurred during the parse, and it seemed to be overkill. A
12336table
12337load should not be aborted if there are problems with any single control
12338method, thus rendering this feature rather pointless.
12339
12340Fixed a problem with the new table-driven resource manager where an
12341internal
12342buffer overflow could occur for small resource templates.
12343
12344Implemented a new external interface, AcpiGetVendorResource. This
12345interface
12346will find and return a vendor-defined resource descriptor within a _CRS
12347or
12348_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
12349Helgaas.
12350
12351Removed the length limit (200) on string objects as per the upcoming ACPI
123523.0A specification. This affects the following areas of the interpreter:
123531)
12354any implicit conversion of a Buffer to a String, 2) a String object
12355result
12356of the ASL Concatenate operator, 3) the String object result of the ASL
12357ToString operator.
12358
12359Fixed a problem in the Windows OS interface layer (OSL) where a
12360WAIT_FOREVER
12361on a semaphore object would incorrectly timeout. This allows the
12362multithreading features of the AcpiExec utility to work properly under
12363Windows.
12364
12365Updated the Linux makefiles for the iASL compiler and AcpiExec to include
12366the recently added file named "utresrc.c".
12367
12368Code and Data Size: The current and previous library sizes for the core
12369subsystem are shown below. These are the code and data sizes for the
12370acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12371These
12372values do not include any ACPI driver or OSPM code. The debug version of
12373the
12374code includes the debug output trace mechanism and has a much larger code
12375and data size. Note that these values will vary depending on the
12376efficiency
12377of the compiler and the compiler options used during generation.
12378
12379  Previous Release:
12380    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
12381    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12382  Current Release:
12383    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12384    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12385
12386
123872) iASL Compiler/Disassembler:
12388
12389Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
12390specification. For the iASL compiler, this means that string literals
12391within
12392the source ASL can be of any length.
12393
12394Enhanced the listing output to dump the AML code for resource descriptors
12395immediately after the ASL code for each descriptor, instead of in a block
12396at
12397the end of the entire resource template.
12398
12399Enhanced the compiler debug output to dump the entire original parse tree
12400constructed during the parse phase, before any transforms are applied to
12401the
12402tree. The transformed tree is dumped also.
12403
12404----------------------------------------
1240502 November 2005. Summary of changes for version 20051102:
12406
124071) ACPI CA Core Subsystem:
12408
12409Modified the subsystem initialization sequence to improve GPE support.
12410The
12411GPE initialization has been split into two parts in order to defer
12412execution
12413of the _PRW methods (Power Resources for Wake) until after the hardware
12414is
12415fully initialized and the SCI handler is installed. This allows the _PRW
12416methods to access fields protected by the Global Lock. This will fix
12417systems
12418where a NO_GLOBAL_LOCK exception has been seen during initialization.
12419
12420Converted the ACPI internal object disassemble and display code within
12421the
12422AML debugger to fully table-driven operation, reducing code size and
12423increasing maintainability.
12424
12425Fixed a regression with the ConcatenateResTemplate() ASL operator
12426introduced
12427in the 20051021 release.
12428
12429Implemented support for "local" internal ACPI object types within the
12430debugger "Object" command and the AcpiWalkNamespace external interfaces.
12431These local types include RegionFields, BankFields, IndexFields, Alias,
12432and
12433reference objects.
12434
12435Moved common AML resource handling code into a new file, "utresrc.c".
12436This
12437code is shared by both the Resource Manager and the AML Debugger.
12438
12439Code and Data Size: The current and previous library sizes for the core
12440subsystem are shown below. These are the code and data sizes for the
12441acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12442These
12443values do not include any ACPI driver or OSPM code. The debug version of
12444the
12445code includes the debug output trace mechanism and has a much larger code
12446and data size. Note that these values will vary depending on the
12447efficiency
12448of the compiler and the compiler options used during generation.
12449
12450  Previous Release:
12451    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
12452    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
12453  Current Release:
12454    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
12455    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12456
12457
124582) iASL Compiler/Disassembler:
12459
12460Fixed a problem with very large initializer lists (more than 4000
12461elements)
12462for both Buffer and Package objects where the parse stack could overflow.
12463
12464Enhanced the pre-compile source code scan for non-ASCII characters to
12465ignore
12466characters within comment fields. The scan is now always performed and is
12467no
12468longer optional, detecting invalid characters within a source file
12469immediately rather than during the parse phase or later.
12470
12471Enhanced the ASL grammar definition to force early reductions on all
12472list-
12473style grammar elements so that the overall parse stack usage is greatly
12474reduced. This should improve performance and reduce the possibility of
12475parse
12476stack overflow.
12477
12478Eliminated all reduce/reduce conflicts in the iASL parser generation.
12479Also,
12480with the addition of a %expected statement, the compiler generates from
12481source with no warnings.
12482
12483Fixed a possible segment fault in the disassembler if the input filename
12484does not contain a "dot" extension (Thomas Renninger).
12485
12486----------------------------------------
1248721 October 2005. Summary of changes for version 20051021:
12488
124891) ACPI CA Core Subsystem:
12490
12491Implemented support for the EM64T and other x86-64 processors. This
12492essentially entails recognizing that these processors support non-aligned
12493memory transfers. Previously, all 64-bit processors were assumed to lack
12494hardware support for non-aligned transfers.
12495
12496Completed conversion of the Resource Manager to nearly full table-driven
12497operation. Specifically, the resource conversion code (convert AML to
12498internal format and the reverse) and the debug code to dump internal
12499resource descriptors are fully table-driven, reducing code and data size
12500and
12501improving maintainability.
12502
12503The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
12504word
12505on 64-bit processors instead of a fixed 32-bit word. (With assistance
12506from
12507Alexey Starikovskiy)
12508
12509Implemented support within the resource conversion code for the Type-
12510Specific byte within the various ACPI 3.0 *WordSpace macros.
12511
12512Fixed some issues within the resource conversion code for the type-
12513specific
12514flags for both Memory and I/O address resource descriptors. For Memory,
12515implemented support for the MTP and TTP flags. For I/O, split the TRS and
12516TTP flags into two separate fields.
12517
12518Code and Data Size: The current and previous library sizes for the core
12519subsystem are shown below. These are the code and data sizes for the
12520acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12521These
12522values do not include any ACPI driver or OSPM code. The debug version of
12523the
12524code includes the debug output trace mechanism and has a much larger code
12525and data size. Note that these values will vary depending on the
12526efficiency
12527of the compiler and the compiler options used during generation.
12528
12529  Previous Release:
12530    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
12531    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
12532  Current Release:
12533    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
12534    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
12535
12536
12537
125382) iASL Compiler/Disassembler:
12539
12540Relaxed a compiler restriction that disallowed a ResourceIndex byte if
12541the
12542corresponding ResourceSource string was not also present in a resource
12543descriptor declaration. This restriction caused problems with existing
12544AML/ASL code that includes the Index byte without the string. When such
12545AML
12546was disassembled, it could not be compiled without modification. Further,
12547the modified code created a resource template with a different size than
12548the
12549original, breaking code that used fixed offsets into the resource
12550template
12551buffer.
12552
12553Removed a recent feature of the disassembler to ignore a lone
12554ResourceIndex
12555byte. This byte is now emitted if present so that the exact AML can be
12556reproduced when the disassembled code is recompiled.
12557
12558Improved comments and text alignment for the resource descriptor code
12559emitted by the disassembler.
12560
12561Implemented disassembler support for the ACPI 3.0 AccessSize field within
12562a
12563Register() resource descriptor.
12564
12565----------------------------------------
1256630 September 2005. Summary of changes for version 20050930:
12567
125681) ACPI CA Core Subsystem:
12569
12570Completed a major overhaul of the Resource Manager code - specifically,
12571optimizations in the area of the AML/internal resource conversion code.
12572The
12573code has been optimized to simplify and eliminate duplicated code, CPU
12574stack
12575use has been decreased by optimizing function parameters and local
12576variables, and naming conventions across the manager have been
12577standardized
12578for clarity and ease of maintenance (this includes function, parameter,
12579variable, and struct/typedef names.) The update may force changes in some
12580driver code, depending on how resources are handled by the host OS.
12581
12582All Resource Manager dispatch and information tables have been moved to a
12583single location for clarity and ease of maintenance. One new file was
12584created, named "rsinfo.c".
12585
12586The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
12587guarantee that the argument is not evaluated twice, making them less
12588prone
12589to macro side-effects. However, since there exists the possibility of
12590additional stack use if a particular compiler cannot optimize them (such
12591as
12592in the debug generation case), the original macros are optionally
12593available.
12594Note that some invocations of the return_VALUE macro may now cause size
12595mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
12596to
12597eliminate these. (From Randy Dunlap)
12598
12599Implemented a new mechanism to enable debug tracing for individual
12600control
12601methods. A new external interface, AcpiDebugTrace, is provided to enable
12602this mechanism. The intent is to allow the host OS to easily enable and
12603disable tracing for problematic control methods. This interface can be
12604easily exposed to a user or debugger interface if desired. See the file
12605psxface.c for details.
12606
12607AcpiUtCallocate will now return a valid pointer if a length of zero is
12608specified - a length of one is used and a warning is issued. This matches
12609the behavior of AcpiUtAllocate.
12610
12611Code and Data Size: The current and previous library sizes for the core
12612subsystem are shown below. These are the code and data sizes for the
12613acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12614These
12615values do not include any ACPI driver or OSPM code. The debug version of
12616the
12617code includes the debug output trace mechanism and has a much larger code
12618and data size. Note that these values will vary depending on the
12619efficiency
12620of the compiler and the compiler options used during generation.
12621
12622  Previous Release:
12623    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
12624    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
12625  Current Release:
12626    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
12627    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
12628
12629
126302) iASL Compiler/Disassembler:
12631
12632A remark is issued if the effective compile-time length of a package or
12633buffer is zero. Previously, this was a warning.
12634
12635----------------------------------------
1263616 September 2005. Summary of changes for version 20050916:
12637
126381) ACPI CA Core Subsystem:
12639
12640Fixed a problem within the Resource Manager where support for the Generic
12641Register descriptor was not fully implemented. This descriptor is now
12642fully
12643recognized, parsed, disassembled, and displayed.
12644
12645Completely restructured the Resource Manager code to utilize table-driven
12646dispatch and lookup, eliminating many of the large switch() statements.
12647This
12648reduces overall subsystem code size and code complexity. Affects the
12649resource parsing and construction, disassembly, and debug dump output.
12650
12651Cleaned up and restructured the debug dump output for all resource
12652descriptors. Improved readability of the output and reduced code size.
12653
12654Fixed a problem where changes to internal data structures caused the
12655optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
12656
12657Code and Data Size: The current and previous library sizes for the core
12658subsystem are shown below. These are the code and data sizes for the
12659acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12660These
12661values do not include any ACPI driver or OSPM code. The debug version of
12662the
12663code includes the debug output trace mechanism and has a much larger code
12664and data size. Note that these values will vary depending on the
12665efficiency
12666of the compiler and the compiler options used during generation.
12667
12668  Previous Release:
12669    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
12670    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
12671  Current Release:
12672    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
12673    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
12674
12675
126762) iASL Compiler/Disassembler:
12677
12678Updated the disassembler to automatically insert an EndDependentFn()
12679macro
12680into the ASL stream if this macro is missing in the original AML code,
12681simplifying compilation of the resulting ASL module.
12682
12683Fixed a problem in the disassembler where a disassembled ResourceSource
12684string (within a large resource descriptor) was not surrounded by quotes
12685and
12686not followed by a comma, causing errors when the resulting ASL module was
12687compiled. Also, escape sequences within a ResourceSource string are now
12688handled correctly (especially "\\")
12689
12690----------------------------------------
1269102 September 2005. Summary of changes for version 20050902:
12692
126931) ACPI CA Core Subsystem:
12694
12695Fixed a problem with the internal Owner ID allocation and deallocation
12696mechanisms for control method execution and recursive method invocation.
12697This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
12698messages seen on some systems. Recursive method invocation depth is
12699currently limited to 255. (Alexey Starikovskiy)
12700
12701Completely eliminated all vestiges of support for the "module-level
12702executable code" until this support is fully implemented and debugged.
12703This
12704should eliminate the NO_RETURN_VALUE exceptions seen during table load on
12705some systems that invoke this support.
12706
12707Fixed a problem within the resource manager code where the transaction
12708flags
12709for a 64-bit address descriptor were handled incorrectly in the type-
12710specific flag byte.
12711
12712Consolidated duplicate code within the address descriptor resource
12713manager
12714code, reducing overall subsystem code size.
12715
12716Fixed a fault when using the AML debugger "disassemble" command to
12717disassemble individual control methods.
12718
12719Removed references to the "release_current" directory within the Unix
12720release package.
12721
12722Code and Data Size: The current and previous core subsystem library sizes
12723are shown below. These are the code and data sizes for the acpica.lib
12724produced by the Microsoft Visual C++ 6.0 compiler. These values do not
12725include any ACPI driver or OSPM code. The debug version of the code
12726includes
12727the debug output trace mechanism and has a much larger code and data
12728size.
12729Note that these values will vary depending on the efficiency of the
12730compiler
12731and the compiler options used during generation.
12732
12733  Previous Release:
12734    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12735    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
12736  Current Release:
12737    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
12738    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
12739
12740
127412) iASL Compiler/Disassembler:
12742
12743Implemented an error check for illegal duplicate values in the interrupt
12744and
12745dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
12746Interrupt().
12747
12748Implemented error checking for the Irq() and IrqNoFlags() macros to
12749detect
12750too many values in the interrupt list (16 max) and invalid values in the
12751list (range 0 - 15)
12752
12753The maximum length string literal within an ASL file is now restricted to
12754200 characters as per the ACPI specification.
12755
12756Fixed a fault when using the -ln option (generate namespace listing).
12757
12758Implemented an error check to determine if a DescriptorName within a
12759resource descriptor has already been used within the current scope.
12760
12761----------------------------------------
1276215 August 2005.  Summary of changes for version 20050815:
12763
127641) ACPI CA Core Subsystem:
12765
12766Implemented a full bytewise compare to determine if a table load request
12767is
12768attempting to load a duplicate table. The compare is performed if the
12769table
12770signatures and table lengths match. This will allow different tables with
12771the same OEM Table ID and revision to be loaded - probably against the
12772ACPI
12773specification, but discovered in the field nonetheless.
12774
12775Added the changes.txt logfile to each of the zipped release packages.
12776
12777Code and Data Size: Current and previous core subsystem library sizes are
12778shown below. These are the code and data sizes for the acpica.lib
12779produced
12780by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12781any ACPI driver or OSPM code. The debug version of the code includes the
12782debug output trace mechanism and has a much larger code and data size.
12783Note
12784that these values will vary depending on the efficiency of the compiler
12785and
12786the compiler options used during generation.
12787
12788  Previous Release:
12789    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12790    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
12791  Current Release:
12792    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12793    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
12794
12795
127962) iASL Compiler/Disassembler:
12797
12798Fixed a problem where incorrect AML code could be generated for Package
12799objects if optimization is disabled (via the -oa switch).
12800
12801Fixed a problem with where incorrect AML code is generated for variable-
12802length packages when the package length is not specified and the number
12803of
12804initializer values is greater than 255.
12805
12806
12807----------------------------------------
1280829 July 2005.  Summary of changes for version 20050729:
12809
128101) ACPI CA Core Subsystem:
12811
12812Implemented support to ignore an attempt to install/load a particular
12813ACPI
12814table more than once. Apparently there exists BIOS code that repeatedly
12815attempts to load the same SSDT upon certain events. With assistance from
12816Venkatesh Pallipadi.
12817
12818Restructured the main interface to the AML parser in order to correctly
12819handle all exceptional conditions. This will prevent leakage of the
12820OwnerId
12821resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
12822some
12823machines. With assistance from Alexey Starikovskiy.
12824
12825Support for "module level code" has been disabled in this version due to
12826a
12827number of issues that have appeared on various machines. The support can
12828be
12829enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
12830compilation. When the issues are fully resolved, the code will be enabled
12831by
12832default again.
12833
12834Modified the internal functions for debug print support to define the
12835FunctionName parameter as a (const char *) for compatibility with
12836compiler
12837built-in macros such as __FUNCTION__, etc.
12838
12839Linted the entire ACPICA source tree for both 32-bit and 64-bit.
12840
12841Implemented support to display an object count summary for the AML
12842Debugger
12843commands Object and Methods.
12844
12845Code and Data Size: Current and previous core subsystem library sizes are
12846shown below. These are the code and data sizes for the acpica.lib
12847produced
12848by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12849any ACPI driver or OSPM code. The debug version of the code includes the
12850debug output trace mechanism and has a much larger code and data size.
12851Note
12852that these values will vary depending on the efficiency of the compiler
12853and
12854the compiler options used during generation.
12855
12856  Previous Release:
12857    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
12858    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
12859  Current Release:
12860    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12861    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
12862
12863
128642) iASL Compiler/Disassembler:
12865
12866Fixed a regression that appeared in the 20050708 version of the compiler
12867where an error message was inadvertently emitted for invocations of the
12868_OSI
12869reserved control method.
12870
12871----------------------------------------
1287208 July 2005.  Summary of changes for version 20050708:
12873
128741) ACPI CA Core Subsystem:
12875
12876The use of the CPU stack in the debug version of the subsystem has been
12877considerably reduced. Previously, a debug structure was declared in every
12878function that used the debug macros. This structure has been removed in
12879favor of declaring the individual elements as parameters to the debug
12880functions. This reduces the cumulative stack use during nested execution
12881of
12882ACPI function calls at the cost of a small increase in the code size of
12883the
12884debug version of the subsystem. With assistance from Alexey Starikovskiy
12885and
12886Len Brown.
12887
12888Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
12889headers to define a macro that will return the current function name at
12890runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
12891by
12892the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
12893compiler-dependent header, the function name is saved on the CPU stack
12894(one
12895pointer per function.) This mechanism is used because apparently there
12896exists no standard ANSI-C defined macro that that returns the function
12897name.
12898
12899Redesigned and reimplemented the "Owner ID" mechanism used to track
12900namespace objects created/deleted by ACPI tables and control method
12901execution. A bitmap is now used to allocate and free the IDs, thus
12902solving
12903the wraparound problem present in the previous implementation. The size
12904of
12905the namespace node descriptor was reduced by 2 bytes as a result (Alexey
12906Starikovskiy).
12907
12908Removed the UINT32_BIT and UINT16_BIT types that were used for the
12909bitfield
12910flag definitions within the headers for the predefined ACPI tables. These
12911have been replaced by UINT8_BIT in order to increase the code portability
12912of
12913the subsystem. If the use of UINT8 remains a problem, we may be forced to
12914eliminate bitfields entirely because of a lack of portability.
12915
12916Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
12917This
12918is a frequently used function and this improvement increases the
12919performance
12920of the entire subsystem (Alexey Starikovskiy).
12921
12922Fixed several possible memory leaks and the inverse - premature object
12923deletion (Alexey Starikovskiy).
12924
12925Code and Data Size: Current and previous core subsystem library sizes are
12926shown below. These are the code and data sizes for the acpica.lib
12927produced
12928by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12929any ACPI driver or OSPM code. The debug version of the code includes the
12930debug output trace mechanism and has a much larger code and data size.
12931Note
12932that these values will vary depending on the efficiency of the compiler
12933and
12934the compiler options used during generation.
12935
12936  Previous Release:
12937    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
12938    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
12939  Current Release:
12940    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
12941    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
12942
12943----------------------------------------
1294424 June 2005.  Summary of changes for version 20050624:
12945
129461) ACPI CA Core Subsystem:
12947
12948Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
12949the host-defined cache object. This allows the OSL implementation to
12950define
12951and type this object in any manner desired, simplifying the OSL
12952implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
12953Linux, and should be defined in the OS-specific header file for other
12954operating systems as required.
12955
12956Changed the interface to AcpiOsAcquireObject to directly return the
12957requested object as the function return (instead of ACPI_STATUS.) This
12958change was made for performance reasons, since this is the purpose of the
12959interface in the first place. AcpiOsAcquireObject is now similar to the
12960AcpiOsAllocate interface.
12961
12962Implemented a new AML debugger command named Businfo. This command
12963displays
12964information about all devices that have an associate _PRT object. The
12965_ADR,
12966_HID, _UID, and _CID are displayed for these devices.
12967
12968Modified the initialization sequence in AcpiInitializeSubsystem to call
12969the
12970OSL interface AcpiOslInitialize first, before any local initialization.
12971This
12972change was required because the global initialization now calls OSL
12973interfaces.
12974
12975Enhanced the Dump command to display the entire contents of Package
12976objects
12977(including all sub-objects and their values.)
12978
12979Restructured the code base to split some files because of size and/or
12980because the code logically belonged in a separate file. New files are
12981listed
12982below. All makefiles and project files included in the ACPI CA release
12983have
12984been updated.
12985    utilities/utcache.c           /* Local cache interfaces */
12986    utilities/utmutex.c           /* Local mutex support */
12987    utilities/utstate.c           /* State object support */
12988    interpreter/parser/psloop.c   /* Main AML parse loop */
12989
12990Code and Data Size: Current and previous core subsystem library sizes are
12991shown below. These are the code and data sizes for the acpica.lib
12992produced
12993by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12994any ACPI driver or OSPM code. The debug version of the code includes the
12995debug output trace mechanism and has a much larger code and data size.
12996Note
12997that these values will vary depending on the efficiency of the compiler
12998and
12999the compiler options used during generation.
13000
13001  Previous Release:
13002    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
13003    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
13004  Current Release:
13005    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
13006    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
13007
13008
130092) iASL Compiler/Disassembler:
13010
13011Fixed a regression introduced in version 20050513 where the use of a
13012Package
13013object within a Case() statement caused a compile time exception. The
13014original behavior has been restored (a Match() operator is emitted.)
13015
13016----------------------------------------
1301717 June 2005.  Summary of changes for version 20050617:
13018
130191) ACPI CA Core Subsystem:
13020
13021Moved the object cache operations into the OS interface layer (OSL) to
13022allow
13023the host OS to handle these operations if desired (for example, the Linux
13024OSL will invoke the slab allocator). This support is optional; the
13025compile
13026time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
13027cache
13028code in the ACPI CA core. The new OSL interfaces are shown below. See
13029utalloc.c for an example implementation, and acpiosxf.h for the exact
13030interface definitions. With assistance from Alexey Starikovskiy.
13031    AcpiOsCreateCache
13032    AcpiOsDeleteCache
13033    AcpiOsPurgeCache
13034    AcpiOsAcquireObject
13035    AcpiOsReleaseObject
13036
13037Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
13038return
13039and restore a flags parameter. This fits better with many OS lock models.
13040Note: the current execution state (interrupt handler or not) is no longer
13041passed to these interfaces. If necessary, the OSL must determine this
13042state
13043by itself, a simple and fast operation. With assistance from Alexey
13044Starikovskiy.
13045
13046Fixed a problem in the ACPI table handling where a valid XSDT was assumed
13047present if the revision of the RSDP was 2 or greater. According to the
13048ACPI
13049specification, the XSDT is optional in all cases, and the table manager
13050therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
13051Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
13052contain
13053only the RSDT.
13054
13055Fixed an interpreter problem with the Mid() operator in the case of an
13056input
13057string where the resulting output string is of zero length. It now
13058correctly
13059returns a valid, null terminated string object instead of a string object
13060with a null pointer.
13061
13062Fixed a problem with the control method argument handling to allow a
13063store
13064to an Arg object that already contains an object of type Device. The
13065Device
13066object is now correctly overwritten. Previously, an error was returned.
13067
13068
13069Enhanced the debugger Find command to emit object values in addition to
13070the
13071found object pathnames. The output format is the same as the dump
13072namespace
13073command.
13074
13075Enhanced the debugger Set command. It now has the ability to set the
13076value
13077of any Named integer object in the namespace (Previously, only method
13078locals
13079and args could be set.)
13080
13081Code and Data Size: Current and previous core subsystem library sizes are
13082shown below. These are the code and data sizes for the acpica.lib
13083produced
13084by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13085any ACPI driver or OSPM code. The debug version of the code includes the
13086debug output trace mechanism and has a much larger code and data size.
13087Note
13088that these values will vary depending on the efficiency of the compiler
13089and
13090the compiler options used during generation.
13091
13092  Previous Release:
13093    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
13094    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
13095  Current Release:
13096    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
13097    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
13098
13099
131002) iASL Compiler/Disassembler:
13101
13102Fixed a regression in the disassembler where if/else/while constructs
13103were
13104output incorrectly. This problem was introduced in the previous release
13105(20050526). This problem also affected the single-step disassembly in the
13106debugger.
13107
13108Fixed a problem where compiling the reserved _OSI method would randomly
13109(but
13110rarely) produce compile errors.
13111
13112Enhanced the disassembler to emit compilable code in the face of
13113incorrect
13114AML resource descriptors. If the optional ResourceSourceIndex is present,
13115but the ResourceSource is not, do not emit the ResourceSourceIndex in the
13116disassembly. Otherwise, the resulting code cannot be compiled without
13117errors.
13118
13119----------------------------------------
1312026 May 2005.  Summary of changes for version 20050526:
13121
131221) ACPI CA Core Subsystem:
13123
13124Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
13125the module level (not within a control method.) These opcodes are
13126executed
13127exactly once at the time the table is loaded. This type of code was legal
13128up
13129until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
13130in
13131order to provide backwards compatibility with earlier BIOS
13132implementations.
13133This eliminates the "Encountered executable code at module level" warning
13134that was previously generated upon detection of such code.
13135
13136Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
13137inadvertently be generated during the lookup of namespace objects in the
13138second pass parse of ACPI tables and control methods. It appears that
13139this
13140problem could occur during the resolution of forward references to
13141namespace
13142objects.
13143
13144Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
13145corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
13146allows the deadlock detection debug code to be compiled out in the normal
13147case, improving mutex performance (and overall subsystem performance)
13148considerably.
13149
13150Implemented a handful of miscellaneous fixes for possible memory leaks on
13151error conditions and error handling control paths. These fixes were
13152suggested by FreeBSD and the Coverity Prevent source code analysis tool.
13153
13154Added a check for a null RSDT pointer in AcpiGetFirmwareTable
13155(tbxfroot.c)
13156to prevent a fault in this error case.
13157
13158Code and Data Size: Current and previous core subsystem library sizes are
13159shown below. These are the code and data sizes for the acpica.lib
13160produced
13161by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13162any ACPI driver or OSPM code. The debug version of the code includes the
13163debug output trace mechanism and has a much larger code and data size.
13164Note
13165that these values will vary depending on the efficiency of the compiler
13166and
13167the compiler options used during generation.
13168
13169  Previous Release:
13170    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13171    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13172  Current Release:
13173    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
13174    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
13175
13176
131772) iASL Compiler/Disassembler:
13178
13179Implemented support to allow Type 1 and Type 2 ASL operators to appear at
13180the module level (not within a control method.) These operators will be
13181executed once at the time the table is loaded. This type of code was
13182legal
13183up until the release of ACPI 2.0B (2002) and is now supported by the iASL
13184compiler in order to provide backwards compatibility with earlier BIOS
13185ASL
13186code.
13187
13188The ACPI integer width (specified via the table revision ID or the -r
13189override, 32 or 64 bits) is now used internally during compile-time
13190constant
13191folding to ensure that constants are truncated to 32 bits if necessary.
13192Previously, the revision ID value was only emitted in the AML table
13193header.
13194
13195An error message is now generated for the Mutex and Method operators if
13196the
13197SyncLevel parameter is outside the legal range of 0 through 15.
13198
13199Fixed a problem with the Method operator ParameterTypes list handling
13200(ACPI
132013.0). Previously, more than 2 types or 2 arguments generated a syntax
13202error.
13203The actual underlying implementation of method argument typechecking is
13204still under development, however.
13205
13206----------------------------------------
1320713 May 2005.  Summary of changes for version 20050513:
13208
132091) ACPI CA Core Subsystem:
13210
13211Implemented support for PCI Express root bridges -- added support for
13212device
13213PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
13214
13215The interpreter now automatically truncates incoming 64-bit constants to
1321632
13217bits if currently executing out of a 32-bit ACPI table (Revision < 2).
13218This
13219also affects the iASL compiler constant folding. (Note: as per below, the
13220iASL compiler no longer allows 64-bit constants within 32-bit tables.)
13221
13222Fixed a problem where string and buffer objects with "static" pointers
13223(pointers to initialization data within an ACPI table) were not handled
13224consistently. The internal object copy operation now always copies the
13225data
13226to a newly allocated buffer, regardless of whether the source object is
13227static or not.
13228
13229Fixed a problem with the FromBCD operator where an implicit result
13230conversion was improperly performed while storing the result to the
13231target
13232operand. Since this is an "explicit conversion" operator, the implicit
13233conversion should never be performed on the output.
13234
13235Fixed a problem with the CopyObject operator where a copy to an existing
13236named object did not always completely overwrite the existing object
13237stored
13238at name. Specifically, a buffer-to-buffer copy did not delete the
13239existing
13240buffer.
13241
13242Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
13243and
13244structs for consistency.
13245
13246Code and Data Size: Current and previous core subsystem library sizes are
13247shown below. These are the code and data sizes for the acpica.lib
13248produced
13249by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13250any ACPI driver or OSPM code. The debug version of the code includes the
13251debug output trace mechanism and has a much larger code and data size.
13252Note
13253that these values will vary depending on the efficiency of the compiler
13254and
13255the compiler options used during generation.
13256
13257  Previous Release:
13258    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13259    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13260  Current Release: (Same sizes)
13261    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13262    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13263
13264
132652) iASL Compiler/Disassembler:
13266
13267The compiler now emits a warning if an attempt is made to generate a 64-
13268bit
13269integer constant from within a 32-bit ACPI table (Revision < 2). The
13270integer
13271is truncated to 32 bits.
13272
13273Fixed a problem with large package objects: if the static length of the
13274package is greater than 255, the "variable length package" opcode is
13275emitted. Previously, this caused an error. This requires an update to the
13276ACPI spec, since it currently (incorrectly) states that packages larger
13277than
13278255 elements are not allowed.
13279
13280The disassembler now correctly handles variable length packages and
13281packages
13282larger than 255 elements.
13283
13284----------------------------------------
1328508 April 2005.  Summary of changes for version 20050408:
13286
132871) ACPI CA Core Subsystem:
13288
13289Fixed three cases in the interpreter where an "index" argument to an ASL
13290function was still (internally) 32 bits instead of the required 64 bits.
13291This was the Index argument to the Index, Mid, and Match operators.
13292
13293The "strupr" function is now permanently local (AcpiUtStrupr), since this
13294is
13295not a POSIX-defined function and not present in most kernel-level C
13296libraries. All references to the C library strupr function have been
13297removed
13298from the headers.
13299
13300Completed the deployment of static functions/prototypes. All prototypes
13301with
13302the static attribute have been moved from the headers to the owning C
13303file.
13304
13305Implemented an extract option (-e) for the AcpiBin utility (AML binary
13306utility). This option allows the utility to extract individual ACPI
13307tables
13308from the output of AcpiDmp. It provides the same functionality of the
13309acpixtract.pl perl script without the worry of setting the correct perl
13310options. AcpiBin runs on Windows and has not yet been generated/validated
13311in
13312the Linux/Unix environment (but should be soon).
13313
13314Updated and fixed the table dump option for AcpiBin (-d). This option
13315converts a single ACPI table to a hex/ascii file, similar to the output
13316of
13317AcpiDmp.
13318
13319Code and Data Size: Current and previous core subsystem library sizes are
13320shown below. These are the code and data sizes for the acpica.lib
13321produced
13322by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13323any ACPI driver or OSPM code. The debug version of the code includes the
13324debug output trace mechanism and has a much larger code and data size.
13325Note
13326that these values will vary depending on the efficiency of the compiler
13327and
13328the compiler options used during generation.
13329
13330  Previous Release:
13331    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
13332    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
13333  Current Release:
13334    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13335    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13336
13337
133382) iASL Compiler/Disassembler:
13339
13340Disassembler fix: Added a check to ensure that the table length found in
13341the
13342ACPI table header within the input file is not longer than the actual
13343input
13344file size. This indicates some kind of file or table corruption.
13345
13346----------------------------------------
1334729 March 2005.  Summary of changes for version 20050329:
13348
133491) ACPI CA Core Subsystem:
13350
13351An error is now generated if an attempt is made to create a Buffer Field
13352of
13353length zero (A CreateField with a length operand of zero.)
13354
13355The interpreter now issues a warning whenever executable code at the
13356module
13357level is detected during ACPI table load. This will give some idea of the
13358prevalence of this type of code.
13359
13360Implemented support for references to named objects (other than control
13361methods) within package objects.
13362
13363Enhanced package object output for the debug object. Package objects are
13364now
13365completely dumped, showing all elements.
13366
13367Enhanced miscellaneous object output for the debug object. Any object can
13368now be written to the debug object (for example, a device object can be
13369written, and the type of the object will be displayed.)
13370
13371The "static" qualifier has been added to all local functions across both
13372the
13373core subsystem and the iASL compiler.
13374
13375The number of "long" lines (> 80 chars) within the source has been
13376significantly reduced, by about 1/3.
13377
13378Cleaned up all header files to ensure that all CA/iASL functions are
13379prototyped (even static functions) and the formatting is consistent.
13380
13381Two new header files have been added, acopcode.h and acnames.h.
13382
13383Removed several obsolete functions that were no longer used.
13384
13385Code and Data Size: Current and previous core subsystem library sizes are
13386shown below. These are the code and data sizes for the acpica.lib
13387produced
13388by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13389any ACPI driver or OSPM code. The debug version of the code includes the
13390debug output trace mechanism and has a much larger code and data size.
13391Note
13392that these values will vary depending on the efficiency of the compiler
13393and
13394the compiler options used during generation.
13395
13396  Previous Release:
13397    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13398    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
13399  Current Release:
13400    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
13401    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
13402
13403
13404
134052) iASL Compiler/Disassembler:
13406
13407Fixed a problem with the resource descriptor generation/support. For the
13408ResourceSourceIndex and the ResourceSource fields, both must be present,
13409or
13410both must be not present - can't have one without the other.
13411
13412The compiler now returns non-zero from the main procedure if any errors
13413have
13414occurred during the compilation.
13415
13416
13417----------------------------------------
1341809 March 2005.  Summary of changes for version 20050309:
13419
134201) ACPI CA Core Subsystem:
13421
13422The string-to-buffer implicit conversion code has been modified again
13423after
13424a change to the ACPI specification.  In order to match the behavior of
13425the
13426other major ACPI implementation, the target buffer is no longer truncated
13427if
13428the source string is smaller than an existing target buffer. This change
13429requires an update to the ACPI spec, and should eliminate the recent
13430AE_AML_BUFFER_LIMIT issues.
13431
13432The "implicit return" support was rewritten to a new algorithm that
13433solves
13434the general case. Rather than attempt to determine when a method is about
13435to
13436exit, the result of every ASL operator is saved momentarily until the
13437very
13438next ASL operator is executed. Therefore, no matter how the method exits,
13439there will always be a saved implicit return value. This feature is only
13440enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
13441eliminate
13442AE_AML_NO_RETURN_VALUE errors when enabled.
13443
13444Implemented implicit conversion support for the predicate (operand) of
13445the
13446If, Else, and While operators. String and Buffer arguments are
13447automatically
13448converted to Integers.
13449
13450Changed the string-to-integer conversion behavior to match the new ACPI
13451errata: "If no integer object exists, a new integer is created. The ASCII
13452string is interpreted as a hexadecimal constant. Each string character is
13453interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
13454with the first character as the most significant digit, and ending with
13455the
13456first non-hexadecimal character or end-of-string." This means that the
13457first
13458non-hex character terminates the conversion and this is the code that was
13459changed.
13460
13461Fixed a problem where the ObjectType operator would fail (fault) when
13462used
13463on an Index of a Package which pointed to a null package element. The
13464operator now properly returns zero (Uninitialized) in this case.
13465
13466Fixed a problem where the While operator used excessive memory by not
13467properly popping the result stack during execution. There was no memory
13468leak
13469after execution, however. (Code provided by Valery Podrezov.)
13470
13471Fixed a problem where references to control methods within Package
13472objects
13473caused the method to be invoked, instead of producing a reference object
13474pointing to the method.
13475
13476Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
13477to
13478improve performance and reduce code size. (Code provided by Alexey
13479Starikovskiy.)
13480
13481Code and Data Size: Current and previous core subsystem library sizes are
13482shown below. These are the code and data sizes for the acpica.lib
13483produced
13484by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13485any ACPI driver or OSPM code. The debug version of the code includes the
13486debug output trace mechanism and has a much larger code and data size.
13487Note
13488that these values will vary depending on the efficiency of the compiler
13489and
13490the compiler options used during generation.
13491
13492  Previous Release:
13493    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13494    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
13495  Current Release:
13496    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13497    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
13498
13499
135002) iASL Compiler/Disassembler:
13501
13502Fixed a problem with the Return operator with no arguments. Since the AML
13503grammar for the byte encoding requires an operand for the Return opcode,
13504the
13505compiler now emits a Return(Zero) for this case.  An ACPI specification
13506update has been written for this case.
13507
13508For tables other than the DSDT, namepath optimization is automatically
13509disabled. This is because SSDTs can be loaded anywhere in the namespace,
13510the
13511compiler has no knowledge of where, and thus cannot optimize namepaths.
13512
13513Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
13514inadvertently omitted from the ACPI specification, and will require an
13515update to the spec.
13516
13517The source file scan for ASCII characters is now optional (-a). This
13518change
13519was made because some vendors place non-ascii characters within comments.
13520However, the scan is simply a brute-force byte compare to ensure all
13521characters in the file are in the range 0x00 to 0x7F.
13522
13523Fixed a problem with the CondRefOf operator where the compiler was
13524inappropriately checking for the existence of the target. Since the point
13525of
13526the operator is to check for the existence of the target at run-time, the
13527compiler no longer checks for the target existence.
13528
13529Fixed a problem where errors generated from the internal AML interpreter
13530during constant folding were not handled properly, causing a fault.
13531
13532Fixed a problem with overly aggressive range checking for the Stall
13533operator. The valid range (max 255) is now only checked if the operand is
13534of
13535type Integer. All other operand types cannot be statically checked.
13536
13537Fixed a problem where control method references within the RefOf,
13538DeRefOf,
13539and ObjectType operators were not treated properly. They are now treated
13540as
13541actual references, not method invocations.
13542
13543Fixed and enhanced the "list namespace" option (-ln). This option was
13544broken
13545a number of releases ago.
13546
13547Improved error handling for the Field, IndexField, and BankField
13548operators.
13549The compiler now cleanly reports and recovers from errors in the field
13550component (FieldUnit) list.
13551
13552Fixed a disassembler problem where the optional ResourceDescriptor fields
13553TRS and TTP were not always handled correctly.
13554
13555Disassembler - Comments in output now use "//" instead of "/*"
13556
13557----------------------------------------
1355828 February 2005.  Summary of changes for version 20050228:
13559
135601) ACPI CA Core Subsystem:
13561
13562Fixed a problem where the result of an Index() operator (an object
13563reference) must increment the reference count on the target object for
13564the
13565life of the object reference.
13566
13567Implemented AML Interpreter and Debugger support for the new ACPI 3.0
13568Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
13569WordSpace
13570resource descriptors.
13571
13572Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
13573Space Descriptor" string, indicating interpreter support for the
13574descriptors
13575above.
13576
13577Implemented header support for the new ACPI 3.0 FADT flag bits.
13578
13579Implemented header support for the new ACPI 3.0 PCI Express bits for the
13580PM1
13581status/enable registers.
13582
13583Updated header support for the MADT processor local Apic struct and MADT
13584platform interrupt source struct for new ACPI 3.0 fields.
13585
13586Implemented header support for the SRAT and SLIT ACPI tables.
13587
13588Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
13589flag
13590at runtime.
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.2K Code, 11.5K Data,  89.7K Total
13605    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
13606  Current Release:
13607    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13608    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
13609
13610
136112) iASL Compiler/Disassembler:
13612
13613Fixed a problem with the internal 64-bit String-to-integer conversion
13614with
13615strings less than two characters long.
13616
13617Fixed a problem with constant folding where the result of the Index()
13618operator can not be considered a constant. This means that Index() cannot
13619be
13620a type3 opcode and this will require an update to the ACPI specification.
13621
13622Disassembler: Implemented support for the TTP, MTP, and TRS resource
13623descriptor fields. These fields were inadvertently ignored and not output
13624in
13625the disassembly of the resource descriptor.
13626
13627
13628 ----------------------------------------
1362911 February 2005.  Summary of changes for version 20050211:
13630
136311) ACPI CA Core Subsystem:
13632
13633Implemented ACPI 3.0 support for implicit conversion within the Match()
13634operator. MatchObjects can now be of type integer, buffer, or string
13635instead
13636of just type integer.  Package elements are implicitly converted to the
13637type
13638of the MatchObject. This change aligns the behavior of Match() with the
13639behavior of the other logical operators (LLess(), etc.) It also requires
13640an
13641errata change to the ACPI specification as this support was intended for
13642ACPI 3.0, but was inadvertently omitted.
13643
13644Fixed a problem with the internal implicit "to buffer" conversion.
13645Strings
13646that are converted to buffers will cause buffer truncation if the string
13647is
13648smaller than the target buffer. Integers that are converted to buffers
13649will
13650not cause buffer truncation, only zero extension (both as per the ACPI
13651spec.) The problem was introduced when code was added to truncate the
13652buffer, but this should not be performed in all cases, only the string
13653case.
13654
13655Fixed a problem with the Buffer and Package operators where the
13656interpreter
13657would get confused if two such operators were used as operands to an ASL
13658operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
13659stack was not being popped after the execution of these operators,
13660resulting
13661in an AE_NO_RETURN_VALUE exception.
13662
13663Fixed a problem with constructs of the form Store(Index(...),...). The
13664reference object returned from Index was inadvertently resolved to an
13665actual
13666value. This problem was introduced in version 20050114 when the behavior
13667of
13668Store() was modified to restrict the object types that can be used as the
13669source operand (to match the ACPI specification.)
13670
13671Reduced excessive stack use within the AcpiGetObjectInfo procedure.
13672
13673Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
13674
13675Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
13676
13677Code and Data Size: Current and previous core subsystem library sizes are
13678shown below. These are the code and data sizes for the acpica.lib
13679produced
13680by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13681any ACPI driver or OSPM code. The debug version of the code includes the
13682debug output trace mechanism and has a much larger code and data size.
13683Note
13684that these values will vary depending on the efficiency of the compiler
13685and
13686the compiler options used during generation.
13687
13688  Previous Release:
13689    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
13690    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
13691  Current Release:
13692    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
13693    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
13694
13695
136962) iASL Compiler/Disassembler:
13697
13698Fixed a code generation problem in the constant folding optimization code
13699where incorrect code was generated if a constant was reduced to a buffer
13700object (i.e., a reduced type 5 opcode.)
13701
13702Fixed a typechecking problem for the ToBuffer operator. Caused by an
13703incorrect return type in the internal opcode information table.
13704
13705----------------------------------------
1370625 January 2005.  Summary of changes for version 20050125:
13707
137081) ACPI CA Core Subsystem:
13709
13710Fixed a recently introduced problem with the Global Lock where the
13711underlying semaphore was not created.  This problem was introduced in
13712version 20050114, and caused an AE_AML_NO_OPERAND exception during an
13713Acquire() operation on _GL.
13714
13715The local object cache is now optional, and is disabled by default. Both
13716AcpiExec and the iASL compiler enable the cache because they run in user
13717mode and this enhances their performance. #define
13718ACPI_ENABLE_OBJECT_CACHE
13719to enable the local cache.
13720
13721Fixed an issue in the internal function AcpiUtEvaluateObject concerning
13722the
13723optional "implicit return" support where an error was returned if no
13724return
13725object was expected, but one was implicitly returned. AE_OK is now
13726returned
13727in this case and the implicitly returned object is deleted.
13728AcpiUtEvaluateObject is only occasionally used, and only to execute
13729reserved
13730methods such as _STA and _INI where the return type is known up front.
13731
13732Fixed a few issues with the internal convert-to-integer code. It now
13733returns
13734an error if an attempt is made to convert a null string, a string of only
13735blanks/tabs, or a zero-length buffer. This affects both implicit
13736conversion
13737and explicit conversion via the ToInteger() operator.
13738
13739The internal debug code in AcpiUtAcquireMutex has been commented out. It
13740is
13741not needed for normal operation and should increase the performance of
13742the
13743entire subsystem. The code remains in case it is needed for debug
13744purposes
13745again.
13746
13747The AcpiExec source and makefile are included in the Unix/Linux package
13748for
13749the first time.
13750
13751Code and Data Size: Current and previous core subsystem library sizes are
13752shown below. These are the code and data sizes for the acpica.lib
13753produced
13754by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13755any ACPI driver or OSPM code. The debug version of the code includes the
13756debug output trace mechanism and has a much larger code and data size.
13757Note
13758that these values will vary depending on the efficiency of the compiler
13759and
13760the compiler options used during generation.
13761
13762  Previous Release:
13763    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
13764    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
13765  Current Release:
13766    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
13767    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
13768
137692) iASL Compiler/Disassembler:
13770
13771Switch/Case support: A warning is now issued if the type of the Switch
13772value
13773cannot be determined at compile time. For example, Switch(Arg0) will
13774generate the warning, and the type is assumed to be an integer. As per
13775the
13776ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
13777the
13778warning.
13779
13780Switch/Case support: Implemented support for buffer and string objects as
13781the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
13782buffers and strings.
13783
13784Switch/Case support: The emitted code for the LEqual() comparisons now
13785uses
13786the switch value as the first operand, not the second. The case value is
13787now
13788the second operand, and this allows the case value to be implicitly
13789converted to the type of the switch value, not the other way around.
13790
13791Switch/Case support: Temporary variables are now emitted immediately
13792within
13793the control method, not at the global level. This means that there are
13794now
1379536 temps available per-method, not 36 temps per-module as was the case
13796with
13797the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
13798
13799----------------------------------------
1380014 January 2005.  Summary of changes for version 20050114:
13801
13802Added 2005 copyright to all module headers.  This affects every module in
13803the core subsystem, iASL compiler, and the utilities.
13804
138051) ACPI CA Core Subsystem:
13806
13807Fixed an issue with the String-to-Buffer conversion code where the string
13808null terminator was not included in the buffer after conversion, but
13809there
13810is existing ASL that assumes the string null terminator is included. This
13811is
13812the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
13813introduced in the previous version when the code was updated to correctly
13814set the converted buffer size as per the ACPI specification. The ACPI
13815spec
13816is ambiguous and will be updated to specify that the null terminator must
13817be
13818included in the converted buffer. This also affects the ToBuffer() ASL
13819operator.
13820
13821Fixed a problem with the Mid() ASL/AML operator where it did not work
13822correctly on Buffer objects. Newly created sub-buffers were not being
13823marked
13824as initialized.
13825
13826
13827Fixed a problem in AcpiTbFindTable where incorrect string compares were
13828performed on the OemId and OemTableId table header fields.  These fields
13829are
13830not null terminated, so strncmp is now used instead of strcmp.
13831
13832Implemented a restriction on the Store() ASL/AML operator to align the
13833behavior with the ACPI specification.  Previously, any object could be
13834used
13835as the source operand.  Now, the only objects that may be used are
13836Integers,
13837Buffers, Strings, Packages, Object References, and DDB Handles.  If
13838necessary, the original behavior can be restored by enabling the
13839EnableInterpreterSlack flag.
13840
13841Enhanced the optional "implicit return" support to allow an implicit
13842return
13843value from methods that are invoked externally via the AcpiEvaluateObject
13844interface.  This enables implicit returns from the _STA and _INI methods,
13845for example.
13846
13847Changed the Revision() ASL/AML operator to return the current version of
13848the
13849AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
13850returned
13851the supported ACPI version (This is the function of the _REV method).
13852
13853Updated the _REV predefined method to return the currently supported
13854version
13855of ACPI, now 3.
13856
13857Implemented batch mode option for the AcpiExec utility (-b).
13858
13859Code and Data Size: Current and previous core subsystem library sizes are
13860shown below. These are the code and data sizes for the acpica.lib
13861produced
13862by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13863any ACPI driver or OSPM code. The debug version of the code includes the
13864debug output trace mechanism and has a much larger code and data size.
13865Note
13866that these values will vary depending on the efficiency of the compiler
13867and
13868the compiler options used during generation.
13869
13870  Previous Release:
13871    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13872    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
13873  Current Release:
13874    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
13875    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
13876
13877----------------------------------------
1387810 December 2004.  Summary of changes for version 20041210:
13879
13880ACPI 3.0 support is nearing completion in both the iASL compiler and the
13881ACPI CA core subsystem.
13882
138831) ACPI CA Core Subsystem:
13884
13885Fixed a problem in the ToDecimalString operator where the resulting
13886string
13887length was incorrectly calculated. The length is now calculated exactly,
13888eliminating incorrect AE_STRING_LIMIT exceptions.
13889
13890Fixed a problem in the ToHexString operator to allow a maximum 200
13891character
13892string to be produced.
13893
13894Fixed a problem in the internal string-to-buffer and buffer-to-buffer
13895copy
13896routine where the length of the resulting buffer was not truncated to the
13897new size (if the target buffer already existed).
13898
13899Code and Data Size: Current and previous core subsystem library sizes are
13900shown below. These are the code and data sizes for the acpica.lib
13901produced
13902by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13903any ACPI driver or OSPM code. The debug version of the code includes the
13904debug output trace mechanism and has a much larger code and data size.
13905Note
13906that these values will vary depending on the efficiency of the compiler
13907and
13908the compiler options used during generation.
13909
13910  Previous Release:
13911    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13912    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
13913  Current Release:
13914    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13915    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
13916
13917
139182) iASL Compiler/Disassembler:
13919
13920Implemented the new ACPI 3.0 resource template macros - DWordSpace,
13921ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
13922Includes support in the disassembler.
13923
13924Implemented support for the new (ACPI 3.0) parameter to the Register
13925macro,
13926AccessSize.
13927
13928Fixed a problem where the _HE resource name for the Interrupt macro was
13929referencing bit 0 instead of bit 1.
13930
13931Implemented check for maximum 255 interrupts in the Interrupt macro.
13932
13933Fixed a problem with the predefined resource descriptor names where
13934incorrect AML code was generated if the offset within the resource buffer
13935was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
13936but did not update the surrounding package lengths.
13937
13938Changes to the Dma macro:  All channels within the channel list must be
13939in
13940the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
13941optional (default is BusMaster).
13942
13943Implemented check for maximum 7 data bytes for the VendorShort macro.
13944
13945The ReadWrite parameter is now optional for the Memory32 and similar
13946macros.
13947
13948----------------------------------------
1394903 December 2004.  Summary of changes for version 20041203:
13950
139511) ACPI CA Core Subsystem:
13952
13953The low-level field insertion/extraction code (exfldio) has been
13954completely
13955rewritten to eliminate unnecessary complexity, bugs, and boundary
13956conditions.
13957
13958Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
13959ToDecimalString
13960operators where the input operand could be inadvertently deleted if no
13961conversion was necessary (e.g., if the input to ToInteger was an Integer
13962object.)
13963
13964Fixed a problem with the ToDecimalString and ToHexString where an
13965incorrect
13966exception code was returned if the resulting string would be > 200 chars.
13967AE_STRING_LIMIT is now returned.
13968
13969Fixed a problem with the Concatenate operator where AE_OK was always
13970returned, even if the operation failed.
13971
13972Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
13973semaphores to be allocated.
13974
13975Code and Data Size: Current and previous core subsystem library sizes are
13976shown below. These are the code and data sizes for the acpica.lib
13977produced
13978by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13979any ACPI driver or OSPM code. The debug version of the code includes the
13980debug output trace mechanism and has a much larger code and data size.
13981Note
13982that these values will vary depending on the efficiency of the compiler
13983and
13984the compiler options used during generation.
13985
13986  Previous Release:
13987    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13988    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13989  Current Release:
13990    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13991    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
13992
13993
139942) iASL Compiler/Disassembler:
13995
13996Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
13997recently introduced in 20041119.
13998
13999Fixed a problem with the ToUUID macro where the upper nybble of each
14000buffer
14001byte was inadvertently set to zero.
14002
14003----------------------------------------
1400419 November 2004.  Summary of changes for version 20041119:
14005
140061) ACPI CA Core Subsystem:
14007
14008Fixed a problem in the internal ConvertToInteger routine where new
14009integers
14010were not truncated to 32 bits for 32-bit ACPI tables. This routine
14011converts
14012buffers and strings to integers.
14013
14014Implemented support to store a value to an Index() on a String object.
14015This
14016is an ACPI 2.0 feature that had not yet been implemented.
14017
14018Implemented new behavior for storing objects to individual package
14019elements
14020(via the Index() operator). The previous behavior was to invoke the
14021implicit
14022conversion rules if an object was already present at the index.  The new
14023behavior is to simply delete any existing object and directly store the
14024new
14025object. Although the ACPI specification seems unclear on this subject,
14026other
14027ACPI implementations behave in this manner.  (This is the root of the
14028AE_BAD_HEX_CONSTANT issue.)
14029
14030Modified the RSDP memory scan mechanism to support the extended checksum
14031for
14032ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
14033RSDP signature is found with a valid checksum.
14034
14035Code and Data Size: Current and previous core subsystem library sizes are
14036shown below. These are the code and data sizes for the acpica.lib
14037produced
14038by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14039any ACPI driver or OSPM code. The debug version of the code includes the
14040debug output trace mechanism and has a much larger code and data size.
14041Note
14042that these values will vary depending on the efficiency of the compiler
14043and
14044the compiler options used during generation.
14045
14046  Previous Release:
14047    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14048    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14049  Current Release:
14050    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14051    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14052
14053
140542) iASL Compiler/Disassembler:
14055
14056Fixed a missing semicolon in the aslcompiler.y file.
14057
14058----------------------------------------
1405905 November 2004.  Summary of changes for version 20041105:
14060
140611) ACPI CA Core Subsystem:
14062
14063Implemented support for FADT revision 2.  This was an interim table
14064(between
14065ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
14066
14067Implemented optional support to allow uninitialized LocalX and ArgX
14068variables in a control method.  The variables are initialized to an
14069Integer
14070object with a value of zero.  This support is enabled by setting the
14071AcpiGbl_EnableInterpreterSlack flag to TRUE.
14072
14073Implemented support for Integer objects for the SizeOf operator.  Either
140744
14075or 8 is returned, depending on the current integer size (32-bit or 64-
14076bit,
14077depending on the parent table revision).
14078
14079Fixed a problem in the implementation of the SizeOf and ObjectType
14080operators
14081where the operand was resolved to a value too early, causing incorrect
14082return values for some objects.
14083
14084Fixed some possible memory leaks during exceptional conditions.
14085
14086Code and Data Size: Current and previous core subsystem library sizes are
14087shown below. These are the code and data sizes for the acpica.lib
14088produced
14089by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14090any ACPI driver or OSPM code. The debug version of the code includes the
14091debug output trace mechanism and has a much larger code and data size.
14092Note
14093that these values will vary depending on the efficiency of the compiler
14094and
14095the compiler options used during generation.
14096
14097  Previous Release:
14098    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14099    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
14100  Current Release:
14101    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14102    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14103
14104
141052) iASL Compiler/Disassembler:
14106
14107Implemented support for all ACPI 3.0 reserved names and methods.
14108
14109Implemented all ACPI 3.0 grammar elements in the front-end, including
14110support for semicolons.
14111
14112Implemented the ACPI 3.0 Function() and ToUUID() macros
14113
14114Fixed a problem in the disassembler where a Scope() operator would not be
14115emitted properly if the target of the scope was in another table.
14116
14117----------------------------------------
1411815 October 2004.  Summary of changes for version 20041015:
14119
14120Note:  ACPI CA is currently undergoing an in-depth and complete formal
14121evaluation to test/verify the following areas. Other suggestions are
14122welcome. This will result in an increase in the frequency of releases and
14123the number of bug fixes in the next few months.
14124  - Functional tests for all ASL/AML operators
14125  - All implicit/explicit type conversions
14126  - Bit fields and operation regions
14127  - 64-bit math support and 32-bit-only "truncated" math support
14128  - Exceptional conditions, both compiler and interpreter
14129  - Dynamic object deletion and memory leaks
14130  - ACPI 3.0 support when implemented
14131  - External interfaces to the ACPI subsystem
14132
14133
141341) ACPI CA Core Subsystem:
14135
14136Fixed two alignment issues on 64-bit platforms - within debug statements
14137in
14138AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
14139Address
14140field within the non-aligned ACPI generic address structure.
14141
14142Fixed a problem in the Increment and Decrement operators where incorrect
14143operand resolution could result in the inadvertent modification of the
14144original integer when the integer is passed into another method as an
14145argument and the arg is then incremented/decremented.
14146
14147Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
14148bit
14149BCD number were truncated during conversion.
14150
14151Fixed a problem in the ToDecimal operator where the length of the
14152resulting
14153string could be set incorrectly too long if the input operand was a
14154Buffer
14155object.
14156
14157Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
14158(0)
14159within a buffer would prematurely terminate a compare between buffer
14160objects.
14161
14162Added a check for string overflow (>200 characters as per the ACPI
14163specification) during the Concatenate operator with two string operands.
14164
14165Code and Data Size: Current and previous core subsystem library sizes are
14166shown below. These are the code and data sizes for the acpica.lib
14167produced
14168by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14169any ACPI driver or OSPM code. The debug version of the code includes the
14170debug output trace mechanism and has a much larger code and data size.
14171Note
14172that these values will vary depending on the efficiency of the compiler
14173and
14174the compiler options used during generation.
14175
14176  Previous Release:
14177    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14178    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
14179  Current Release:
14180    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14181    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
14182
14183
14184
141852) iASL Compiler/Disassembler:
14186
14187Allow the use of the ObjectType operator on uninitialized Locals and Args
14188(returns 0 as per the ACPI specification).
14189
14190Fixed a problem where the compiler would fault if there was a syntax
14191error
14192in the FieldName of all of the various CreateXXXField operators.
14193
14194Disallow the use of lower case letters within the EISAID macro, as per
14195the
14196ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
14197Where
14198U is an uppercase letter and N is a hex digit.
14199
14200
14201----------------------------------------
1420206 October 2004.  Summary of changes for version 20041006:
14203
142041) ACPI CA Core Subsystem:
14205
14206Implemented support for the ACPI 3.0 Timer operator. This ASL function
14207implements a 64-bit timer with 100 nanosecond granularity.
14208
14209Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
14210implement the ACPI 3.0 Timer operator.  This allows the host OS to
14211implement
14212the timer with the best clock available. Also, it keeps the core
14213subsystem
14214out of the clock handling business, since the host OS (usually) performs
14215this function.
14216
14217Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
14218functions use a 64-bit address which is part of the packed ACPI Generic
14219Address Structure. Since the structure is non-aligned, the alignment
14220macros
14221are now used to extract the address to a local variable before use.
14222
14223Fixed a problem where the ToInteger operator assumed all input strings
14224were
14225hexadecimal. The operator now handles both decimal strings and hex
14226strings
14227(prefixed with "0x").
14228
14229Fixed a problem where the string length in the string object created as a
14230result of the internal ConvertToString procedure could be incorrect. This
14231potentially affected all implicit conversions and also the
14232ToDecimalString
14233and ToHexString operators.
14234
14235Fixed two problems in the ToString operator. If the length parameter was
14236zero, an incorrect string object was created and the value of the input
14237length parameter was inadvertently changed from zero to Ones.
14238
14239Fixed a problem where the optional ResourceSource string in the
14240ExtendedIRQ
14241resource macro was ignored.
14242
14243Simplified the interfaces to the internal division functions, reducing
14244code
14245size and complexity.
14246
14247Code and Data Size: Current and previous core subsystem library sizes are
14248shown below. These are the code and data sizes for the acpica.lib
14249produced
14250by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14251any ACPI driver or OSPM code. The debug version of the code includes the
14252debug output trace mechanism and has a much larger code and data size.
14253Note
14254that these values will vary depending on the efficiency of the compiler
14255and
14256the compiler options used during generation.
14257
14258  Previous Release:
14259    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
14260    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
14261  Current Release:
14262    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14263    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
14264
14265
142662) iASL Compiler/Disassembler:
14267
14268Implemented support for the ACPI 3.0 Timer operator.
14269
14270Fixed a problem where the Default() operator was inadvertently ignored in
14271a
14272Switch/Case block.  This was a problem in the translation of the Switch
14273statement to If...Else pairs.
14274
14275Added support to allow a standalone Return operator, with no parentheses
14276(or
14277operands).
14278
14279Fixed a problem with code generation for the ElseIf operator where the
14280translated Else...If parse tree was improperly constructed leading to the
14281loss of some code.
14282
14283----------------------------------------
1428422 September 2004.  Summary of changes for version 20040922:
14285
142861) ACPI CA Core Subsystem:
14287
14288Fixed a problem with the implementation of the LNot() operator where
14289"Ones"
14290was not returned for the TRUE case. Changed the code to return Ones
14291instead
14292of (!Arg) which was usually 1. This change affects iASL constant folding
14293for
14294this operator also.
14295
14296Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
14297not
14298initialized properly -- Now zero the entire buffer in this case where the
14299buffer already exists.
14300
14301Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
14302Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
14303related code considerably. This will require changes/updates to all OS
14304interface layers (OSLs.)
14305
14306Implemented a new external interface, AcpiInstallExceptionHandler, to
14307allow
14308a system exception handler to be installed. This handler is invoked upon
14309any
14310run-time exception that occurs during control method execution.
14311
14312Added support for the DSDT in AcpiTbFindTable. This allows the
14313DataTableRegion() operator to access the local copy of the DSDT.
14314
14315Code and Data Size: Current and previous core subsystem library sizes are
14316shown below. These are the code and data sizes for the acpica.lib
14317produced
14318by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14319any ACPI driver or OSPM code. The debug version of the code includes the
14320debug output trace mechanism and has a much larger code and data size.
14321Note
14322that these values will vary depending on the efficiency of the compiler
14323and
14324the compiler options used during generation.
14325
14326  Previous Release:
14327    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
14328    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
14329  Current Release:
14330    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
14331    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
14332
14333
143342) iASL Compiler/Disassembler:
14335
14336Fixed a problem with constant folding and the LNot operator. LNot was
14337returning 1 in the TRUE case, not Ones as per the ACPI specification.
14338This
14339could result in the generation of an incorrect folded/reduced constant.
14340
14341End-Of-File is now allowed within a "//"-style comment.  A parse error no
14342longer occurs if such a comment is at the very end of the input ASL
14343source
14344file.
14345
14346Implemented the "-r" option to override the Revision in the table header.
14347The initial use of this option will be to simplify the evaluation of the
14348AML
14349interpreter by allowing a single ASL source module to be compiled for
14350either
1435132-bit or 64-bit integers.
14352
14353
14354----------------------------------------
1435527 August 2004.  Summary of changes for version 20040827:
14356
143571) ACPI CA Core Subsystem:
14358
14359- Implemented support for implicit object conversion in the non-numeric
14360logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
14361and
14362LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
14363the second operand is implicitly converted on the fly to match the type
14364of
14365the first operand.  For example:
14366
14367    LEqual (Source1, Source2)
14368
14369Source1 and Source2 must each evaluate to an integer, a string, or a
14370buffer.
14371The data type of Source1 dictates the required type of Source2. Source2
14372is
14373implicitly converted if necessary to match the type of Source1.
14374
14375- Updated and corrected the behavior of the string conversion support.
14376The
14377rules concerning conversion of buffers to strings (according to the ACPI
14378specification) are as follows:
14379
14380ToDecimalString - explicit byte-wise conversion of buffer to string of
14381decimal values (0-255) separated by commas. ToHexString - explicit byte-
14382wise
14383conversion of buffer to string of hex values (0-FF) separated by commas.
14384ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
14385byte
14386copy with no transform except NULL terminated. Any other implicit buffer-
14387to-
14388string conversion - byte-wise conversion of buffer to string of hex
14389values
14390(0-FF) separated by spaces.
14391
14392- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
14393
14394- Fixed a problem in AcpiNsGetPathnameLength where the returned length
14395was
14396one byte too short in the case of a node in the root scope.  This could
14397cause a fault during debug output.
14398
14399- Code and Data Size: Current and previous core subsystem library sizes
14400are
14401shown below.  These are the code and data sizes for the acpica.lib
14402produced
14403by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14404any ACPI driver or OSPM code.  The debug version of the code includes the
14405debug output trace mechanism and has a much larger code and data size.
14406Note
14407that these values will vary depending on the efficiency of the compiler
14408and
14409the compiler options used during generation.
14410
14411  Previous Release:
14412    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
14413    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
14414  Current Release:
14415    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
14416    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
14417
14418
144192) iASL Compiler/Disassembler:
14420
14421- Fixed a Linux generation error.
14422
14423
14424----------------------------------------
1442516 August 2004.  Summary of changes for version 20040816:
14426
144271) ACPI CA Core Subsystem:
14428
14429Designed and implemented support within the AML interpreter for the so-
14430called "implicit return".  This support returns the result of the last
14431ASL
14432operation within a control method, in the absence of an explicit Return()
14433operator.  A few machines depend on this behavior, even though it is not
14434explicitly supported by the ASL language.  It is optional support that
14435can
14436be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
14437
14438Removed support for the PCI_Config address space from the internal low
14439level
14440hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
14441support was not used internally, and would not work correctly anyway
14442because
14443the PCI bus number and segment number were not supported.  There are
14444separate interfaces for PCI configuration space access because of the
14445unique
14446interface.
14447
14448Code and Data Size: Current and previous core subsystem library sizes are
14449shown below.  These are the code and data sizes for the acpica.lib
14450produced
14451by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14452any ACPI driver or OSPM code.  The debug version of the code includes the
14453debug output trace mechanism and has a much larger code and data size.
14454Note
14455that these values will vary depending on the efficiency of the compiler
14456and
14457the compiler options used during generation.
14458
14459  Previous Release:
14460    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14461    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
14462  Current Release:
14463    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
14464    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
14465
14466
144672) iASL Compiler/Disassembler:
14468
14469Fixed a problem where constants in ASL expressions at the root level (not
14470within a control method) could be inadvertently truncated during code
14471generation.  This problem was introduced in the 20040715 release.
14472
14473
14474----------------------------------------
1447515 July 2004.  Summary of changes for version 20040715:
14476
144771) ACPI CA Core Subsystem:
14478
14479Restructured the internal HW GPE interfaces to pass/track the current
14480state
14481of interrupts (enabled/disabled) in order to avoid possible deadlock and
14482increase flexibility of the interfaces.
14483
14484Implemented a "lexicographical compare" for String and Buffer objects
14485within
14486the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
14487-
14488as per further clarification to the ACPI specification.  Behavior is
14489similar
14490to C library "strcmp".
14491
14492Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
14493external function.  In the 32-bit non-debug case, the stack use has been
14494reduced from 168 bytes to 32 bytes.
14495
14496Deployed a new run-time configuration flag,
14497AcpiGbl_EnableInterpreterSlack,
14498whose purpose is to allow the AML interpreter to forgive certain bad AML
14499constructs.  Default setting is FALSE.
14500
14501Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
14502IO
14503support code.  If enabled, it allows field access to go beyond the end of
14504a
14505region definition if the field is within the region length rounded up to
14506the
14507next access width boundary (a common coding error.)
14508
14509Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
14510ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
14511these
14512symbols are lowercase by the latest version of the AcpiSrc tool.
14513
14514The prototypes for the PCI interfaces in acpiosxf.h have been updated to
14515rename "Register" to simply "Reg" to prevent certain compilers from
14516complaining.
14517
14518Code and Data Size: Current and previous core subsystem library sizes are
14519shown below.  These are the code and data sizes for the acpica.lib
14520produced
14521by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14522any ACPI driver or OSPM code.  The debug version of the code includes the
14523debug output trace mechanism and has a much larger code and data size.
14524Note
14525that these values will vary depending on the efficiency of the compiler
14526and
14527the compiler options used during generation.
14528
14529  Previous Release:
14530    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14531    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
14532  Current Release:
14533    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14534    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
14535
14536
145372) iASL Compiler/Disassembler:
14538
14539Implemented full support for Package objects within the Case() operator.
14540Note: The Break() operator is currently not supported within Case blocks
14541(TermLists) as there is some question about backward compatibility with
14542ACPI
145431.0 interpreters.
14544
14545
14546Fixed a problem where complex terms were not supported properly within
14547the
14548Switch() operator.
14549
14550Eliminated extraneous warning for compiler-emitted reserved names of the
14551form "_T_x".  (Used in Switch/Case operators.)
14552
14553Eliminated optimization messages for "_T_x" objects and small constants
14554within the DefinitionBlock operator.
14555
14556
14557----------------------------------------
1455815 June 2004.  Summary of changes for version 20040615:
14559
145601) ACPI CA Core Subsystem:
14561
14562Implemented support for Buffer and String objects (as per ACPI 2.0) for
14563the
14564following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
14565LLessEqual.
14566
14567All directory names in the entire source package are lower case, as they
14568were in earlier releases.
14569
14570Implemented "Disassemble" command in the AML debugger that will
14571disassemble
14572a single control method.
14573
14574Code and Data Size: Current and previous core subsystem library sizes are
14575shown below.  These are the code and data sizes for the acpica.lib
14576produced
14577by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14578any ACPI driver or OSPM code.  The debug version of the code includes the
14579debug output trace mechanism and has a much larger code and data size.
14580Note
14581that these values will vary depending on the efficiency of the compiler
14582and
14583the compiler options used during generation.
14584
14585  Previous Release:
14586    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
14587    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
14588
14589  Current Release:
14590    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14591    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
14592
14593
145942) iASL Compiler/Disassembler:
14595
14596Implemented support for Buffer and String objects (as per ACPI 2.0) for
14597the
14598following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
14599LLessEqual.
14600
14601All directory names in the entire source package are lower case, as they
14602were in earlier releases.
14603
14604Fixed a fault when using the -g or -d<nofilename> options if the FADT was
14605not found.
14606
14607Fixed an issue with the Windows version of the compiler where later
14608versions
14609of Windows place the FADT in the registry under the name "FADT" and not
14610"FACP" as earlier versions did.  This applies when using the -g or -
14611d<nofilename> options.  The compiler now looks for both strings as
14612necessary.
14613
14614Fixed a problem with compiler namepath optimization where a namepath
14615within
14616the Scope() operator could not be optimized if the namepath was a subpath
14617of
14618the current scope path.
14619
14620----------------------------------------
1462127 May 2004.  Summary of changes for version 20040527:
14622
146231) ACPI CA Core Subsystem:
14624
14625Completed a new design and implementation for EBDA (Extended BIOS Data
14626Area)
14627support in the RSDP scan code.  The original code improperly scanned for
14628the
14629EBDA by simply scanning from memory location 0 to 0x400.  The correct
14630method
14631is to first obtain the EBDA pointer from within the BIOS data area, then
14632scan 1K of memory starting at the EBDA pointer.  There appear to be few
14633if
14634any machines that place the RSDP in the EBDA, however.
14635
14636Integrated a fix for a possible fault during evaluation of BufferField
14637arguments.  Obsolete code that was causing the problem was removed.
14638
14639Found and fixed a problem in the Field Support Code where data could be
14640corrupted on a bit field read that starts on an aligned boundary but does
14641not end on an aligned boundary.  Merged the read/write "datum length"
14642calculation code into a common procedure.
14643
14644Rolled in a couple of changes to the FreeBSD-specific header.
14645
14646
14647Code and Data Size: Current and previous core subsystem library sizes are
14648shown below.  These are the code and data sizes for the acpica.lib
14649produced
14650by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14651any ACPI driver or OSPM code.  The debug version of the code includes the
14652debug output trace mechanism and has a much larger code and data size.
14653Note
14654that these values will vary depending on the efficiency of the compiler
14655and
14656the compiler options used during generation.
14657
14658  Previous Release:
14659    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14660    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
14661  Current Release:
14662    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
14663    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
14664
14665
146662) iASL Compiler/Disassembler:
14667
14668Fixed a generation warning produced by some overly-verbose compilers for
14669a
1467064-bit constant.
14671
14672----------------------------------------
1467314 May 2004.  Summary of changes for version 20040514:
14674
146751) ACPI CA Core Subsystem:
14676
14677Fixed a problem where hardware GPE enable bits sometimes not set properly
14678during and after GPE method execution.  Result of 04/27 changes.
14679
14680Removed extra "clear all GPEs" when sleeping/waking.
14681
14682Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
14683AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
14684to
14685the new AcpiEv* calls as appropriate.
14686
14687ACPI_OS_NAME was removed from the OS-specific headers.  The default name
14688is
14689now "Microsoft Windows NT" for maximum compatibility.  However this can
14690be
14691changed by modifying the acconfig.h file.
14692
14693Allow a single invocation of AcpiInstallNotifyHandler for a handler that
14694traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
14695
14696Run _INI methods on ThermalZone objects.  This is against the ACPI
14697specification, but there is apparently ASL code in the field that has
14698these
14699_INI methods, and apparently "other" AML interpreters execute them.
14700
14701Performed a full 16/32/64 bit lint that resulted in some small changes.
14702
14703Added a sleep simulation command to the AML debugger to test sleep code.
14704
14705Code and Data Size: Current and previous core subsystem library sizes are
14706shown below.  These are the code and data sizes for the acpica.lib
14707produced
14708by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14709any ACPI driver or OSPM code.  The debug version of the code includes the
14710debug output trace mechanism and has a much larger code and data size.
14711Note
14712that these values will vary depending on the efficiency of the compiler
14713and
14714the compiler options used during generation.
14715
14716  Previous Release:
14717    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14718    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
14719  Current Release:
14720    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14721    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
14722
14723----------------------------------------
1472427 April 2004.  Summary of changes for version 20040427:
14725
147261) ACPI CA Core Subsystem:
14727
14728Completed a major overhaul of the GPE handling within ACPI CA.  There are
14729now three types of GPEs:  wake-only, runtime-only, and combination
14730wake/run.
14731The only GPEs allowed to be combination wake/run are for button-style
14732devices such as a control-method power button, control-method sleep
14733button,
14734or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
14735not
14736referenced by any _PRW methods are marked for "runtime" and hardware
14737enabled.  Any GPE that is referenced by a _PRW method is marked for
14738"wake"
14739(and disabled at runtime).  However, at sleep time, only those GPEs that
14740have been specifically enabled for wake via the AcpiEnableGpe interface
14741will
14742actually be hardware enabled.
14743
14744A new external interface has been added, AcpiSetGpeType(), that is meant
14745to
14746be used by device drivers to force a GPE to a particular type.  It will
14747be
14748especially useful for the drivers for the button devices mentioned above.
14749
14750Completed restructuring of the ACPI CA initialization sequence so that
14751default operation region handlers are installed before GPEs are
14752initialized
14753and the _PRW methods are executed.  This will prevent errors when the
14754_PRW
14755methods attempt to access system memory or I/O space.
14756
14757GPE enable/disable no longer reads the GPE enable register.  We now keep
14758the
14759enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
14760thus no longer depend on the hardware to maintain these bits.
14761
14762Always clear the wake status and fixed/GPE status bits before sleep, even
14763for state S5.
14764
14765Improved the AML debugger output for displaying the GPE blocks and their
14766current status.
14767
14768Added new strings for the _OSI method, of the form "Windows 2001 SPx"
14769where
14770x = 0,1,2,3,4.
14771
14772Fixed a problem where the physical address was incorrectly calculated
14773when
14774the Load() operator was used to directly load from an Operation Region
14775(vs.
14776loading from a Field object.)  Also added check for minimum table length
14777for
14778this case.
14779
14780Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
14781mutex release.
14782
14783Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
14784consistency with the other fields returned.
14785
14786Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
14787structure for each GPE in the system, so the size of this structure is
14788important.
14789
14790CPU stack requirement reduction:  Cleaned up the method execution and
14791object
14792evaluation paths so that now a parameter structure is passed, instead of
14793copying the various method parameters over and over again.
14794
14795In evregion.c:  Correctly exit and reenter the interpreter region if and
14796only if dispatching an operation region request to a user-installed
14797handler.
14798Do not exit/reenter when dispatching to a default handler (e.g., default
14799system memory or I/O handlers)
14800
14801
14802Notes for updating drivers for the new GPE support.  The following
14803changes
14804must be made to ACPI-related device drivers that are attached to one or
14805more
14806GPEs: (This information will be added to the ACPI CA Programmer
14807Reference.)
14808
148091) AcpiInstallGpeHandler no longer automatically enables the GPE, you
14810must
14811explicitly call AcpiEnableGpe.
148122) There is a new interface called AcpiSetGpeType. This should be called
14813before enabling the GPE.  Also, this interface will automatically disable
14814the GPE if it is currently enabled.
148153) AcpiEnableGpe no longer supports a GPE type flag.
14816
14817Specific drivers that must be changed:
148181) EC driver:
14819    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
14820AeGpeHandler, NULL);
14821    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
14822    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
14823
148242) Button Drivers (Power, Lid, Sleep):
14825Run _PRW method under parent device
14826If _PRW exists: /* This is a control-method button */
14827    Extract GPE number and possibly GpeDevice
14828    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
14829    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
14830
14831For all other devices that have _PRWs, we automatically set the GPE type
14832to
14833ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
14834This
14835must be done on a selective basis, usually requiring some kind of user
14836app
14837to allow the user to pick the wake devices.
14838
14839
14840Code and Data Size: Current and previous core subsystem library sizes are
14841shown below.  These are the code and data sizes for the acpica.lib
14842produced
14843by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14844any ACPI driver or OSPM code.  The debug version of the code includes the
14845debug output trace mechanism and has a much larger code and data size.
14846Note
14847that these values will vary depending on the efficiency of the compiler
14848and
14849the compiler options used during generation.
14850
14851  Previous Release:
14852    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
14853    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
14854  Current Release:
14855
14856    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14857    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
14858
14859
14860
14861----------------------------------------
1486202 April 2004.  Summary of changes for version 20040402:
14863
148641) ACPI CA Core Subsystem:
14865
14866Fixed an interpreter problem where an indirect store through an ArgX
14867parameter was incorrectly applying the "implicit conversion rules" during
14868the store.  From the ACPI specification: "If the target is a method local
14869or
14870argument (LocalX or ArgX), no conversion is performed and the result is
14871stored directly to the target".  The new behavior is to disable implicit
14872conversion during ALL stores to an ArgX.
14873
14874Changed the behavior of the _PRW method scan to ignore any and all errors
14875returned by a given _PRW.  This prevents the scan from aborting from the
14876failure of any single _PRW.
14877
14878Moved the runtime configuration parameters from the global init procedure
14879to
14880static variables in acglobal.h.  This will allow the host to override the
14881default values easily.
14882
14883Code and Data Size: Current and previous core subsystem library sizes are
14884shown below.  These are the code and data sizes for the acpica.lib
14885produced
14886by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14887any ACPI driver or OSPM code.  The debug version of the code includes the
14888debug output trace mechanism and has a much larger code and data size.
14889Note
14890that these values will vary depending on the efficiency of the compiler
14891and
14892the compiler options used during generation.
14893
14894  Previous Release:
14895    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
14896    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
14897  Current Release:
14898    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
14899    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
14900
14901
149022) iASL Compiler/Disassembler:
14903
14904iASL now fully disassembles SSDTs.  However, External() statements are
14905not
14906generated automatically for unresolved symbols at this time.  This is a
14907planned feature for future implementation.
14908
14909Fixed a scoping problem in the disassembler that occurs when the type of
14910the
14911target of a Scope() operator is overridden.  This problem caused an
14912incorrectly nested internal namespace to be constructed.
14913
14914Any warnings or errors that are emitted during disassembly are now
14915commented
14916out automatically so that the resulting file can be recompiled without
14917any
14918hand editing.
14919
14920----------------------------------------
1492126 March 2004.  Summary of changes for version 20040326:
14922
149231) ACPI CA Core Subsystem:
14924
14925Implemented support for "wake" GPEs via interaction between GPEs and the
14926_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
14927identified as a WAKE GPE and by default will no longer be enabled at
14928runtime.  Previously, we were blindly enabling all GPEs with a
14929corresponding
14930_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
14931We
14932believe this has been the cause of thousands of "spurious" GPEs on some
14933systems.
14934
14935This new GPE behavior is can be reverted to the original behavior (enable
14936ALL GPEs at runtime) via a runtime flag.
14937
14938Fixed a problem where aliased control methods could not access objects
14939properly.  The proper scope within the namespace was not initialized
14940(transferred to the target of the aliased method) before executing the
14941target method.
14942
14943Fixed a potential race condition on internal object deletion on the
14944return
14945object in AcpiEvaluateObject.
14946
14947Integrated a fix for resource descriptors where both _MEM and _MTP were
14948being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
14949wide, 0x0F instead of 0x03.)
14950
14951Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
14952preventing
14953a
14954fault in some cases.
14955
14956Updated Notify() values for debug statements in evmisc.c
14957
14958Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
14959
14960Code and Data Size: Current and previous core subsystem library sizes are
14961shown below.  These are the code and data sizes for the acpica.lib
14962produced
14963by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14964any ACPI driver or OSPM code.  The debug version of the code includes the
14965debug output trace mechanism and has a much larger code and data size.
14966Note
14967that these values will vary depending on the efficiency of the compiler
14968and
14969the compiler options used during generation.
14970
14971  Previous Release:
14972
14973    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
14974    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
14975  Current Release:
14976    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
14977    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
14978
14979----------------------------------------
1498011 March 2004.  Summary of changes for version 20040311:
14981
149821) ACPI CA Core Subsystem:
14983
14984Fixed a problem where errors occurring during the parse phase of control
14985method execution did not abort cleanly.  For example, objects created and
14986installed in the namespace were not deleted.  This caused all subsequent
14987invocations of the method to return the AE_ALREADY_EXISTS exception.
14988
14989Implemented a mechanism to force a control method to "Serialized"
14990execution
14991if the method attempts to create namespace objects. (The root of the
14992AE_ALREADY_EXISTS problem.)
14993
14994Implemented support for the predefined _OSI "internal" control method.
14995Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
14996and
14997"Windows 2001.1", and can be easily upgraded for new strings as
14998necessary.
14999This feature will allow "other" operating systems to execute the fully
15000tested, "Windows" code path through the ASL code
15001
15002Global Lock Support:  Now allows multiple acquires and releases with any
15003internal thread.  Removed concept of "owning thread" for this special
15004mutex.
15005
15006Fixed two functions that were inappropriately declaring large objects on
15007the
15008CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
15009during
15010method execution considerably.
15011
15012Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
15013S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
15014
15015Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
15016defined on the machine.
15017
15018Implemented two runtime options:  One to force all control method
15019execution
15020to "Serialized" to mimic Windows behavior, another to disable _OSI
15021support
15022if it causes problems on a given machine.
15023
15024Code and Data Size: Current and previous core subsystem library sizes are
15025shown below.  These are the code and data sizes for the acpica.lib
15026produced
15027by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15028any ACPI driver or OSPM code.  The debug version of the code includes the
15029debug output trace mechanism and has a much larger code and data size.
15030Note
15031that these values will vary depending on the efficiency of the compiler
15032and
15033the compiler options used during generation.
15034
15035  Previous Release:
15036    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
15037    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
15038  Current Release:
15039    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
15040    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
15041
150422) iASL Compiler/Disassembler:
15043
15044Fixed an array size problem for FreeBSD that would cause the compiler to
15045fault.
15046
15047----------------------------------------
1504820 February 2004.  Summary of changes for version 20040220:
15049
15050
150511) ACPI CA Core Subsystem:
15052
15053Implemented execution of _SxD methods for Device objects in the
15054GetObjectInfo interface.
15055
15056Fixed calls to _SST method to pass the correct arguments.
15057
15058Added a call to _SST on wake to restore to "working" state.
15059
15060Check for End-Of-Buffer failure case in the WalkResources interface.
15061
15062Integrated fix for 64-bit alignment issue in acglobal.h by moving two
15063structures to the beginning of the file.
15064
15065After wake, clear GPE status register(s) before enabling GPEs.
15066
15067After wake, clear/enable power button.  (Perhaps we should clear/enable
15068all
15069fixed events upon wake.)
15070
15071Fixed a couple of possible memory leaks in the Namespace manager.
15072
15073Integrated latest acnetbsd.h file.
15074
15075----------------------------------------
1507611 February 2004.  Summary of changes for version 20040211:
15077
15078
150791) ACPI CA Core Subsystem:
15080
15081Completed investigation and implementation of the call-by-reference
15082mechanism for control method arguments.
15083
15084Fixed a problem where a store of an object into an indexed package could
15085fail if the store occurs within a different method than the method that
15086created the package.
15087
15088Fixed a problem where the ToDecimal operator could return incorrect
15089results.
15090
15091Fixed a problem where the CopyObject operator could fail on some of the
15092more
15093obscure objects (e.g., Reference objects.)
15094
15095Improved the output of the Debug object to display buffer, package, and
15096index objects.
15097
15098Fixed a problem where constructs of the form "RefOf (ArgX)" did not
15099return
15100the expected result.
15101
15102Added permanent ACPI_REPORT_ERROR macros for all instances of the
15103ACPI_AML_INTERNAL exception.
15104
15105Integrated latest version of acfreebsd.h
15106
15107----------------------------------------
1510816 January 2004.  Summary of changes for version 20040116:
15109
15110The purpose of this release is primarily to update the copyright years in
15111each module, thus causing a huge number of diffs.  There are a few small
15112functional changes, however.
15113
151141) ACPI CA Core Subsystem:
15115
15116Improved error messages when there is a problem finding one or more of
15117the
15118required base ACPI tables
15119
15120Reintroduced the definition of APIC_HEADER in actbl.h
15121
15122Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
15123
15124Removed extraneous reference to NewObj in dsmthdat.c
15125
151262) iASL compiler
15127
15128Fixed a problem introduced in December that disabled the correct
15129disassembly
15130of Resource Templates
15131
15132
15133----------------------------------------
1513403 December 2003.  Summary of changes for version 20031203:
15135
151361) ACPI CA Core Subsystem:
15137
15138Changed the initialization of Operation Regions during subsystem
15139init to perform two entire walks of the ACPI namespace; The first
15140to initialize the regions themselves, the second to execute the
15141_REG methods.  This fixed some interdependencies across _REG
15142methods found on some machines.
15143
15144Fixed a problem where a Store(Local0, Local1) could simply update
15145the object reference count, and not create a new copy of the
15146object if the Local1 is uninitialized.
15147
15148Implemented support for the _SST reserved method during sleep
15149transitions.
15150
15151Implemented support to clear the SLP_TYP and SLP_EN bits when
15152waking up, this is apparently required by some machines.
15153
15154When sleeping, clear the wake status only if SleepState is not S5.
15155
15156Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
15157pointer arithmetic advanced a string pointer too far.
15158
15159Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
15160could be returned if the requested table has not been loaded.
15161
15162Within the support for IRQ resources, restructured the handling of
15163the active and edge/level bits.
15164
15165Fixed a few problems in AcpiPsxExecute() where memory could be
15166leaked under certain error conditions.
15167
15168Improved error messages for the cases where the ACPI mode could
15169not be entered.
15170
15171Code and Data Size: Current and previous core subsystem library
15172sizes are shown below.  These are the code and data sizes for the
15173acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15174these values do not include any ACPI driver or OSPM code.  The
15175debug version of the code includes the debug output trace
15176mechanism and has a much larger code and data size.  Note that
15177these values will vary depending on the efficiency of the compiler
15178and the compiler options used during generation.
15179
15180  Previous Release (20031029):
15181    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
15182    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
15183  Current Release:
15184    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
15185    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
15186
151872) iASL Compiler/Disassembler:
15188
15189Implemented a fix for the iASL disassembler where a bad index was
15190generated.  This was most noticeable on 64-bit platforms
15191
15192
15193----------------------------------------
1519429 October 2003.  Summary of changes for version 20031029:
15195
151961) ACPI CA Core Subsystem:
15197
15198
15199Fixed a problem where a level-triggered GPE with an associated
15200_Lxx control method was incorrectly cleared twice.
15201
15202Fixed a problem with the Field support code where an access can
15203occur beyond the end-of-region if the field is non-aligned but
15204extends to the very end of the parent region (resulted in an
15205AE_AML_REGION_LIMIT exception.)
15206
15207Fixed a problem with ACPI Fixed Events where an RT Clock handler
15208would not get invoked on an RTC event.  The RTC event bitmasks for
15209the PM1 registers were not being initialized properly.
15210
15211Implemented support for executing _STA and _INI methods for
15212Processor objects.  Although this is currently not part of the
15213ACPI specification, there is existing ASL code that depends on the
15214init-time execution of these methods.
15215
15216Implemented and deployed a GetDescriptorName function to decode
15217the various types of internal descriptors.  Guards against null
15218descriptors during debug output also.
15219
15220Implemented and deployed a GetNodeName function to extract the 4-
15221character namespace node name.  This function simplifies the debug
15222and error output, as well as guarding against null pointers during
15223output.
15224
15225Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
15226simplify the debug and error output of 64-bit integers.  This
15227macro replaces the HIDWORD and LODWORD macros for dumping these
15228integers.
15229
15230Updated the implementation of the Stall() operator to only call
15231AcpiOsStall(), and also return an error if the operand is larger
15232than 255.  This preserves the required behavior of not
15233relinquishing the processor, as would happen if AcpiOsSleep() was
15234called for "long stalls".
15235
15236Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
15237initialized are now treated as NOOPs.
15238
15239Cleaned up a handful of warnings during 64-bit generation.
15240
15241Fixed a reported error where and incorrect GPE number was passed
15242to the GPE dispatch handler.  This value is only used for error
15243output, however.  Used this opportunity to clean up and streamline
15244the GPE dispatch code.
15245
15246Code and Data Size: Current and previous core subsystem library
15247sizes are shown below.  These are the code and data sizes for the
15248acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15249these values do not include any ACPI driver or OSPM code.  The
15250
15251debug version of the code includes the debug output trace
15252mechanism and has a much larger code and data size.  Note that
15253these values will vary depending on the efficiency of the compiler
15254and the compiler options used during generation.
15255
15256  Previous Release (20031002):
15257    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
15258    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
15259  Current Release:
15260    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
15261    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
15262
15263
152642) iASL Compiler/Disassembler:
15265
15266Updated the iASL compiler to return an error if the operand to the
15267Stall() operator is larger than 255.
15268
15269
15270----------------------------------------
1527102 October 2003.  Summary of changes for version 20031002:
15272
15273
152741) ACPI CA Core Subsystem:
15275
15276Fixed a problem with Index Fields where the index was not
15277incremented for fields that require multiple writes to the
15278index/data registers (Fields that are wider than the data
15279register.)
15280
15281Fixed a problem with all Field objects where a write could go
15282beyond the end-of-field if the field was larger than the access
15283granularity and therefore required multiple writes to complete the
15284request.  An extra write beyond the end of the field could happen
15285inadvertently.
15286
15287Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
15288would incorrectly be returned if the width of the Data Register
15289was larger than the specified field access width.
15290
15291Completed fixes for LoadTable() and Unload() and verified their
15292operation.  Implemented full support for the "DdbHandle" object
15293throughout the ACPI CA subsystem.
15294
15295Implemented full support for the MADT and ECDT tables in the ACPI
15296CA header files.  Even though these tables are not directly
15297consumed by ACPI CA, the header definitions are useful for ACPI
15298device drivers.
15299
15300Integrated resource descriptor fixes posted to the Linux ACPI
15301list.  This included checks for minimum descriptor length, and
15302support for trailing NULL strings within descriptors that have
15303optional string elements.
15304
15305Code and Data Size: Current and previous core subsystem library
15306sizes are shown below.  These are the code and data sizes for the
15307acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15308these values do not include any ACPI driver or OSPM code.  The
15309debug version of the code includes the debug output trace
15310mechanism and has a much larger code and data size.  Note that
15311these values will vary depending on the efficiency of the compiler
15312and the compiler options used during generation.
15313
15314  Previous Release (20030918):
15315    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
15316    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
15317  Current Release:
15318    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
15319    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
15320
15321
153222) iASL Compiler:
15323
15324Implemented detection of non-ASCII characters within the input
15325source ASL file.  This catches attempts to compile binary (AML)
15326files early in the compile, with an informative error message.
15327
15328Fixed a problem where the disassembler would fault if the output
15329filename could not be generated or if the output file could not be
15330opened.
15331
15332----------------------------------------
1533318 September 2003.  Summary of changes for version 20030918:
15334
15335
153361) ACPI CA Core Subsystem:
15337
15338Found and fixed a longstanding problem with the late execution of
15339the various deferred AML opcodes (such as Operation Regions,
15340Buffer Fields, Buffers, and Packages).  If the name string
15341specified for the name of the new object placed the object in a
15342scope other than the current scope, the initialization/execution
15343of the opcode failed.  The solution to this problem was to
15344implement a mechanism where the late execution of such opcodes
15345does not attempt to lookup/create the name a second time in an
15346incorrect scope.  This fixes the "region size computed
15347incorrectly" problem.
15348
15349Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
15350Global Lock AE_BAD_PARAMETER error.
15351
15352Fixed several 64-bit issues with prototypes, casting and data
15353types.
15354
15355Removed duplicate prototype from acdisasm.h
15356
15357Fixed an issue involving EC Operation Region Detach (Shaohua Li)
15358
15359Code and Data Size: Current and previous core subsystem library
15360sizes are shown below.  These are the code and data sizes for the
15361acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15362these values do not include any ACPI driver or OSPM code.  The
15363debug version of the code includes the debug output trace
15364mechanism and has a much larger code and data size.  Note that
15365these values will vary depending on the efficiency of the compiler
15366and the compiler options used during generation.
15367
15368  Previous Release:
15369
15370    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
15371    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
15372  Current Release:
15373    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
15374    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
15375
15376
153772) Linux:
15378
15379Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
15380correct sleep time in seconds.
15381
15382----------------------------------------
1538314 July 2003.  Summary of changes for version 20030619:
15384
153851) ACPI CA Core Subsystem:
15386
15387Parse SSDTs in order discovered, as opposed to reverse order
15388(Hrvoje Habjanic)
15389
15390Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
15391Klausner,
15392   Nate Lawson)
15393
15394
153952) Linux:
15396
15397Dynamically allocate SDT list (suggested by Andi Kleen)
15398
15399proc function return value cleanups (Andi Kleen)
15400
15401Correctly handle NMI watchdog during long stalls (Andrew Morton)
15402
15403Make it so acpismp=force works (reported by Andrew Morton)
15404
15405
15406----------------------------------------
1540719 June 2003.  Summary of changes for version 20030619:
15408
154091) ACPI CA Core Subsystem:
15410
15411Fix To/FromBCD, eliminating the need for an arch-specific #define.
15412
15413Do not acquire a semaphore in the S5 shutdown path.
15414
15415Fix ex_digits_needed for 0. (Takayoshi Kochi)
15416
15417Fix sleep/stall code reversal. (Andi Kleen)
15418
15419Revert a change having to do with control method calling
15420semantics.
15421
154222) Linux:
15423
15424acpiphp update (Takayoshi Kochi)
15425
15426Export acpi_disabled for sonypi (Stelian Pop)
15427
15428Mention acpismp=force in config help
15429
15430Re-add acpitable.c and acpismp=force. This improves backwards
15431
15432compatibility and also cleans up the code to a significant degree.
15433
15434Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
15435
15436----------------------------------------
1543722 May 2003.  Summary of changes for version 20030522:
15438
154391) ACPI CA Core Subsystem:
15440
15441Found and fixed a reported problem where an AE_NOT_FOUND error
15442occurred occasionally during _BST evaluation.  This turned out to
15443be an Owner ID allocation issue where a called method did not get
15444a new ID assigned to it.  Eventually, (after 64k calls), the Owner
15445ID UINT16 would wraparound so that the ID would be the same as the
15446caller's and the called method would delete the caller's
15447namespace.
15448
15449Implemented extended error reporting for control methods that are
15450aborted due to a run-time exception.  Output includes the exact
15451AML instruction that caused the method abort, a dump of the method
15452locals and arguments at the time of the abort, and a trace of all
15453nested control method calls.
15454
15455Modified the interpreter to allow the creation of buffers of zero
15456length from the AML code. Implemented new code to ensure that no
15457attempt is made to actually allocate a memory buffer (of length
15458zero) - instead, a simple buffer object with a NULL buffer pointer
15459and length zero is created.  A warning is no longer issued when
15460the AML attempts to create a zero-length buffer.
15461
15462Implemented a workaround for the "leading asterisk issue" in
15463_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
15464asterisk is automatically removed if present in any HID, UID, or
15465CID strings.  The iASL compiler will still flag this asterisk as
15466an error, however.
15467
15468Implemented full support for _CID methods that return a package of
15469multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
15470now additionally returns a device _CID list if present.  This
15471required a change to the external interface in order to pass an
15472ACPI_BUFFER object as a parameter since the _CID list is of
15473variable length.
15474
15475Fixed a problem with the new AE_SAME_HANDLER exception where
15476handler initialization code did not know about this exception.
15477
15478Code and Data Size: Current and previous core subsystem library
15479sizes are shown below.  These are the code and data sizes for the
15480acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15481these values do not include any ACPI driver or OSPM code.  The
15482debug version of the code includes the debug output trace
15483mechanism and has a much larger code and data size.  Note that
15484these values will vary depending on the efficiency of the compiler
15485and the compiler options used during generation.
15486
15487  Previous Release (20030509):
15488    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
15489    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
15490  Current Release:
15491    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
15492    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
15493
15494
154952) Linux:
15496
15497Fixed a bug in which we would reinitialize the ACPI interrupt
15498after it was already working, thus disabling all ACPI and the IRQs
15499for any other device sharing the interrupt. (Thanks to Stian
15500Jordet)
15501
15502Toshiba driver update (John Belmonte)
15503
15504Return only 0 or 1 for our interrupt handler status (Andrew
15505Morton)
15506
15507
155083) iASL Compiler:
15509
15510Fixed a reported problem where multiple (nested) ElseIf()
15511statements were not handled correctly by the compiler, resulting
15512in incorrect warnings and incorrect AML code.  This was a problem
15513in both the ASL parser and the code generator.
15514
15515
155164) Documentation:
15517
15518Added changes to existing interfaces, new exception codes, and new
15519text concerning reference count object management versus garbage
15520collection.
15521
15522----------------------------------------
1552309 May 2003.  Summary of changes for version 20030509.
15524
15525
155261) ACPI CA Core Subsystem:
15527
15528Changed the subsystem initialization sequence to hold off
15529installation of address space handlers until the hardware has been
15530initialized and the system has entered ACPI mode.  This is because
15531the installation of space handlers can cause _REG methods to be
15532run.  Previously, the _REG methods could potentially be run before
15533ACPI mode was enabled.
15534
15535Fixed some memory leak issues related to address space handler and
15536notify handler installation.  There were some problems with the
15537reference count mechanism caused by the fact that the handler
15538objects are shared across several namespace objects.
15539
15540Fixed a reported problem where reference counts within the
15541namespace were not properly updated when named objects created by
15542method execution were deleted.
15543
15544Fixed a reported problem where multiple SSDTs caused a deletion
15545issue during subsystem termination.  Restructured the table data
15546structures to simplify the linked lists and the related code.
15547
15548Fixed a problem where the table ID associated with secondary
15549tables (SSDTs) was not being propagated into the namespace objects
15550created by those tables.  This would only present a problem for
15551tables that are unloaded at run-time, however.
15552
15553Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
15554type as the length parameter (instead of UINT32).
15555
15556Solved a long-standing problem where an ALREADY_EXISTS error
15557appears on various systems.  This problem could happen when there
15558are multiple PCI_Config operation regions under a single PCI root
15559bus.  This doesn't happen very frequently, but there are some
15560systems that do this in the ASL.
15561
15562Fixed a reported problem where the internal DeleteNode function
15563was incorrectly handling the case where a namespace node was the
15564first in the parent's child list, and had additional peers (not
15565the only child, but first in the list of children.)
15566
15567Code and Data Size: Current core subsystem library sizes are shown
15568below.  These are the code and data sizes for the acpica.lib
15569produced by the Microsoft Visual C++ 6.0 compiler, and these
15570values do not include any ACPI driver or OSPM code.  The debug
15571version of the code includes the debug output trace mechanism and
15572has a much larger code and data size.  Note that these values will
15573vary depending on the efficiency of the compiler and the compiler
15574options used during generation.
15575
15576  Previous Release
15577    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
15578    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
15579  Current Release:
15580    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
15581    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
15582
15583
155842) Linux:
15585
15586Allow ":" in OS override string (Ducrot Bruno)
15587
15588Kobject fix (Greg KH)
15589
15590
155913 iASL Compiler/Disassembler:
15592
15593Fixed a problem in the generation of the C source code files (AML
15594is emitted in C source statements for BIOS inclusion) where the
15595Ascii dump that appears within a C comment at the end of each line
15596could cause a compile time error if the AML sequence happens to
15597have an open comment or close comment sequence embedded.
15598
15599
15600----------------------------------------
1560124 April 2003.  Summary of changes for version 20030424.
15602
15603
156041) ACPI CA Core Subsystem:
15605
15606Support for big-endian systems has been implemented.  Most of the
15607support has been invisibly added behind big-endian versions of the
15608ACPI_MOVE_* macros.
15609
15610Fixed a problem in AcpiHwDisableGpeBlock() and
15611AcpiHwClearGpeBlock() where an incorrect offset was passed to the
15612low level hardware write routine.  The offset parameter was
15613actually eliminated from the low level read/write routines because
15614they had become obsolete.
15615
15616Fixed a problem where a handler object was deleted twice during
15617the removal of a fixed event handler.
15618
15619
156202) Linux:
15621
15622A fix for SMP systems with link devices was contributed by
15623
15624Compaq's Dan Zink.
15625
15626(2.5) Return whether we handled the interrupt in our IRQ handler.
15627(Linux ISRs no longer return void, so we can propagate the handler
15628return value from the ACPI CA core back to the OS.)
15629
15630
15631
156323) Documentation:
15633
15634The ACPI CA Programmer Reference has been updated to reflect new
15635interfaces and changes to existing interfaces.
15636
15637----------------------------------------
1563828 March 2003.  Summary of changes for version 20030328.
15639
156401) ACPI CA Core Subsystem:
15641
15642The GPE Block Device support has been completed.  New interfaces
15643are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
15644interfaces (enable, disable, clear, getstatus) have been split
15645into separate interfaces for Fixed Events and General Purpose
15646Events (GPEs) in order to support GPE Block Devices properly.
15647
15648Fixed a problem where the error message "Failed to acquire
15649semaphore" would appear during operations on the embedded
15650controller (EC).
15651
15652Code and Data Size: Current core subsystem library sizes are shown
15653below.  These are the code and data sizes for the acpica.lib
15654produced by the Microsoft Visual C++ 6.0 compiler, and these
15655values do not include any ACPI driver or OSPM code.  The debug
15656version of the code includes the debug output trace mechanism and
15657has a much larger code and data size.  Note that these values will
15658vary depending on the efficiency of the compiler and the compiler
15659options used during generation.
15660
15661  Previous Release
15662    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
15663    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
15664  Current Release:
15665    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
15666    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
15667
15668
15669----------------------------------------
1567028 February 2003.  Summary of changes for version 20030228.
15671
15672
156731) ACPI CA Core Subsystem:
15674
15675The GPE handling and dispatch code has been completely overhauled
15676in preparation for support of GPE Block Devices (ID ACPI0006).
15677This affects internal data structures and code only; there should
15678be no differences visible externally.  One new file has been
15679added, evgpeblk.c
15680
15681The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
15682fields that are used to determine the GPE block lengths.  The
15683REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
15684structures are ignored.  This is per the ACPI specification but it
15685isn't very clear.  The full 256 Block 0/1 GPEs are now supported
15686(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
15687
15688In the SCI interrupt handler, removed the read of the PM1_CONTROL
15689register to look at the SCI_EN bit.  On some machines, this read
15690causes an SMI event and greatly slows down SCI events.  (This may
15691in fact be the cause of slow battery status response on some
15692systems.)
15693
15694Fixed a problem where a store of a NULL string to a package object
15695could cause the premature deletion of the object.  This was seen
15696during execution of the battery _BIF method on some systems,
15697resulting in no battery data being returned.
15698
15699Added AcpiWalkResources interface to simplify parsing of resource
15700lists.
15701
15702Code and Data Size: Current core subsystem library sizes are shown
15703below.  These are the code and data sizes for the acpica.lib
15704produced by the Microsoft Visual C++ 6.0 compiler, and these
15705values do not include any ACPI driver or OSPM code.  The debug
15706version of the code includes the debug output trace mechanism and
15707has a much larger code and data size.  Note that these values will
15708vary depending on the efficiency of the compiler and the compiler
15709options used during generation.
15710
15711  Previous Release
15712    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15713    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15714  Current Release:
15715    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
15716    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
15717
15718
157192) Linux
15720
15721S3 fixes (Ole Rohne)
15722
15723Update ACPI PHP driver with to use new acpi_walk_resource API
15724(Bjorn Helgaas)
15725
15726Add S4BIOS support (Pavel Machek)
15727
15728Map in entire table before performing checksum (John Stultz)
15729
15730Expand the mem= cmdline to allow the specification of reserved and
15731ACPI DATA blocks (Pavel Machek)
15732
15733Never use ACPI on VISWS
15734
15735Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
15736
15737Revert a change that allowed P_BLK lengths to be 4 or 5. This is
15738causing us to think that some systems support C2 when they really
15739don't.
15740
15741Do not count processor objects for non-present CPUs (Thanks to
15742Dominik Brodowski)
15743
15744
157453) iASL Compiler:
15746
15747Fixed a problem where ASL include files could not be found and
15748opened.
15749
15750Added support for the _PDC reserved name.
15751
15752
15753----------------------------------------
1575422 January 2003.  Summary of changes for version 20030122.
15755
15756
157571) ACPI CA Core Subsystem:
15758
15759Added a check for constructs of the form:  Store (Local0, Local0)
15760where Local0 is not initialized.  Apparently, some BIOS
15761programmers believe that this is a NOOP.  Since this store doesn't
15762do anything anyway, the new prototype behavior will ignore this
15763error.  This is a case where we can relax the strict checking in
15764the interpreter in the name of compatibility.
15765
15766
157672) Linux
15768
15769The AcpiSrc Source Conversion Utility has been released with the
15770Linux package for the first time.  This is the utility that is
15771used to convert the ACPI CA base source code to the Linux version.
15772
15773(Both) Handle P_BLK lengths shorter than 6 more gracefully
15774
15775(Both) Move more headers to include/acpi, and delete an unused
15776header.
15777
15778(Both) Move drivers/acpi/include directory to include/acpi
15779
15780(Both) Boot functions don't use cmdline, so don't pass it around
15781
15782(Both) Remove include of unused header (Adrian Bunk)
15783
15784(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
15785the
15786former now also includes the latter, acpiphp.h only needs the one,
15787now.
15788
15789(2.5) Make it possible to select method of bios restoring after S3
15790resume. [=> no more ugly ifdefs] (Pavel Machek)
15791
15792(2.5) Make proc write interfaces work (Pavel Machek)
15793
15794(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
15795
15796(2.5) Break out ACPI Perf code into its own module, under cpufreq
15797(Dominik Brodowski)
15798
15799(2.4) S4BIOS support (Ducrot Bruno)
15800
15801(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
15802Visinoni)
15803
15804
158053) iASL Compiler:
15806
15807Added support to disassemble SSDT and PSDTs.
15808
15809Implemented support to obtain SSDTs from the Windows registry if
15810available.
15811
15812
15813----------------------------------------
1581409 January 2003.  Summary of changes for version 20030109.
15815
158161) ACPI CA Core Subsystem:
15817
15818Changed the behavior of the internal Buffer-to-String conversion
15819function.  The current ACPI specification states that the contents
15820of the buffer are "converted to a string of two-character
15821hexadecimal numbers, each separated by a space".  Unfortunately,
15822this definition is not backwards compatible with existing ACPI 1.0
15823implementations (although the behavior was not defined in the ACPI
158241.0 specification).  The new behavior simply copies data from the
15825buffer to the string until a null character is found or the end of
15826the buffer is reached.  The new String object is always null
15827terminated.  This problem was seen during the generation of _BIF
15828battery data where incorrect strings were returned for battery
15829type, etc.  This will also require an errata to the ACPI
15830specification.
15831
15832Renamed all instances of NATIVE_UINT and NATIVE_INT to
15833ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
15834
15835Copyright in all module headers (both Linux and non-Linux) has be
15836updated to 2003.
15837
15838Code and Data Size: Current core subsystem library sizes are shown
15839below.  These are the code and data sizes for the acpica.lib
15840produced by the Microsoft Visual C++ 6.0 compiler, and these
15841values do not include any ACPI driver or OSPM code.  The debug
15842version of the code includes the debug output trace mechanism and
15843has a much larger code and data size.  Note that these values will
15844vary depending on the efficiency of the compiler and the compiler
15845options used during generation.
15846
15847  Previous Release
15848    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15849    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15850  Current Release:
15851    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15852    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15853
15854
158552) Linux
15856
15857Fixed an oops on module insertion/removal (Matthew Tippett)
15858
15859(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
15860
15861(2.5) Replace pr_debug (Randy Dunlap)
15862
15863(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
15864
15865(Both) Eliminate spawning of thread from timer callback, in favor
15866of schedule_work()
15867
15868(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
15869
15870(Both) Added define for Fixed Function HW region (Matthew Wilcox)
15871
15872(Both) Add missing statics to button.c (Pavel Machek)
15873
15874Several changes have been made to the source code translation
15875utility that generates the Linux Code in order to make the code
15876more "Linux-like":
15877
15878All typedefs on structs and unions have been removed in keeping
15879with the Linux coding style.
15880
15881Removed the non-Linux SourceSafe module revision number from each
15882module header.
15883
15884Completed major overhaul of symbols to be lowercase for linux.
15885Doubled the number of symbols that are lowercase.
15886
15887Fixed a problem where identifiers within procedure headers and
15888within quotes were not fully lower cased (they were left with a
15889starting capital.)
15890
15891Some C macros whose only purpose is to allow the generation of 16-
15892bit code are now completely removed in the Linux code, increasing
15893readability and maintainability.
15894
15895----------------------------------------
15896
1589712 December 2002.  Summary of changes for version 20021212.
15898
15899
159001) ACPI CA Core Subsystem:
15901
15902Fixed a problem where the creation of a zero-length AML Buffer
15903would cause a fault.
15904
15905Fixed a problem where a Buffer object that pointed to a static AML
15906buffer (in an ACPI table) could inadvertently be deleted, causing
15907memory corruption.
15908
15909Fixed a problem where a user buffer (passed in to the external
15910ACPI CA interfaces) could be overwritten if the buffer was too
15911small to complete the operation, causing memory corruption.
15912
15913Fixed a problem in the Buffer-to-String conversion code where a
15914string of length one was always returned, regardless of the size
15915of the input Buffer object.
15916
15917Removed the NATIVE_CHAR data type across the entire source due to
15918lack of need and lack of consistent use.
15919
15920Code and Data Size: Current core subsystem library sizes are shown
15921below.  These are the code and data sizes for the acpica.lib
15922produced by the Microsoft Visual C++ 6.0 compiler, and these
15923values do not include any ACPI driver or OSPM code.  The debug
15924version of the code includes the debug output trace mechanism and
15925has a much larger code and data size.  Note that these values will
15926vary depending on the efficiency of the compiler and the compiler
15927options used during generation.
15928
15929  Previous Release
15930    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
15931    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
15932  Current Release:
15933    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15934    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15935
15936
15937----------------------------------------
1593805 December 2002.  Summary of changes for version 20021205.
15939
159401) ACPI CA Core Subsystem:
15941
15942Fixed a problem where a store to a String or Buffer object could
15943cause corruption of the DSDT if the object type being stored was
15944the same as the target object type and the length of the object
15945being stored was equal to or smaller than the original (existing)
15946target object.  This was seen to cause corruption of battery _BIF
15947buffers if the _BIF method modified the buffer on the fly.
15948
15949Fixed a problem where an internal error was generated if a control
15950method invocation was used in an OperationRegion, Buffer, or
15951Package declaration.  This was caused by the deferred parsing of
15952the control method and thus the deferred creation of the internal
15953method object.  The solution to this problem was to create the
15954internal method object at the moment the method is encountered in
15955the first pass - so that subsequent references to the method will
15956able to obtain the required parameter count and thus properly
15957parse the method invocation.  This problem presented itself as an
15958AE_AML_INTERNAL during the pass 1 parse phase during table load.
15959
15960Fixed a problem where the internal String object copy routine did
15961not always allocate sufficient memory for the target String object
15962and caused memory corruption.  This problem was seen to cause
15963"Allocation already present in list!" errors as memory allocation
15964became corrupted.
15965
15966Implemented a new function for the evaluation of namespace objects
15967that allows the specification of the allowable return object
15968types.  This simplifies a lot of code that checks for a return
15969object of one or more specific objects returned from the
15970evaluation (such as _STA, etc.)  This may become and external
15971function if it would be useful to ACPI-related drivers.
15972
15973Completed another round of prefixing #defines with "ACPI_" for
15974clarity.
15975
15976Completed additional code restructuring to allow more modular
15977linking for iASL compiler and AcpiExec.  Several files were split
15978creating new files.  New files:  nsparse.c dsinit.c evgpe.c
15979
15980Implemented an abort mechanism to terminate an executing control
15981method via the AML debugger.  This feature is useful for debugging
15982control methods that depend (wait) for specific hardware
15983responses.
15984
15985Code and Data Size: Current core subsystem library sizes are shown
15986below.  These are the code and data sizes for the acpica.lib
15987produced by the Microsoft Visual C++ 6.0 compiler, and these
15988values do not include any ACPI driver or OSPM code.  The debug
15989version of the code includes the debug output trace mechanism and
15990has a much larger code and data size.  Note that these values will
15991vary depending on the efficiency of the compiler and the compiler
15992options used during generation.
15993
15994  Previous Release
15995    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15996    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
15997  Current Release:
15998    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
15999    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
16000
16001
160022) iASL Compiler/Disassembler
16003
16004Fixed a compiler code generation problem for "Interrupt" Resource
16005Descriptors.  If specified in the ASL, the optional "Resource
16006Source Index" and "Resource Source" fields were not inserted into
16007the correct location within the AML resource descriptor, creating
16008an invalid descriptor.
16009
16010Fixed a disassembler problem for "Interrupt" resource descriptors.
16011The optional "Resource Source Index" and "Resource Source" fields
16012were ignored.
16013
16014
16015----------------------------------------
1601622 November 2002.  Summary of changes for version 20021122.
16017
16018
160191) ACPI CA Core Subsystem:
16020
16021Fixed a reported problem where an object stored to a Method Local
16022or Arg was not copied to a new object during the store - the
16023object pointer was simply copied to the Local/Arg.  This caused
16024all subsequent operations on the Local/Arg to also affect the
16025original source of the store operation.
16026
16027Fixed a problem where a store operation to a Method Local or Arg
16028was not completed properly if the Local/Arg contained a reference
16029(from RefOf) to a named field.  The general-purpose store-to-
16030namespace-node code is now used so that this case is handled
16031automatically.
16032
16033Fixed a problem where the internal object copy routine would cause
16034a protection fault if the object being copied was a Package and
16035contained either 1) a NULL package element or 2) a nested sub-
16036package.
16037
16038Fixed a problem with the GPE initialization that resulted from an
16039ambiguity in the ACPI specification.  One section of the
16040specification states that both the address and length of the GPE
16041block must be zero if the block is not supported.  Another section
16042implies that only the address need be zero if the block is not
16043supported.  The code has been changed so that both the address and
16044the length must be non-zero to indicate a valid GPE block (i.e.,
16045if either the address or the length is zero, the GPE block is
16046invalid.)
16047
16048Code and Data Size: Current core subsystem library sizes are shown
16049below.  These are the code and data sizes for the acpica.lib
16050produced by the Microsoft Visual C++ 6.0 compiler, and these
16051values do not include any ACPI driver or OSPM code.  The debug
16052version of the code includes the debug output trace mechanism and
16053has a much larger code and data size.  Note that these values will
16054vary depending on the efficiency of the compiler and the compiler
16055options used during generation.
16056
16057  Previous Release
16058    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
16059    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
16060  Current Release:
16061    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16062    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
16063
16064
160652) Linux
16066
16067Cleaned up EC driver. Exported an external EC read/write
16068interface. By going through this, other drivers (most notably
16069sonypi) will be able to serialize access to the EC.
16070
16071
160723) iASL Compiler/Disassembler
16073
16074Implemented support to optionally generate include files for both
16075ASM and C (the -i switch).  This simplifies BIOS development by
16076automatically creating include files that contain external
16077declarations for the symbols that are created within the
16078
16079(optionally generated) ASM and C AML source files.
16080
16081
16082----------------------------------------
1608315 November 2002.  Summary of changes for version 20021115.
16084
160851) ACPI CA Core Subsystem:
16086
16087Fixed a memory leak problem where an error during resolution of
16088
16089method arguments during a method invocation from another method
16090failed to cleanup properly by deleting all successfully resolved
16091argument objects.
16092
16093Fixed a problem where the target of the Index() operator was not
16094correctly constructed if the source object was a package.  This
16095problem has not been detected because the use of a target operand
16096with Index() is very rare.
16097
16098Fixed a problem with the Index() operator where an attempt was
16099made to delete the operand objects twice.
16100
16101Fixed a problem where an attempt was made to delete an operand
16102twice during execution of the CondRefOf() operator if the target
16103did not exist.
16104
16105Implemented the first of perhaps several internal create object
16106functions that create and initialize a specific object type.  This
16107consolidates duplicated code wherever the object is created, thus
16108shrinking the size of the subsystem.
16109
16110Implemented improved debug/error messages for errors that occur
16111during nested method invocations.  All executing method pathnames
16112are displayed (with the error) as the call stack is unwound - thus
16113simplifying debug.
16114
16115Fixed a problem introduced in the 10/02 release that caused
16116premature deletion of a buffer object if a buffer was used as an
16117ASL operand where an integer operand is required (Thus causing an
16118implicit object conversion from Buffer to Integer.)  The change in
16119the 10/02 release was attempting to fix a memory leak (albeit
16120incorrectly.)
16121
16122Code and Data Size: Current core subsystem library sizes are shown
16123below.  These are the code and data sizes for the acpica.lib
16124produced by the Microsoft Visual C++ 6.0 compiler, and these
16125values do not include any ACPI driver or OSPM code.  The debug
16126version of the code includes the debug output trace mechanism and
16127has a much larger code and data size.  Note that these values will
16128vary depending on the efficiency of the compiler and the compiler
16129options used during generation.
16130
16131  Previous Release
16132    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
16133    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
16134  Current Release:
16135    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
16136    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
16137
16138
161392) Linux
16140
16141Changed the implementation of the ACPI semaphores to use down()
16142instead of down_interruptable().  It is important that the
16143execution of ACPI control methods not be interrupted by signals.
16144Methods must run to completion, or the system may be left in an
16145unknown/unstable state.
16146
16147Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
16148(Shawn Starr)
16149
16150
161513) iASL Compiler/Disassembler
16152
16153
16154Changed the default location of output files.  All output files
16155are now placed in the current directory by default instead of in
16156the directory of the source file.  This change may affect some
16157existing makefiles, but it brings the behavior of the compiler in
16158line with other similar tools.  The location of the output files
16159can be overridden with the -p command line switch.
16160
16161
16162----------------------------------------
1616311 November 2002.  Summary of changes for version 20021111.
16164
16165
161660) ACPI Specification 2.0B is released and is now available at:
16167http://www.acpi.info/index.html
16168
16169
161701) ACPI CA Core Subsystem:
16171
16172Implemented support for the ACPI 2.0 SMBus Operation Regions.
16173This includes the early detection and handoff of the request to
16174the SMBus region handler (avoiding all of the complex field
16175support code), and support for the bidirectional return packet
16176from an SMBus write operation.  This paves the way for the
16177development of SMBus drivers in each host operating system.
16178
16179Fixed a problem where the semaphore WAIT_FOREVER constant was
16180defined as 32 bits, but must be 16 bits according to the ACPI
16181specification.  This had the side effect of causing ASL
16182Mutex/Event timeouts even though the ASL code requested a wait
16183forever.  Changed all internal references to the ACPI timeout
16184parameter to 16 bits to prevent future problems.  Changed the name
16185of WAIT_FOREVER to ACPI_WAIT_FOREVER.
16186
16187Code and Data Size: Current core subsystem library sizes are shown
16188below.  These are the code and data sizes for the acpica.lib
16189produced by the Microsoft Visual C++ 6.0 compiler, and these
16190values do not include any ACPI driver or OSPM code.  The debug
16191version of the code includes the debug output trace mechanism and
16192has a much larger code and data size.  Note that these values will
16193vary depending on the efficiency of the compiler and the compiler
16194options used during generation.
16195
16196  Previous Release
16197    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16198    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
16199  Current Release:
16200    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
16201    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
16202
16203
162042) Linux
16205
16206Module loading/unloading fixes (John Cagle)
16207
16208
162093) iASL Compiler/Disassembler
16210
16211Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
16212
16213Implemented support for the disassembly of all SMBus protocol
16214keywords (SMBQuick, SMBWord, etc.)
16215
16216----------------------------------------
1621701 November 2002.  Summary of changes for version 20021101.
16218
16219
162201) ACPI CA Core Subsystem:
16221
16222Fixed a problem where platforms that have a GPE1 block but no GPE0
16223block were not handled correctly.  This resulted in a "GPE
16224overlap" error message.  GPE0 is no longer required.
16225
16226Removed code added in the previous release that inserted nodes
16227into the namespace in alphabetical order.  This caused some side-
16228effects on various machines.  The root cause of the problem is
16229still under investigation since in theory, the internal ordering
16230of the namespace nodes should not matter.
16231
16232
16233Enhanced error reporting for the case where a named object is not
16234found during control method execution.  The full ACPI namepath
16235(name reference) of the object that was not found is displayed in
16236this case.
16237
16238Note: as a result of the overhaul of the namespace object types in
16239the previous release, the namespace nodes for the predefined
16240scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
16241instead of ACPI_TYPE_ANY.  This simplifies the namespace
16242management code but may affect code that walks the namespace tree
16243looking for specific object types.
16244
16245Code and Data Size: Current core subsystem library sizes are shown
16246below.  These are the code and data sizes for the acpica.lib
16247produced by the Microsoft Visual C++ 6.0 compiler, and these
16248values do not include any ACPI driver or OSPM code.  The debug
16249version of the code includes the debug output trace mechanism and
16250has a much larger code and data size.  Note that these values will
16251vary depending on the efficiency of the compiler and the compiler
16252options used during generation.
16253
16254  Previous Release
16255    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
16256    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
16257  Current Release:
16258    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16259    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
16260
16261
162622) Linux
16263
16264Fixed a problem introduced in the previous release where the
16265Processor and Thermal objects were not recognized and installed in
16266/proc.  This was related to the scope type change described above.
16267
16268
162693) iASL Compiler/Disassembler
16270
16271Implemented the -g option to get all of the required ACPI tables
16272from the registry and save them to files (Windows version of the
16273compiler only.)  The required tables are the FADT, FACS, and DSDT.
16274
16275Added ACPI table checksum validation during table disassembly in
16276order to catch corrupted tables.
16277
16278
16279----------------------------------------
1628022 October 2002.  Summary of changes for version 20021022.
16281
162821) ACPI CA Core Subsystem:
16283
16284Implemented a restriction on the Scope operator that the target
16285must already exist in the namespace at the time the operator is
16286encountered (during table load or method execution).  In other
16287words, forward references are not allowed and Scope() cannot
16288create a new object. This changes the previous behavior where the
16289interpreter would create the name if not found.  This new behavior
16290correctly enables the search-to-root algorithm during namespace
16291lookup of the target name.  Because of this upsearch, this fixes
16292the known Compaq _SB_.OKEC problem and makes both the AML
16293interpreter and iASL compiler compatible with other ACPI
16294implementations.
16295
16296Completed a major overhaul of the internal ACPI object types for
16297the ACPI Namespace and the associated operand objects.  Many of
16298these types had become obsolete with the introduction of the two-
16299pass namespace load.  This cleanup simplifies the code and makes
16300the entire namespace load mechanism much clearer and easier to
16301understand.
16302
16303Improved debug output for tracking scope opening/closing to help
16304diagnose scoping issues.  The old scope name as well as the new
16305scope name are displayed.  Also improved error messages for
16306problems with ASL Mutex objects and error messages for GPE
16307problems.
16308
16309Cleaned up the namespace dump code, removed obsolete code.
16310
16311All string output (for all namespace/object dumps) now uses the
16312common ACPI string output procedure which handles escapes properly
16313and does not emit non-printable characters.
16314
16315Fixed some issues with constants in the 64-bit version of the
16316local C library (utclib.c)
16317
16318
163192) Linux
16320
16321EC Driver:  No longer attempts to acquire the Global Lock at
16322interrupt level.
16323
16324
163253) iASL Compiler/Disassembler
16326
16327Implemented ACPI 2.0B grammar change that disallows all Type 1 and
163282 opcodes outside of a control method.  This means that the
16329"executable" operators (versus the "namespace" operators) cannot
16330be used at the table level; they can only be used within a control
16331method.
16332
16333Implemented the restriction on the Scope() operator where the
16334target must already exist in the namespace at the time the
16335operator is encountered (during ASL compilation). In other words,
16336forward references are not allowed and Scope() cannot create a new
16337object.  This makes the iASL compiler compatible with other ACPI
16338implementations and makes the Scope() implementation adhere to the
16339ACPI specification.
16340
16341Fixed a problem where namepath optimization for the Alias operator
16342was optimizing the wrong path (of the two namepaths.)  This caused
16343a "Missing alias link" error message.
16344
16345Fixed a problem where an "unknown reserved name" warning could be
16346incorrectly generated for names like "_SB" when the trailing
16347underscore is not used in the original ASL.
16348
16349Fixed a problem where the reserved name check did not handle
16350NamePaths with multiple NameSegs correctly.  The first nameseg of
16351the NamePath was examined instead of the last NameSeg.
16352
16353
16354----------------------------------------
16355
1635602 October 2002.  Summary of changes for this release.
16357
16358
163591) ACPI CA Core Subsystem version 20021002:
16360
16361Fixed a problem where a store/copy of a string to an existing
16362string did not always set the string length properly in the String
16363object.
16364
16365Fixed a reported problem with the ToString operator where the
16366behavior was identical to the ToHexString operator instead of just
16367simply converting a raw buffer to a string data type.
16368
16369Fixed a problem where CopyObject and the other "explicit"
16370conversion operators were not updating the internal namespace node
16371type as part of the store operation.
16372
16373Fixed a memory leak during implicit source operand conversion
16374where the original object was not deleted if it was converted to a
16375new object of a different type.
16376
16377Enhanced error messages for all problems associated with namespace
16378lookups.  Common procedure generates and prints the lookup name as
16379well as the formatted status.
16380
16381Completed implementation of a new design for the Alias support
16382within the namespace.  The existing design did not handle the case
16383where a new object was assigned to one of the two names due to the
16384use of an explicit conversion operator, resulting in the two names
16385pointing to two different objects.  The new design simply points
16386the Alias name to the original name node - not to the object.
16387This results in a level of indirection that must be handled in the
16388name resolution mechanism.
16389
16390Code and Data Size: Current core subsystem library sizes are shown
16391below.  These are the code and data sizes for the acpica.lib
16392produced by the Microsoft Visual C++ 6.0 compiler, and these
16393values do not include any ACPI driver or OSPM code.  The debug
16394version of the code includes the debug output trace mechanism and
16395has a larger code and data size.  Note that these values will vary
16396depending on the efficiency of the compiler and the compiler
16397options used during generation.
16398
16399  Previous Release
16400    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
16401    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
16402  Current Release:
16403    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
16404    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
16405
16406
164072) Linux
16408
16409Initialize thermal driver's timer before it is used. (Knut
16410Neumann)
16411
16412Allow handling negative celsius values. (Kochi Takayoshi)
16413
16414Fix thermal management and make trip points. R/W (Pavel Machek)
16415
16416Fix /proc/acpi/sleep. (P. Christeas)
16417
16418IA64 fixes. (David Mosberger)
16419
16420Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
16421
16422Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
16423Brodowski)
16424
16425
164263) iASL Compiler/Disassembler
16427
16428Clarified some warning/error messages.
16429
16430
16431----------------------------------------
1643218 September 2002.  Summary of changes for this release.
16433
16434
164351) ACPI CA Core Subsystem version 20020918:
16436
16437Fixed a reported problem with reference chaining (via the Index()
16438and RefOf() operators) in the ObjectType() and SizeOf() operators.
16439The definition of these operators includes the dereferencing of
16440all chained references to return information on the base object.
16441
16442Fixed a problem with stores to indexed package elements - the
16443existing code would not complete the store if an "implicit
16444conversion" was not performed.  In other words, if the existing
16445object (package element) was to be replaced completely, the code
16446didn't handle this case.
16447
16448Relaxed typechecking on the ASL "Scope" operator to allow the
16449target name to refer to an object of type Integer, String, or
16450Buffer, in addition to the scoping object types (Device,
16451predefined Scopes, Processor, PowerResource, and ThermalZone.)
16452This allows existing AML code that has workarounds for a bug in
16453Windows to function properly.  A warning is issued, however.  This
16454affects both the AML interpreter and the iASL compiler. Below is
16455an example of this type of ASL code:
16456
16457      Name(DEB,0x00)
16458      Scope(DEB)
16459      {
16460
16461Fixed some reported problems with 64-bit integer support in the
16462local implementation of C library functions (clib.c)
16463
16464
164652) Linux
16466
16467Use ACPI fix map region instead of IOAPIC region, since it is
16468undefined in non-SMP.
16469
16470Ensure that the SCI has the proper polarity and trigger, even on
16471systems that do not have an interrupt override entry in the MADT.
16472
164732.5 big driver reorganization (Pat Mochel)
16474
16475Use early table mapping code from acpitable.c (Andi Kleen)
16476
16477New blacklist entries (Andi Kleen)
16478
16479Blacklist improvements. Split blacklist code out into a separate
16480file. Move checking the blacklist to very early. Previously, we
16481would use ACPI tables, and then halfway through init, check the
16482blacklist -- too late. Now, it's early enough to completely fall-
16483back to non-ACPI.
16484
16485
164863) iASL Compiler/Disassembler version 20020918:
16487
16488Fixed a problem where the typechecking code didn't know that an
16489alias could point to a method.  In other words, aliases were not
16490being dereferenced during typechecking.
16491
16492
16493----------------------------------------
1649429 August 2002.  Summary of changes for this release.
16495
164961) ACPI CA Core Subsystem Version 20020829:
16497
16498If the target of a Scope() operator already exists, it must be an
16499object type that actually opens a scope -- such as a Device,
16500Method, Scope, etc.  This is a fatal runtime error.  Similar error
16501check has been added to the iASL compiler also.
16502
16503Tightened up the namespace load to disallow multiple names in the
16504same scope.  This previously was allowed if both objects were of
16505the same type.  (i.e., a lookup was the same as entering a new
16506name).
16507
16508
165092) Linux
16510
16511Ensure that the ACPI interrupt has the proper trigger and
16512polarity.
16513
16514local_irq_disable is extraneous. (Matthew Wilcox)
16515
16516Make "acpi=off" actually do what it says, and not use the ACPI
16517interpreter *or* the tables.
16518
16519Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
16520Takayoshi)
16521
16522
165233) iASL Compiler/Disassembler  Version 20020829:
16524
16525Implemented namepath optimization for name declarations.  For
16526example, a declaration like "Method (\_SB_.ABCD)" would get
16527optimized to "Method (ABCD)" if the declaration is within the
16528\_SB_ scope.  This optimization is in addition to the named
16529reference path optimization first released in the previous
16530version. This would seem to complete all possible optimizations
16531for namepaths within the ASL/AML.
16532
16533If the target of a Scope() operator already exists, it must be an
16534object type that actually opens a scope -- such as a Device,
16535Method, Scope, etc.
16536
16537Implemented a check and warning for unreachable code in the same
16538block below a Return() statement.
16539
16540Fixed a problem where the listing file was not generated if the
16541compiler aborted if the maximum error count was exceeded (200).
16542
16543Fixed a problem where the typechecking of method return values was
16544broken.  This includes the check for a return value when the
16545method is invoked as a TermArg (a return value is expected.)
16546
16547Fixed a reported problem where EOF conditions during a quoted
16548string or comment caused a fault.
16549
16550
16551----------------------------------------
1655215 August 2002.  Summary of changes for this release.
16553
165541) ACPI CA Core Subsystem Version 20020815:
16555
16556Fixed a reported problem where a Store to a method argument that
16557contains a reference did not perform the indirect store correctly.
16558This problem was created during the conversion to the new
16559reference object model - the indirect store to a method argument
16560code was not updated to reflect the new model.
16561
16562Reworked the ACPI mode change code to better conform to ACPI 2.0,
16563handle corner cases, and improve code legibility (Kochi Takayoshi)
16564
16565Fixed a problem with the pathname parsing for the carat (^)
16566prefix.  The heavy use of the carat operator by the new namepath
16567optimization in the iASL compiler uncovered a problem with the AML
16568interpreter handling of this prefix.  In the case where one or
16569more carats precede a single nameseg, the nameseg was treated as
16570standalone and the search rule (to root) was inadvertently
16571applied.  This could cause both the iASL compiler and the
16572interpreter to find the wrong object or to miss the error that
16573should occur if the object does not exist at that exact pathname.
16574
16575Found and fixed the problem where the HP Pavilion DSDT would not
16576load.  This was a relatively minor tweak to the table loading code
16577(a problem caused by the unexpected encounter with a method
16578invocation not within a control method), but it does not solve the
16579overall issue of the execution of AML code at the table level.
16580This investigation is still ongoing.
16581
16582Code and Data Size: Current core subsystem library sizes are shown
16583below.  These are the code and data sizes for the acpica.lib
16584produced by the Microsoft Visual C++ 6.0 compiler, and these
16585values do not include any ACPI driver or OSPM code.  The debug
16586version of the code includes the debug output trace mechanism and
16587has a larger code and data size.  Note that these values will vary
16588depending on the efficiency of the compiler and the compiler
16589options used during generation.
16590
16591  Previous Release
16592    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
16593    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
16594  Current Release:
16595    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
16596    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
16597
16598
165992) Linux
16600
16601Remove redundant slab.h include (Brad Hards)
16602
16603Fix several bugs in thermal.c (Herbert Nachtnebel)
16604
16605Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
16606
16607Change acpi_system_suspend to use updated irq functions (Pavel
16608Machek)
16609
16610Export acpi_get_firmware_table (Matthew Wilcox)
16611
16612Use proper root proc entry for ACPI (Kochi Takayoshi)
16613
16614Fix early-boot table parsing (Bjorn Helgaas)
16615
16616
166173) iASL Compiler/Disassembler
16618
16619Reworked the compiler options to make them more consistent and to
16620use two-letter options where appropriate.  We were running out of
16621sensible letters.   This may break some makefiles, so check the
16622current options list by invoking the compiler with no parameters.
16623
16624Completed the design and implementation of the ASL namepath
16625optimization option for the compiler.  This option optimizes all
16626references to named objects to the shortest possible path.  The
16627first attempt tries to utilize a single nameseg (4 characters) and
16628the "search-to-root" algorithm used by the interpreter.  If that
16629cannot be used (because either the name is not in the search path
16630or there is a conflict with another object with the same name),
16631the pathname is optimized using the carat prefix (usually a
16632shorter string than specifying the entire path from the root.)
16633
16634Implemented support to obtain the DSDT from the Windows registry
16635(when the disassembly option is specified with no input file).
16636Added this code as the implementation for AcpiOsTableOverride in
16637the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
16638utility) to scan memory for the DSDT to the AcpiOsTableOverride
16639function in the DOS OSL to make the disassembler truly OS
16640independent.
16641
16642Implemented a new option to disassemble and compile in one step.
16643When used without an input filename, this option will grab the
16644DSDT from the local machine, disassemble it, and compile it in one
16645step.
16646
16647Added a warning message for invalid escapes (a backslash followed
16648by any character other than the allowable escapes).  This catches
16649the quoted string error "\_SB_" (which should be "\\_SB_" ).
16650
16651Also, there are numerous instances in the ACPI specification where
16652this error occurs.
16653
16654Added a compiler option to disable all optimizations.  This is
16655basically the "compatibility mode" because by using this option,
16656the AML code will come out exactly the same as other ASL
16657compilers.
16658
16659Added error messages for incorrectly ordered dependent resource
16660functions.  This includes: missing EndDependentFn macro at end of
16661dependent resource list, nested dependent function macros (both
16662start and end), and missing StartDependentFn macro.  These are
16663common errors that should be caught at compile time.
16664
16665Implemented _OSI support for the disassembler and compiler.  _OSI
16666must be included in the namespace for proper disassembly (because
16667the disassembler must know the number of arguments.)
16668
16669Added an "optimization" message type that is optional (off by
16670default).  This message is used for all optimizations - including
16671constant folding, integer optimization, and namepath optimization.
16672
16673----------------------------------------
1667425 July 2002.  Summary of changes for this release.
16675
16676
166771) ACPI CA Core Subsystem Version 20020725:
16678
16679The AML Disassembler has been enhanced to produce compilable ASL
16680code and has been integrated into the iASL compiler (see below) as
16681well as the single-step disassembly for the AML debugger and the
16682disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
16683resource templates and macros are fully supported.  The
16684disassembler has been tested on over 30 different AML files,
16685producing identical AML when the resulting disassembled ASL file
16686is recompiled with the same ASL compiler.
16687
16688Modified the Resource Manager to allow zero interrupts and zero
16689dma channels during the GetCurrentResources call.  This was
16690causing problems on some platforms.
16691
16692Added the AcpiOsRedirectOutput interface to the OSL to simplify
16693output redirection for the AcpiOsPrintf and AcpiOsVprintf
16694interfaces.
16695
16696Code and Data Size: Current core subsystem library sizes are shown
16697below.  These are the code and data sizes for the acpica.lib
16698produced by the Microsoft Visual C++ 6.0 compiler, and these
16699values do not include any ACPI driver or OSPM code.  The debug
16700version of the code includes the debug output trace mechanism and
16701has a larger code and data size.  Note that these values will vary
16702depending on the efficiency of the compiler and the compiler
16703options used during generation.
16704
16705  Previous Release
16706    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
16707    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
16708  Current Release:
16709    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
16710    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
16711
16712
167132) Linux
16714
16715Fixed a panic in the EC driver (Dominik Brodowski)
16716
16717Implemented checksum of the R/XSDT itself during Linux table scan
16718(Richard Schaal)
16719
16720
167213) iASL compiler
16722
16723The AML disassembler is integrated into the compiler.  The "-d"
16724option invokes the disassembler  to completely disassemble an
16725input AML file, producing as output a text ASL file with the
16726extension ".dsl" (to avoid name collisions with existing .asl
16727source files.)  A future enhancement will allow the disassembler
16728to obtain the BIOS DSDT from the registry under Windows.
16729
16730Fixed a problem with the VendorShort and VendorLong resource
16731descriptors where an invalid AML sequence was created.
16732
16733Implemented a fix for BufferData term in the ASL parser.  It was
16734inadvertently defined twice, allowing invalid syntax to pass and
16735causing reduction conflicts.
16736
16737Fixed a problem where the Ones opcode could get converted to a
16738value of zero if "Ones" was used where a byte, word or dword value
16739was expected.  The 64-bit value is now truncated to the correct
16740size with the correct value.
16741
16742
16743
16744----------------------------------------
1674502 July 2002.  Summary of changes for this release.
16746
16747
167481) ACPI CA Core Subsystem Version 20020702:
16749
16750The Table Manager code has been restructured to add several new
16751features.  Tables that are not required by the core subsystem
16752(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
16753validated in any way and are returned from AcpiGetFirmwareTable if
16754requested.  The AcpiOsTableOverride interface is now called for
16755each table that is loaded by the subsystem in order to allow the
16756host to override any table it chooses.  Previously, only the DSDT
16757could be overridden.  Added one new files, tbrsdt.c and
16758tbgetall.c.
16759
16760Fixed a problem with the conversion of internal package objects to
16761external objects (when a package is returned from a control
16762method.)  The return buffer length was set to zero instead of the
16763proper length of the package object.
16764
16765Fixed a reported problem with the use of the RefOf and DeRefOf
16766operators when passing reference arguments to control methods.  A
16767new type of Reference object is used internally for references
16768produced by the RefOf operator.
16769
16770Added additional error messages in the Resource Manager to explain
16771AE_BAD_DATA errors when they occur during resource parsing.
16772
16773Split the AcpiEnableSubsystem into two primitives to enable a
16774finer granularity initialization sequence.  These two calls should
16775be called in this order: AcpiEnableSubsystem (flags),
16776AcpiInitializeObjects (flags).  The flags parameter remains the
16777same.
16778
16779
167802) Linux
16781
16782Updated the ACPI utilities module to understand the new style of
16783fully resolved package objects that are now returned from the core
16784subsystem.  This eliminates errors of the form:
16785
16786    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
16787    acpi_utils-0430 [145] acpi_evaluate_reference:
16788        Invalid element in package (not a device reference)
16789
16790The method evaluation utility uses the new buffer allocation
16791scheme instead of calling AcpiEvaluate Object twice.
16792
16793Added support for ECDT. This allows the use of the Embedded
16794
16795Controller before the namespace has been fully initialized, which
16796is necessary for ACPI 2.0 support, and for some laptops to
16797initialize properly. (Laptops using ECDT are still rare, so only
16798limited testing was performed of the added functionality.)
16799
16800Fixed memory leaks in the EC driver.
16801
16802Eliminated a brittle code structure in acpi_bus_init().
16803
16804Eliminated the acpi_evaluate() helper function in utils.c. It is
16805no longer needed since acpi_evaluate_object can optionally
16806allocate memory for the return object.
16807
16808Implemented fix for keyboard hang when getting battery readings on
16809some systems (Stephen White)
16810
16811PCI IRQ routing update (Dominik Brodowski)
16812
16813Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
16814support
16815
16816----------------------------------------
1681711 June 2002.  Summary of changes for this release.
16818
16819
168201) ACPI CA Core Subsystem Version 20020611:
16821
16822Fixed a reported problem where constants such as Zero and One
16823appearing within _PRT packages were not handled correctly within
16824the resource manager code.  Originally reported against the ASL
16825compiler because the code generator now optimizes integers to
16826their minimal AML representation (i.e. AML constants if possible.)
16827The _PRT code now handles all AML constant opcodes correctly
16828(Zero, One, Ones, Revision).
16829
16830Fixed a problem with the Concatenate operator in the AML
16831interpreter where a buffer result object was incorrectly marked as
16832not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
16833
16834All package sub-objects are now fully resolved before they are
16835returned from the external ACPI interfaces.  This means that name
16836strings are resolved to object handles, and constant operators
16837(Zero, One, Ones, Revision) are resolved to Integers.
16838
16839Implemented immediate resolution of the AML Constant opcodes
16840(Zero, One, Ones, Revision) to Integer objects upon detection
16841within the AML stream. This has simplified and reduced the
16842generated code size of the subsystem by eliminating about 10
16843switch statements for these constants (which previously were
16844contained in Reference objects.)  The complicating issues are that
16845the Zero opcode is used as a "placeholder" for unspecified
16846optional target operands and stores to constants are defined to be
16847no-ops.
16848
16849Code and Data Size: Current core subsystem library sizes are shown
16850below. These are the code and data sizes for the acpica.lib
16851produced by the Microsoft Visual C++ 6.0 compiler, and these
16852values do not include any ACPI driver or OSPM code.  The debug
16853version of the code includes the debug output trace mechanism and
16854has a larger code and data size.  Note that these values will vary
16855depending on the efficiency of the compiler and the compiler
16856options used during generation.
16857
16858  Previous Release
16859    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
16860    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
16861  Current Release:
16862    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
16863    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
16864
16865
168662) Linux
16867
16868
16869Added preliminary support for obtaining _TRA data for PCI root
16870bridges (Bjorn Helgaas).
16871
16872
168733) iASL Compiler Version X2046:
16874
16875Fixed a problem where the "_DDN" reserved name was defined to be a
16876control method with one argument.  There are no arguments, and
16877_DDN does not have to be a control method.
16878
16879Fixed a problem with the Linux version of the compiler where the
16880source lines printed with error messages were the wrong lines.
16881This turned out to be the "LF versus CR/LF" difference between
16882Windows and Unix.  This appears to be the longstanding issue
16883concerning listing output and error messages.
16884
16885Fixed a problem with the Linux version of compiler where opcode
16886names within error messages were wrong.  This was caused by a
16887slight difference in the output of the Flex tool on Linux versus
16888Windows.
16889
16890Fixed a problem with the Linux compiler where the hex output files
16891contained some garbage data caused by an internal buffer overrun.
16892
16893
16894----------------------------------------
1689517 May 2002.  Summary of changes for this release.
16896
16897
168981) ACPI CA Core Subsystem Version 20020517:
16899
16900Implemented a workaround to an BIOS bug discovered on the HP
16901OmniBook where the FADT revision number and the table size are
16902inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
16903behavior is to fallback to using only the ACPI 1.0 fields of the
16904FADT if the table is too small to be a ACPI 2.0 table as claimed
16905by the revision number.  Although this is a BIOS bug, this is a
16906case where the workaround is simple enough and with no side
16907effects, so it seemed prudent to add it.  A warning message is
16908issued, however.
16909
16910Implemented minimum size checks for the fixed-length ACPI tables -
16911- the FADT and FACS, as well as consistency checks between the
16912revision number and the table size.
16913
16914Fixed a reported problem in the table override support where the
16915new table pointer was incorrectly treated as a physical address
16916instead of a logical address.
16917
16918Eliminated the use of the AE_AML_ERROR exception and replaced it
16919with more descriptive codes.
16920
16921Fixed a problem where an exception would occur if an ASL Field was
16922defined with no named Field Units underneath it (used by some
16923index fields).
16924
16925Code and Data Size: Current core subsystem library sizes are shown
16926below.  These are the code and data sizes for the acpica.lib
16927produced by the Microsoft Visual C++ 6.0 compiler, and these
16928values do not include any ACPI driver or OSPM code.  The debug
16929version of the code includes the debug output trace mechanism and
16930has a larger code and data size.  Note that these values will vary
16931depending on the efficiency of the compiler and the compiler
16932options used during generation.
16933
16934  Previous Release
16935    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
16936    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
16937  Current Release:
16938    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
16939    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
16940
16941
16942
169432) Linux
16944
16945Much work done on ACPI init (MADT and PCI IRQ routing support).
16946(Paul D. and Dominik Brodowski)
16947
16948Fix PCI IRQ-related panic on boot (Sam Revitch)
16949
16950Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
16951
16952Fix "MHz" typo (Dominik Brodowski)
16953
16954Fix RTC year 2000 issue (Dominik Brodowski)
16955
16956Preclude multiple button proc entries (Eric Brunet)
16957
16958Moved arch-specific code out of include/platform/aclinux.h
16959
169603) iASL Compiler Version X2044:
16961
16962Implemented error checking for the string used in the EISAID macro
16963(Usually used in the definition of the _HID object.)  The code now
16964strictly enforces the PnP format - exactly 7 characters, 3
16965uppercase letters and 4 hex digits.
16966
16967If a raw string is used in the definition of the _HID object
16968(instead of the EISAID macro), the string must contain all
16969alphanumeric characters (e.g., "*PNP0011" is not allowed because
16970of the asterisk.)
16971
16972Implemented checking for invalid use of ACPI reserved names for
16973most of the name creation operators (Name, Device, Event, Mutex,
16974OperationRegion, PowerResource, Processor, and ThermalZone.)
16975Previously, this check was only performed for control methods.
16976
16977Implemented an additional check on the Name operator to emit an
16978error if a reserved name that must be implemented in ASL as a
16979control method is used.  We know that a reserved name must be a
16980method if it is defined with input arguments.
16981
16982The warning emitted when a namespace object reference is not found
16983during the cross reference phase has been changed into an error.
16984The "External" directive should be used for names defined in other
16985modules.
16986
16987
169884) Tools and Utilities
16989
16990The 16-bit tools (adump16 and aexec16) have been regenerated and
16991tested.
16992
16993Fixed a problem with the output of both acpidump and adump16 where
16994the indentation of closing parentheses and brackets was not
16995
16996aligned properly with the parent block.
16997
16998
16999----------------------------------------
1700003 May 2002.  Summary of changes for this release.
17001
17002
170031) ACPI CA Core Subsystem Version 20020503:
17004
17005Added support a new OSL interface that allows the host operating
17006
17007system software to override the DSDT found in the firmware -
17008AcpiOsTableOverride.  With this interface, the OSL can examine the
17009version of the firmware DSDT and replace it with a different one
17010if desired.
17011
17012Added new external interfaces for accessing ACPI registers from
17013device drivers and other system software - AcpiGetRegister and
17014AcpiSetRegister.  This was simply an externalization of the
17015existing AcpiHwBitRegister interfaces.
17016
17017Fixed a regression introduced in the previous build where the
17018ASL/AML CreateField operator always returned an error,
17019"destination must be a NS Node".
17020
17021Extended the maximum time (before failure) to successfully enable
17022ACPI mode to 3 seconds.
17023
17024Code and Data Size: Current core subsystem library sizes are shown
17025below.  These are the code and data sizes for the acpica.lib
17026produced by the Microsoft Visual C++ 6.0 compiler, and these
17027values do not include any ACPI driver or OSPM code.  The debug
17028version of the code includes the debug output trace mechanism and
17029has a larger code and data size.  Note that these values will vary
17030depending on the efficiency of the compiler and the compiler
17031options used during generation.
17032
17033  Previous Release
17034    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
17035    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
17036  Current Release:
17037    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
17038    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
17039
17040
170412) Linux
17042
17043Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
17044free. While 3 out of 4 of our in-house systems work fine, the last
17045one still hangs when testing the LAPIC timer.
17046
17047Renamed many files in 2.5 kernel release to omit "acpi_" from the
17048name.
17049
17050Added warning on boot for Presario 711FR.
17051
17052Sleep improvements (Pavel Machek)
17053
17054ACPI can now be built without CONFIG_PCI enabled.
17055
17056IA64: Fixed memory map functions (JI Lee)
17057
17058
170593) iASL Compiler Version X2043:
17060
17061Added support to allow the compiler to be integrated into the MS
17062VC++ development environment for one-button compilation of single
17063files or entire projects -- with error-to-source-line mapping.
17064
17065Implemented support for compile-time constant folding for the
17066Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
17067specification.  This allows the ASL writer to use expressions
17068instead of Integer/Buffer/String constants in terms that must
17069evaluate to constants at compile time and will also simplify the
17070emitted AML in any such sub-expressions that can be folded
17071(evaluated at compile-time.)  This increases the size of the
17072compiler significantly because a portion of the ACPI CA AML
17073interpreter is included within the compiler in order to pre-
17074evaluate constant expressions.
17075
17076
17077Fixed a problem with the "Unicode" ASL macro that caused the
17078compiler to fault.  (This macro is used in conjunction with the
17079_STR reserved name.)
17080
17081Implemented an AML opcode optimization to use the Zero, One, and
17082Ones opcodes where possible to further reduce the size of integer
17083constants and thus reduce the overall size of the generated AML
17084code.
17085
17086Implemented error checking for new reserved terms for ACPI version
170872.0A.
17088
17089Implemented the -qr option to display the current list of ACPI
17090reserved names known to the compiler.
17091
17092Implemented the -qc option to display the current list of ASL
17093operators that are allowed within constant expressions and can
17094therefore be folded at compile time if the operands are constants.
17095
17096
170974) Documentation
17098
17099Updated the Programmer's Reference for new interfaces, data types,
17100and memory allocation model options.
17101
17102Updated the iASL Compiler User Reference to apply new format and
17103add information about new features and options.
17104
17105----------------------------------------
1710619 April 2002.  Summary of changes for this release.
17107
171081) ACPI CA Core Subsystem Version 20020419:
17109
17110The source code base for the Core Subsystem has been completely
17111cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
17112versions.  The Lint option files used are included in the
17113/acpi/generate/lint directory.
17114
17115Implemented enhanced status/error checking across the entire
17116Hardware manager subsystem.  Any hardware errors (reported from
17117the OSL) are now bubbled up and will abort a running control
17118method.
17119
17120
17121Fixed a problem where the per-ACPI-table integer width (32 or 64)
17122was stored only with control method nodes, causing a fault when
17123non-control method code was executed during table loading.  The
17124solution implemented uses a global variable to indicate table
17125width across the entire ACPI subsystem.  Therefore, ACPI CA does
17126not support mixed integer widths across different ACPI tables
17127(DSDT, SSDT).
17128
17129Fixed a problem where NULL extended fields (X fields) in an ACPI
171302.0 ACPI FADT caused the table load to fail.  Although the
17131existing ACPI specification is a bit fuzzy on this topic, the new
17132behavior is to fall back on a ACPI 1.0 field if the corresponding
17133ACPI 2.0 X field is zero (even though the table revision indicates
17134a full ACPI 2.0 table.)  The ACPI specification will be updated to
17135clarify this issue.
17136
17137Fixed a problem with the SystemMemory operation region handler
17138where memory was always accessed byte-wise even if the AML-
17139specified access width was larger than a byte.  This caused
17140problems on systems with memory-mapped I/O.  Memory is now
17141accessed with the width specified.  On systems that do not support
17142non-aligned transfers, a check is made to guarantee proper address
17143alignment before proceeding in order to avoid an AML-caused
17144alignment fault within the kernel.
17145
17146
17147Fixed a problem with the ExtendedIrq resource where only one byte
17148of the 4-byte Irq field was extracted.
17149
17150Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
17151function was out of date and required a rewrite.
17152
17153Code and Data Size: Current core subsystem library sizes are shown
17154below.  These are the code and data sizes for the acpica.lib
17155produced by the Microsoft Visual C++ 6.0 compiler, and these
17156values do not include any ACPI driver or OSPM code.  The debug
17157version of the code includes the debug output trace mechanism and
17158has a larger code and data size.  Note that these values will vary
17159depending on the efficiency of the compiler and the compiler
17160options used during generation.
17161
17162  Previous Release
17163    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
17164    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
17165  Current Release:
17166    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
17167    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
17168
17169
171702) Linux
17171
17172PCI IRQ routing fixes (Dominik Brodowski)
17173
17174
171753) iASL Compiler Version X2042:
17176
17177Implemented an additional compile-time error check for a field
17178unit whose size + minimum access width would cause a run-time
17179access beyond the end-of-region.  Previously, only the field size
17180itself was checked.
17181
17182The Core subsystem and iASL compiler now share a common parse
17183object in preparation for compile-time evaluation of the type
171843/4/5 ASL operators.
17185
17186
17187----------------------------------------
17188Summary of changes for this release: 03_29_02
17189
171901) ACPI CA Core Subsystem Version 20020329:
17191
17192Implemented support for late evaluation of TermArg operands to
17193Buffer and Package objects.  This allows complex expressions to be
17194used in the declarations of these object types.
17195
17196Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
171971.0, if the field was larger than 32 bits, it was returned as a
17198buffer - otherwise it was returned as an integer.  In ACPI 2.0,
17199the field is returned as a buffer only if the field is larger than
1720064 bits.  The TableRevision is now considered when making this
17201conversion to avoid incompatibility with existing ASL code.
17202
17203Implemented logical addressing for AcpiOsGetRootPointer.  This
17204allows an RSDP with either a logical or physical address.  With
17205this support, the host OS can now override all ACPI tables with
17206one logical RSDP.  Includes implementation of  "typed" pointer
17207support to allow a common data type for both physical and logical
17208pointers internally.  This required a change to the
17209AcpiOsGetRootPointer interface.
17210
17211Implemented the use of ACPI 2.0 Generic Address Structures for all
17212GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
17213mapped I/O for these ACPI features.
17214
17215Initialization now ignores not only non-required tables (All
17216tables other than the FADT, FACS, DSDT, and SSDTs), but also does
17217not validate the table headers of unrecognized tables.
17218
17219Fixed a problem where a notify handler could only be
17220installed/removed on an object of type Device.  All "notify"
17221
17222objects are now supported -- Devices, Processor, Power, and
17223Thermal.
17224
17225Removed most verbosity from the ACPI_DB_INFO debug level.  Only
17226critical information is returned when this debug level is enabled.
17227
17228Code and Data Size: Current core subsystem library sizes are shown
17229below.  These are the code and data sizes for the acpica.lib
17230produced by the Microsoft Visual C++ 6.0 compiler, and these
17231values do not include any ACPI driver or OSPM code.  The debug
17232version of the code includes the debug output trace mechanism and
17233has a larger code and data size.  Note that these values will vary
17234depending on the efficiency of the compiler and the compiler
17235options used during generation.
17236
17237  Previous Release
17238    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
17239    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
17240  Current Release:
17241    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
17242    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
17243
17244
172452) Linux:
17246
17247The processor driver (acpi_processor.c) now fully supports ACPI
172482.0-based processor performance control (e.g. Intel(R)
17249SpeedStep(TM) technology) Note that older laptops that only have
17250the Intel "applet" interface are not supported through this.  The
17251'limit' and 'performance' interface (/proc) are fully functional.
17252[Note that basic policy for controlling performance state
17253transitions will be included in the next version of ospmd.]  The
17254idle handler was modified to more aggressively use C2, and PIIX4
17255errata handling underwent a complete overhaul (big thanks to
17256Dominik Brodowski).
17257
17258Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
17259based devices in the ACPI namespace are now dynamically bound
17260(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
17261This allows, among other things, ACPI to resolve bus numbers for
17262subordinate PCI bridges.
17263
17264Enhanced PCI IRQ routing to get the proper bus number for _PRT
17265entries defined underneath PCI bridges.
17266
17267Added IBM 600E to bad bios list due to invalid _ADR value for
17268PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
17269
17270In the process of adding full MADT support (e.g. IOAPIC) for IA32
17271(acpi.c, mpparse.c) -- stay tuned.
17272
17273Added back visual differentiation between fixed-feature and
17274control-method buttons in dmesg.  Buttons are also subtyped (e.g.
17275button/power/PWRF) to simplify button identification.
17276
17277We no longer use -Wno-unused when compiling debug. Please ignore
17278any "_THIS_MODULE defined but not used" messages.
17279
17280Can now shut down the system using "magic sysrq" key.
17281
17282
172833) iASL Compiler version 2041:
17284
17285Fixed a problem where conversion errors for hex/octal/decimal
17286constants were not reported.
17287
17288Implemented a fix for the General Register template Address field.
17289This field was 8 bits when it should be 64.
17290
17291Fixed a problem where errors/warnings were no longer being emitted
17292within the listing output file.
17293
17294Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
17295exactly 4 characters, alphanumeric only.
17296
17297
17298
17299
17300----------------------------------------
17301Summary of changes for this release: 03_08_02
17302
17303
173041) ACPI CA Core Subsystem Version 20020308:
17305
17306Fixed a problem with AML Fields where the use of the "AccessAny"
17307keyword could cause an interpreter error due to attempting to read
17308or write beyond the end of the parent Operation Region.
17309
17310Fixed a problem in the SystemMemory Operation Region handler where
17311an attempt was made to map memory beyond the end of the region.
17312This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
17313errors on some Linux systems.
17314
17315Fixed a problem where the interpreter/namespace "search to root"
17316algorithm was not functioning for some object types.  Relaxed the
17317internal restriction on the search to allow upsearches for all
17318external object types as well as most internal types.
17319
17320
173212) Linux:
17322
17323We now use safe_halt() macro versus individual calls to sti | hlt.
17324
17325Writing to the processor limit interface should now work. "echo 1"
17326will increase the limit, 2 will decrease, and 0 will reset to the
17327
17328default.
17329
17330
173313) ASL compiler:
17332
17333Fixed segfault on Linux version.
17334
17335
17336----------------------------------------
17337Summary of changes for this release: 02_25_02
17338
173391) ACPI CA Core Subsystem:
17340
17341
17342Fixed a problem where the GPE bit masks were not initialized
17343properly, causing erratic GPE behavior.
17344
17345Implemented limited support for multiple calling conventions.  The
17346code can be generated with either the VPL (variable parameter
17347list, or "C") convention, or the FPL (fixed parameter list, or
17348"Pascal") convention.  The core subsystem is about 3.4% smaller
17349when generated with FPL.
17350
17351
173522) Linux
17353
17354Re-add some /proc/acpi/event functionality that was lost during
17355the rewrite
17356
17357Resolved issue with /proc events for fixed-feature buttons showing
17358up as the system device.
17359
17360Fixed checks on C2/C3 latencies to be inclusive of maximum values.
17361
17362Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
17363
17364Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
17365
17366Fixed limit interface & usage to fix bugs with passive cooling
17367hysterisis.
17368
17369Restructured PRT support.
17370
17371
17372----------------------------------------
17373Summary of changes for this label: 02_14_02
17374
17375
173761) ACPI CA Core Subsystem:
17377
17378Implemented support in AcpiLoadTable to allow loading of FACS and
17379FADT tables.
17380
17381Support for the now-obsolete interim 0.71 64-bit ACPI tables has
17382been removed.  All 64-bit platforms should be migrated to the ACPI
173832.0 tables.  The actbl71.h header has been removed from the source
17384tree.
17385
17386All C macros defined within the subsystem have been prefixed with
17387"ACPI_" to avoid collision with other system include files.
17388
17389Removed the return value for the two AcpiOsPrint interfaces, since
17390it is never used and causes lint warnings for ignoring the return
17391value.
17392
17393Added error checking to all internal mutex acquire and release
17394calls.  Although a failure from one of these interfaces is
17395probably a fatal system error, these checks will cause the
17396immediate abort of the currently executing method or interface.
17397
17398Fixed a problem where the AcpiSetCurrentResources interface could
17399fault.  This was a side effect of the deployment of the new memory
17400allocation model.
17401
17402Fixed a couple of problems with the Global Lock support introduced
17403in the last major build.  The "common" (1.0/2.0) internal FACS was
17404being overwritten with the FACS signature and clobbering the
17405Global Lock pointer.  Also, the actual firmware FACS was being
17406unmapped after construction of the "common" FACS, preventing
17407access to the actual Global Lock field within it.  The "common"
17408internal FACS is no longer installed as an actual ACPI table; it
17409is used simply as a global.
17410
17411Code and Data Size: Current core subsystem library sizes are shown
17412below.  These are the code and data sizes for the acpica.lib
17413produced by the Microsoft Visual C++ 6.0 compiler, and these
17414values do not include any ACPI driver or OSPM code.  The debug
17415version of the code includes the debug output trace mechanism and
17416has a larger code and data size.  Note that these values will vary
17417depending on the efficiency of the compiler and the compiler
17418options used during generation.
17419
17420  Previous Release (02_07_01)
17421    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
17422    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
17423  Current Release:
17424    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
17425    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
17426
17427
174282) Linux
17429
17430Updated Linux-specific code for core macro and OSL interface
17431changes described above.
17432
17433Improved /proc/acpi/event. It now can be opened only once and has
17434proper poll functionality.
17435
17436Fixed and restructured power management (acpi_bus).
17437
17438Only create /proc "view by type" when devices of that class exist.
17439
17440Fixed "charging/discharging" bug (and others) in acpi_battery.
17441
17442Improved thermal zone code.
17443
17444
174453) ASL Compiler, version X2039:
17446
17447
17448Implemented the new compiler restriction on ASL String hex/octal
17449escapes to non-null, ASCII values.  An error results if an invalid
17450value is used.  (This will require an ACPI 2.0 specification
17451change.)
17452
17453AML object labels that are output to the optional C and ASM source
17454are now prefixed with both the ACPI table signature and table ID
17455to help guarantee uniqueness within a large BIOS project.
17456
17457
17458----------------------------------------
17459Summary of changes for this label: 02_01_02
17460
174611) ACPI CA Core Subsystem:
17462
17463ACPI 2.0 support is complete in the entire Core Subsystem and the
17464ASL compiler. All new ACPI 2.0 operators are implemented and all
17465other changes for ACPI 2.0 support are complete.  With
17466simultaneous code and data optimizations throughout the subsystem,
17467ACPI 2.0 support has been implemented with almost no additional
17468cost in terms of code and data size.
17469
17470Implemented a new mechanism for allocation of return buffers.  If
17471the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
17472be allocated on behalf of the caller.  Consolidated all return
17473buffer validation and allocation to a common procedure.  Return
17474buffers will be allocated via the primary OSL allocation interface
17475since it appears that a separate pool is not needed by most users.
17476If a separate pool is required for these buffers, the caller can
17477still use the original mechanism and pre-allocate the buffer(s).
17478
17479Implemented support for string operands within the DerefOf
17480operator.
17481
17482Restructured the Hardware and Event managers to be table driven,
17483simplifying the source code and reducing the amount of generated
17484code.
17485
17486Split the common read/write low-level ACPI register bitfield
17487procedure into a separate read and write, simplifying the code
17488considerably.
17489
17490Obsoleted the AcpiOsCallocate OSL interface.  This interface was
17491used only a handful of times and didn't have enough critical mass
17492for a separate interface.  Replaced with a common calloc procedure
17493in the core.
17494
17495Fixed a reported problem with the GPE number mapping mechanism
17496that allows GPE1 numbers to be non-contiguous with GPE0.
17497Reorganized the GPE information and shrunk a large array that was
17498originally large enough to hold info for all possible GPEs (256)
17499to simply large enough to hold all GPEs up to the largest GPE
17500number on the machine.
17501
17502Fixed a reported problem with resource structure alignment on 64-
17503bit platforms.
17504
17505Changed the AcpiEnableEvent and AcpiDisableEvent external
17506interfaces to not require any flags for the common case of
17507enabling/disabling a GPE.
17508
17509Implemented support to allow a "Notify" on a Processor object.
17510
17511Most TBDs in comments within the source code have been resolved
17512and eliminated.
17513
17514
17515Fixed a problem in the interpreter where a standalone parent
17516prefix (^) was not handled correctly in the interpreter and
17517debugger.
17518
17519Removed obsolete and unnecessary GPE save/restore code.
17520
17521Implemented Field support in the ASL Load operator.  This allows a
17522table to be loaded from a named field, in addition to loading a
17523table directly from an Operation Region.
17524
17525Implemented timeout and handle support in the external Global Lock
17526interfaces.
17527
17528Fixed a problem in the AcpiDump utility where pathnames were no
17529longer being generated correctly during the dump of named objects.
17530
17531Modified the AML debugger to give a full display of if/while
17532predicates instead of just one AML opcode at a time.  (The
17533predicate can have several nested ASL statements.)  The old method
17534was confusing during single stepping.
17535
17536Code and Data Size: Current core subsystem library sizes are shown
17537below. These are the code and data sizes for the acpica.lib
17538produced by the Microsoft Visual C++ 6.0 compiler, and these
17539values do not include any ACPI driver or OSPM code.  The debug
17540version of the code includes the debug output trace mechanism and
17541has a larger code and data size.  Note that these values will vary
17542depending on the efficiency of the compiler and the compiler
17543options used during generation.
17544
17545  Previous Release (12_18_01)
17546     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
17547     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
17548   Current Release:
17549     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
17550     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
17551
175522) Linux
17553
17554 Implemented fix for PIIX reverse throttling errata (Processor
17555driver)
17556
17557Added new Limit interface (Processor and Thermal drivers)
17558
17559New thermal policy (Thermal driver)
17560
17561Many updates to /proc
17562
17563Battery "low" event support (Battery driver)
17564
17565Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
17566
17567IA32 - IA64 initialization unification, no longer experimental
17568
17569Menuconfig options redesigned
17570
175713) ASL Compiler, version X2037:
17572
17573Implemented several new output features to simplify integration of
17574AML code into  firmware: 1) Output the AML in C source code with
17575labels for each named ASL object.  The    original ASL source code
17576is interleaved as C comments. 2) Output the AML in ASM source code
17577with labels and interleaved ASL    source. 3) Output the AML in
17578raw hex table form, in either C or ASM.
17579
17580Implemented support for optional string parameters to the
17581LoadTable operator.
17582
17583Completed support for embedded escape sequences within string
17584literals.  The compiler now supports all single character escapes
17585as well as the Octal and Hex escapes.  Note: the insertion of a
17586null byte into a string literal (via the hex/octal escape) causes
17587the string to be immediately terminated.  A warning is issued.
17588
17589Fixed a problem where incorrect AML was generated for the case
17590where an ASL namepath consists of a single parent prefix (
17591
17592) with no trailing name segments.
17593
17594The compiler has been successfully generated with a 64-bit C
17595compiler.
17596
17597
17598
17599
17600----------------------------------------
17601Summary of changes for this label: 12_18_01
17602
176031) Linux
17604
17605Enhanced blacklist with reason and severity fields. Any table's
17606signature may now be used to identify a blacklisted system.
17607
17608Call _PIC control method to inform the firmware which interrupt
17609model the OS is using. Turn on any disabled link devices.
17610
17611Cleaned up busmgr /proc error handling (Andreas Dilger)
17612
17613 2) ACPI CA Core Subsystem:
17614
17615Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
17616while loop)
17617
17618Completed implementation of the ACPI 2.0 "Continue",
17619"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
17620operators.  All new ACPI 2.0 operators are now implemented in both
17621the ASL compiler and the AML interpreter.  The only remaining ACPI
176222.0 task is support for the String data type in the DerefOf
17623operator.  Fixed a problem with AcquireMutex where the status code
17624was lost if the caller had to actually wait for the mutex.
17625
17626Increased the maximum ASL Field size from 64K bits to 4G bits.
17627
17628Completed implementation of the external Global Lock interfaces --
17629AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
17630Handler parameters were added.
17631
17632Completed another pass at removing warnings and issues when
17633compiling with 64-bit compilers.  The code now compiles cleanly
17634with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
17635add and subtract (diff) macros have changed considerably.
17636
17637
17638Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1763964-bit platforms, 32-bits on all others.  This type is used
17640wherever memory allocation and/or the C sizeof() operator is used,
17641and affects the OSL memory allocation interfaces AcpiOsAllocate
17642and AcpiOsCallocate.
17643
17644Implemented sticky user breakpoints in the AML debugger.
17645
17646Code and Data Size: Current core subsystem library sizes are shown
17647below. These are the code and data sizes for the acpica.lib
17648produced by the Microsoft Visual C++ 6.0 compiler, and these
17649values do not include any ACPI driver or OSPM code.  The debug
17650version of the code includes the debug output trace mechanism and
17651has a larger code and data size. Note that these values will vary
17652depending on the efficiency of the compiler and the compiler
17653options used during generation.
17654
17655  Previous Release (12_05_01)
17656     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
17657     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
17658   Current Release:
17659     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
17660     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
17661
17662 3) ASL Compiler, version X2034:
17663
17664Now checks for (and generates an error if detected) the use of a
17665Break or Continue statement without an enclosing While statement.
17666
17667
17668Successfully generated the compiler with the Intel 64-bit C
17669compiler.
17670
17671 ----------------------------------------
17672Summary of changes for this label: 12_05_01
17673
17674 1) ACPI CA Core Subsystem:
17675
17676The ACPI 2.0 CopyObject operator is fully implemented.  This
17677operator creates a new copy of an object (and is also used to
17678bypass the "implicit conversion" mechanism of the Store operator.)
17679
17680The ACPI 2.0 semantics for the SizeOf operator are fully
17681implemented.  The change is that performing a SizeOf on a
17682reference object causes an automatic dereference of the object to
17683the actual value before the size is evaluated. This behavior was
17684undefined in ACPI 1.0.
17685
17686The ACPI 2.0 semantics for the Extended IRQ resource descriptor
17687have been implemented.  The interrupt polarity and mode are now
17688independently set.
17689
17690Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
17691appearing in Package objects were not properly converted to
17692integers when the internal Package was converted to an external
17693object (via the AcpiEvaluateObject interface.)
17694
17695Fixed a problem with the namespace object deletion mechanism for
17696objects created by control methods.  There were two parts to this
17697problem: 1) Objects created during the initialization phase method
17698parse were not being deleted, and 2) The object owner ID mechanism
17699to track objects was broken.
17700
17701Fixed a problem where the use of the ASL Scope operator within a
17702control method would result in an invalid opcode exception.
17703
17704Fixed a problem introduced in the previous label where the buffer
17705length required for the _PRT structure was not being returned
17706correctly.
17707
17708Code and Data Size: Current core subsystem library sizes are shown
17709below. These are the code and data sizes for the acpica.lib
17710produced by the Microsoft Visual C++ 6.0 compiler, and these
17711values do not include any ACPI driver or OSPM code.  The debug
17712version of the code includes the debug output trace mechanism and
17713has a larger code and data size.  Note that these values will vary
17714depending on the efficiency of the compiler and the compiler
17715options used during generation.
17716
17717  Previous Release (11_20_01)
17718     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
17719     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
17720
17721  Current Release:
17722     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
17723     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
17724
17725 2) Linux:
17726
17727Updated all files to apply cleanly against 2.4.16.
17728
17729Added basic PCI Interrupt Routing Table (PRT) support for IA32
17730(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
17731version supports both static and dynamic PRT entries, but dynamic
17732entries are treated as if they were static (not yet
17733reconfigurable).  Architecture- specific code to use this data is
17734absent on IA32 but should be available shortly.
17735
17736Changed the initialization sequence to start the ACPI interpreter
17737(acpi_init) prior to initialization of the PCI driver (pci_init)
17738in init/main.c.  This ordering is required to support PRT and
17739facilitate other (future) enhancement.  A side effect is that the
17740ACPI bus driver and certain device drivers can no longer be loaded
17741as modules.
17742
17743Modified the 'make menuconfig' options to allow PCI Interrupt
17744Routing support to be included without the ACPI Bus and other
17745device drivers.
17746
17747 3) ASL Compiler, version X2033:
17748
17749Fixed some issues with the use of the new CopyObject and
17750DataTableRegion operators.  Both are fully functional.
17751
17752 ----------------------------------------
17753Summary of changes for this label: 11_20_01
17754
17755 20 November 2001.  Summary of changes for this release.
17756
17757 1) ACPI CA Core Subsystem:
17758
17759Updated Index support to match ACPI 2.0 semantics.  Storing a
17760Integer, String, or Buffer to an Index of a Buffer will store only
17761the least-significant byte of the source to the Indexed buffer
17762byte.  Multiple writes are not performed.
17763
17764Fixed a problem where the access type used in an AccessAs ASL
17765operator was not recorded correctly into the field object.
17766
17767Fixed a problem where ASL Event objects were created in a
17768signalled state. Events are now created in an unsignalled state.
17769
17770The internal object cache is now purged after table loading and
17771initialization to reduce the use of dynamic kernel memory -- on
17772the assumption that object use is greatest during the parse phase
17773of the entire table (versus the run-time use of individual control
17774methods.)
17775
17776ACPI 2.0 variable-length packages are now fully operational.
17777
17778Code and Data Size: Code and Data optimizations have permitted new
17779feature development with an actual reduction in the library size.
17780Current core subsystem library sizes are shown below.  These are
17781the code and data sizes for the acpica.lib produced by the
17782Microsoft Visual C++ 6.0 compiler, and these values do not include
17783any ACPI driver or OSPM code.  The debug version of the code
17784includes the debug output trace mechanism and has a larger code
17785and data size.  Note that these values will vary depending on the
17786efficiency of the compiler and the compiler options used during
17787generation.
17788
17789  Previous Release (11_09_01):
17790     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
17791     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
17792
17793  Current Release:
17794     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
17795     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
17796
17797 2) Linux:
17798
17799Enhanced the ACPI boot-time initialization code to allow the use
17800of Local APIC tables for processor enumeration on IA-32, and to
17801pave the way for a fully MPS-free boot (on SMP systems) in the
17802near future.  This functionality replaces
17803arch/i386/kernel/acpitables.c, which was introduced in an earlier
178042.4.15-preX release.  To enable this feature you must add
17805"acpi_boot=on" to the kernel command line -- see the help entry
17806for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
17807the works...
17808
17809Restructured the configuration options to allow boot-time table
17810parsing support without inclusion of the ACPI Interpreter (and
17811other) code.
17812
17813NOTE: This release does not include fixes for the reported events,
17814power-down, and thermal passive cooling issues (coming soon).
17815
17816 3) ASL Compiler:
17817
17818Added additional typechecking for Fields within restricted access
17819Operation Regions.  All fields within EC and CMOS regions must be
17820declared with ByteAcc. All fields within SMBus regions must be
17821declared with the BufferAcc access type.
17822
17823Fixed a problem where the listing file output of control methods
17824no longer interleaved the actual AML code with the ASL source
17825code.
17826
17827
17828
17829
17830----------------------------------------
17831Summary of changes for this label: 11_09_01
17832
178331) ACPI CA Core Subsystem:
17834
17835Implemented ACPI 2.0-defined support for writes to fields with a
17836Buffer, String, or Integer source operand that is smaller than the
17837target field. In these cases, the source operand is zero-extended
17838to fill the target field.
17839
17840Fixed a problem where a Field starting bit offset (within the
17841parent operation region) was calculated incorrectly if the
17842
17843alignment of the field differed from the access width.  This
17844affected CreateWordField, CreateDwordField, CreateQwordField, and
17845possibly other fields that use the "AccessAny" keyword.
17846
17847Fixed a problem introduced in the 11_02_01 release where indirect
17848stores through method arguments did not operate correctly.
17849
178502) Linux:
17851
17852Implemented boot-time ACPI table parsing support
17853(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
17854facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
17855legacy BIOS interfaces (e.g. MPS) for the configuration of system
17856processors, memory, and interrupts during setup_arch().  Note that
17857this patch does not include the required architecture-specific
17858changes required to apply this information -- subsequent patches
17859will be posted for both IA32 and IA64 to achieve this.
17860
17861Added low-level sleep support for IA32 platforms, courtesy of Pat
17862Mochel. This allows IA32 systems to transition to/from various
17863sleeping states (e.g. S1, S3), although the lack of a centralized
17864driver model and power-manageable drivers will prevent its
17865(successful) use on most systems.
17866
17867Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
17868submenu, unified IA32 and IA64 options, added new "Boot using ACPI
17869tables" option, etc.
17870
17871Increased the default timeout for the EC driver from 1ms to 10ms
17872(1000 cycles of 10us) to try to address AE_TIME errors during EC
17873transactions.
17874
17875 ----------------------------------------
17876Summary of changes for this label: 11_02_01
17877
178781) ACPI CA Core Subsystem:
17879
17880ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
17881(QWordAcc keyword). All ACPI 2.0 64-bit support is now
17882implemented.
17883
17884OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
17885changes to support ACPI 2.0 Qword field access.  Read/Write
17886PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
17887accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
17888the value parameter for the address space handler interface is now
17889an ACPI_INTEGER.  OSL implementations of these interfaces must now
17890handle the case where the Width parameter is 64.
17891
17892Index Fields: Fixed a problem where unaligned bit assembly and
17893disassembly for IndexFields was not supported correctly.
17894
17895Index and Bank Fields:  Nested Index and Bank Fields are now
17896supported. During field access, a check is performed to ensure
17897that the value written to an Index or Bank register is not out of
17898the range of the register.  The Index (or Bank) register is
17899written before each access to the field data. Future support will
17900include allowing individual IndexFields to be wider than the
17901DataRegister width.
17902
17903Fields: Fixed a problem where the AML interpreter was incorrectly
17904attempting to write beyond the end of a Field/OpRegion.  This was
17905a boundary case that occurred when a DWORD field was written to a
17906BYTE access OpRegion, forcing multiple writes and causing the
17907interpreter to write one datum too many.
17908
17909Fields: Fixed a problem with Field/OpRegion access where the
17910starting bit address of a field was incorrectly calculated if the
17911current access type was wider than a byte (WordAcc, DwordAcc, or
17912QwordAcc).
17913
17914Fields: Fixed a problem where forward references to individual
17915FieldUnits (individual Field names within a Field definition) were
17916not resolved during the AML table load.
17917
17918Fields: Fixed a problem where forward references from a Field
17919definition to the parent Operation Region definition were not
17920resolved during the AML table load.
17921
17922Fields: Duplicate FieldUnit names within a scope are now detected
17923during AML table load.
17924
17925Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
17926returned an incorrect name for the root node.
17927
17928Code and Data Size: Code and Data optimizations have permitted new
17929feature development with an actual reduction in the library size.
17930Current core subsystem library sizes are shown below.  These are
17931the code and data sizes for the acpica.lib produced by the
17932Microsoft Visual C++ 6.0 compiler, and these values do not include
17933any ACPI driver or OSPM code.  The debug version of the code
17934includes the debug output trace mechanism and has a larger code
17935and data size.  Note that these values will vary depending on the
17936efficiency of the compiler and the compiler options used during
17937generation.
17938
17939  Previous Release (10_18_01):
17940     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
17941     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
17942
17943  Current Release:
17944     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
17945     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
17946
17947 2) Linux:
17948
17949Improved /proc processor output (Pavel Machek) Re-added
17950MODULE_LICENSE("GPL") to all modules.
17951
17952 3) ASL Compiler version X2030:
17953
17954Duplicate FieldUnit names within a scope are now detected and
17955flagged as errors.
17956
17957 4) Documentation:
17958
17959Programmer Reference updated to reflect OSL and address space
17960handler interface changes described above.
17961
17962----------------------------------------
17963Summary of changes for this label: 10_18_01
17964
17965ACPI CA Core Subsystem:
17966
17967Fixed a problem with the internal object reference count mechanism
17968that occasionally caused premature object deletion. This resolves
17969all of the outstanding problem reports where an object is deleted
17970in the middle of an interpreter evaluation.  Although this problem
17971only showed up in rather obscure cases, the solution to the
17972problem involved an adjustment of all reference counts involving
17973objects attached to namespace nodes.
17974
17975Fixed a problem with Field support in the interpreter where
17976writing to an aligned field whose length is an exact multiple (2
17977or greater) of the field access granularity would cause an attempt
17978to write beyond the end of the field.
17979
17980The top level AML opcode execution functions within the
17981interpreter have been renamed with a more meaningful and
17982consistent naming convention.  The modules exmonad.c and
17983exdyadic.c were eliminated.  New modules are exoparg1.c,
17984exoparg2.c, exoparg3.c, and exoparg6.c.
17985
17986Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
17987
17988Fixed a problem where the AML debugger was causing some internal
17989objects to not be deleted during subsystem termination.
17990
17991Fixed a problem with the external AcpiEvaluateObject interface
17992where the subsystem would fault if the named object to be
17993evaluated referred to a constant such as Zero, Ones, etc.
17994
17995Fixed a problem with IndexFields and BankFields where the
17996subsystem would fault if the index, data, or bank registers were
17997not defined in the same scope as the field itself.
17998
17999Added printf format string checking for compilers that support
18000this feature.  Corrected more than 50 instances of issues with
18001format specifiers within invocations of ACPI_DEBUG_PRINT
18002throughout the core subsystem code.
18003
18004The ASL "Revision" operator now returns the ACPI support level
18005implemented in the core - the value "2" since the ACPI 2.0 support
18006is more than 50% implemented.
18007
18008Enhanced the output of the AML debugger "dump namespace" command
18009to output in a more human-readable form.
18010
18011Current core subsystem library code sizes are shown below.  These
18012
18013are the code and data sizes for the acpica.lib produced by the
18014Microsoft Visual C++ 6.0 compiler, and these values do not include
18015any ACPI driver or OSPM code.  The debug version of the code
18016includes the full debug trace mechanism -- leading to a much
18017
18018larger code and data size.  Note that these values will vary
18019depending on the efficiency of the compiler and the compiler
18020options used during generation.
18021
18022     Previous Label (09_20_01):
18023     Non-Debug Version:    65K Code,     5K Data,     70K Total
18024     Debug Version:       138K Code,    58K Data,    196K Total
18025
18026     This Label:
18027
18028     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
18029     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
18030
18031Linux:
18032
18033Implemented a "Bad BIOS Blacklist" to track machines that have
18034known ASL/AML problems.
18035
18036Enhanced the /proc interface for the thermal zone driver and added
18037support for _HOT (the critical suspend trip point).  The 'info'
18038file now includes threshold/policy information, and allows setting
18039of _SCP (cooling preference) and _TZP (polling frequency) values
18040to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
18041frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
18042preference to the passive/quiet mode (if supported by the ASL).
18043
18044Implemented a workaround for a gcc bug that resuted in an OOPs
18045when loading the control method battery driver.
18046
18047 ----------------------------------------
18048Summary of changes for this label: 09_20_01
18049
18050 ACPI CA Core Subsystem:
18051
18052The AcpiEnableEvent and AcpiDisableEvent interfaces have been
18053modified to allow individual GPE levels to be flagged as wake-
18054enabled (i.e., these GPEs are to remain enabled when the platform
18055sleeps.)
18056
18057The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
18058support wake-enabled GPEs.  This means that upon entering the
18059sleep state, all GPEs that are not wake-enabled are disabled.
18060When leaving the sleep state, these GPEs are re-enabled.
18061
18062A local double-precision divide/modulo module has been added to
18063enhance portability to OS kernels where a 64-bit math library is
18064not available.  The new module is "utmath.c".
18065
18066Several optimizations have been made to reduce the use of CPU
18067stack.  Originally over 2K, the maximum stack usage is now below
180682K at 1860  bytes (1.82k)
18069
18070Fixed a problem with the AcpiGetFirmwareTable interface where the
18071root table pointer was not mapped into a logical address properly.
18072
18073Fixed a problem where a NULL pointer was being dereferenced in the
18074interpreter code for the ASL Notify operator.
18075
18076Fixed a problem where the use of the ASL Revision operator
18077returned an error. This operator now returns the current version
18078of the ACPI CA core subsystem.
18079
18080Fixed a problem where objects passed as control method parameters
18081to AcpiEvaluateObject were always deleted at method termination.
18082However, these objects may end up being stored into the namespace
18083by the called method.  The object reference count mechanism was
18084applied to these objects instead of a force delete.
18085
18086Fixed a problem where static strings or buffers (contained in the
18087AML code) that are declared as package elements within the ASL
18088code could cause a fault because the interpreter would attempt to
18089delete them.  These objects are now marked with the "static
18090object" flag to prevent any attempt to delete them.
18091
18092Implemented an interpreter optimization to use operands directly
18093from the state object instead of extracting the operands to local
18094variables.  This reduces stack use and code size, and improves
18095performance.
18096
18097The module exxface.c was eliminated as it was an unnecessary extra
18098layer of code.
18099
18100Current core subsystem library code sizes are shown below.  These
18101are the code and data sizes for the acpica.lib produced by the
18102Microsoft Visual C++ 6.0 compiler, and these values do not include
18103any ACPI driver or OSPM code.  The debug version of the code
18104includes the full debug trace mechanism -- leading to a much
18105larger code and data size.  Note that these values will vary
18106depending on the efficiency of the compiler and the compiler
18107options used during generation.
18108
18109  Non-Debug Version:  65K Code,   5K Data,   70K Total
18110(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
18111Total  (Previously 195K)
18112
18113Linux:
18114
18115Support for ACPI 2.0 64-bit integers has been added.   All ACPI
18116Integer objects are now 64 bits wide
18117
18118All Acpi data types and structures are now in lower case.  Only
18119Acpi macros are upper case for differentiation.
18120
18121 Documentation:
18122
18123Changes to the external interfaces as described above.
18124
18125 ----------------------------------------
18126Summary of changes for this label: 08_31_01
18127
18128 ACPI CA Core Subsystem:
18129
18130A bug with interpreter implementation of the ASL Divide operator
18131was found and fixed.  The implicit function return value (not the
18132explicit store operands) was returning the remainder instead of
18133the quotient.  This was a longstanding bug and it fixes several
18134known outstanding issues on various platforms.
18135
18136The ACPI_DEBUG_PRINT and function trace entry/exit macros have
18137been further optimized for size.  There are 700 invocations of the
18138DEBUG_PRINT macro alone, so each optimization reduces the size of
18139the debug version of the subsystem significantly.
18140
18141A stack trace mechanism has been implemented.  The maximum stack
18142usage is about 2K on 32-bit platforms.  The debugger command "stat
18143stack" will display the current maximum stack usage.
18144
18145All public symbols and global variables within the subsystem are
18146now prefixed with the string "Acpi".  This keeps all of the
18147symbols grouped together in a kernel map, and avoids conflicts
18148with other kernel subsystems.
18149
18150Most of the internal fixed lookup tables have been moved into the
18151code segment via the const operator.
18152
18153Several enhancements have been made to the interpreter to both
18154reduce the code size and improve performance.
18155
18156Current core subsystem library code sizes are shown below.  These
18157are the code and data sizes for the acpica.lib produced by the
18158Microsoft Visual C++ 6.0 compiler, and these values do not include
18159any ACPI driver or OSPM code.  The debug version of the code
18160includes the full debug trace mechanism which contains over 700
18161invocations of the DEBUG_PRINT macro, 500 function entry macro
18162invocations, and over 900 function exit macro invocations --
18163leading to a much larger code and data size.  Note that these
18164values will vary depending on the efficiency of the compiler and
18165the compiler options used during generation.
18166
18167        Non-Debug Version:  64K Code,   5K Data,   69K Total
18168Debug Version:     137K Code,  58K Data,  195K Total
18169
18170 Linux:
18171
18172Implemented wbinvd() macro, pending a kernel-wide definition.
18173
18174Fixed /proc/acpi/event to handle poll() and short reads.
18175
18176 ASL Compiler, version X2026:
18177
18178Fixed a problem introduced in the previous label where the AML
18179
18180code emitted for package objects produced packages with zero
18181length.
18182
18183 ----------------------------------------
18184Summary of changes for this label: 08_16_01
18185
18186ACPI CA Core Subsystem:
18187
18188The following ACPI 2.0 ASL operators have been implemented in the
18189AML interpreter (These are already supported by the Intel ASL
18190compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
18191ToBuffer.  Support for 64-bit AML constants is implemented in the
18192AML parser, debugger, and disassembler.
18193
18194The internal memory tracking mechanism (leak detection code) has
18195been upgraded to reduce the memory overhead (a separate tracking
18196block is no longer allocated for each memory allocation), and now
18197supports all of the internal object caches.
18198
18199The data structures and code for the internal object caches have
18200been coelesced and optimized so that there is a single cache and
18201memory list data structure and a single group of functions that
18202implement generic cache management.  This has reduced the code
18203size in both the debug and release versions of the subsystem.
18204
18205The DEBUG_PRINT macro(s) have been optimized for size and replaced
18206by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
18207different, because it generates a single call to an internal
18208function.  This results in a savings of about 90 bytes per
18209invocation, resulting in an overall code and data savings of about
1821016% in the debug version of the subsystem.
18211
18212 Linux:
18213
18214Fixed C3 disk corruption problems and re-enabled C3 on supporting
18215machines.
18216
18217Integrated low-level sleep code by Patrick Mochel.
18218
18219Further tweaked source code Linuxization.
18220
18221Other minor fixes.
18222
18223 ASL Compiler:
18224
18225Support for ACPI 2.0 variable length packages is fixed/completed.
18226
18227Fixed a problem where the optional length parameter for the ACPI
182282.0 ToString operator.
18229
18230Fixed multiple extraneous error messages when a syntax error is
18231detected within the declaration line of a control method.
18232
18233 ----------------------------------------
18234Summary of changes for this label: 07_17_01
18235
18236ACPI CA Core Subsystem:
18237
18238Added a new interface named AcpiGetFirmwareTable to obtain any
18239ACPI table via the ACPI signature.  The interface can be called at
18240any time during kernel initialization, even before the kernel
18241virtual memory manager is initialized and paging is enabled.  This
18242allows kernel subsystems to obtain ACPI tables very early, even
18243before the ACPI CA subsystem is initialized.
18244
18245Fixed a problem where Fields defined with the AnyAcc attribute
18246could be resolved to the incorrect address under the following
18247conditions: 1) the field width is larger than 8 bits and 2) the
18248parent operation region is not defined on a DWORD boundary.
18249
18250Fixed a problem where the interpreter is not being locked during
18251namespace initialization (during execution of the _INI control
18252methods), causing an error when an attempt is made to release it
18253later.
18254
18255ACPI 2.0 support in the AML Interpreter has begun and will be
18256ongoing throughout the rest of this year.  In this label, The Mod
18257operator is implemented.
18258
18259Added a new data type to contain full PCI addresses named
18260ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
18261and Function values.
18262
18263 Linux:
18264
18265Enhanced the Linux version of the source code to change most
18266capitalized ACPI type names to lowercase. For example, all
18267instances of ACPI_STATUS are changed to acpi_status.  This will
18268result in a large diff, but the change is strictly cosmetic and
18269aligns the CA code closer to the Linux coding standard.
18270
18271OSL Interfaces:
18272
18273The interfaces to the PCI configuration space have been changed to
18274add the PCI Segment number and to split the single 32-bit combined
18275DeviceFunction field into two 16-bit fields.  This was
18276accomplished by moving the four values that define an address in
18277PCI configuration space (segment, bus, device, and function) to
18278the new ACPI_PCI_ID structure.
18279
18280The changes to the PCI configuration space interfaces led to a
18281reexamination of the complete set of address space access
18282interfaces for PCI, I/O, and Memory.  The previously existing 18
18283interfaces have proven difficult to maintain (any small change
18284must be propagated across at least 6 interfaces) and do not easily
18285allow for future expansion to 64 bits if necessary.  Also, on some
18286systems, it would not be appropriate to demultiplex the access
18287width (8, 16, 32,or 64) before calling the OSL if the
18288corresponding native OS interfaces contain a similar access width
18289parameter.  For these reasons, the 18 address space interfaces
18290have been replaced by these 6 new ones:
18291
18292AcpiOsReadPciConfiguration
18293AcpiOsWritePciConfiguration
18294AcpiOsReadMemory
18295AcpiOsWriteMemory
18296AcpiOsReadPort
18297AcpiOsWritePort
18298
18299Added a new interface named AcpiOsGetRootPointer to allow the OSL
18300to perform the platform and/or OS-specific actions necessary to
18301obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
18302interface will simply call down to the CA core to perform the low-
18303memory search for the table.  On IA-64, the RSDP is obtained from
18304EFI.  Migrating this interface to the OSL allows the CA core to
18305
18306remain OS and platform independent.
18307
18308Added a new interface named AcpiOsSignal to provide a generic
18309"function code and pointer" interface for various miscellaneous
18310signals and notifications that must be made to the host OS.   The
18311first such signals are intended to support the ASL Fatal and
18312Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
18313interface has been obsoleted.
18314
18315The definition of the AcpiFormatException interface has been
18316changed to simplify its use.  The caller no longer must supply a
18317buffer to the call; A pointer to a const string is now returned
18318directly.  This allows the call to be easily used in printf
18319statements, etc. since the caller does not have to manage a local
18320buffer.
18321
18322
18323 ASL Compiler, Version X2025:
18324
18325The ACPI 2.0 Switch/Case/Default operators have been implemented
18326and are fully functional.  They will work with all ACPI 1.0
18327interpreters, since the operators are simply translated to If/Else
18328pairs.
18329
18330The ACPI 2.0 ElseIf operator is implemented and will also work
18331with 1.0 interpreters, for the same reason.
18332
18333Implemented support for ACPI 2.0 variable-length packages.  These
18334packages have a separate opcode, and their size is determined by
18335the interpreter at run-time.
18336
18337Documentation The ACPI CA Programmer Reference has been updated to
18338reflect the new interfaces and changes to existing interfaces.
18339
18340 ------------------------------------------
18341Summary of changes for this label: 06_15_01
18342
18343 ACPI CA Core Subsystem:
18344
18345Fixed a problem where a DWORD-accessed field within a Buffer
18346object would get its byte address inadvertently rounded down to
18347the nearest DWORD.  Buffers are always Byte-accessible.
18348
18349 ASL Compiler, version X2024:
18350
18351Fixed a problem where the Switch() operator would either fault or
18352hang the compiler.  Note however, that the AML code for this ACPI
183532.0 operator is not yet implemented.
18354
18355Compiler uses the new AcpiOsGetTimer interface to obtain compile
18356timings.
18357
18358Implementation of the CreateField operator automatically converts
18359a reference to a named field within a resource descriptor from a
18360byte offset to a bit offset if required.
18361
18362Added some missing named fields from the resource descriptor
18363support. These are the names that are automatically created by the
18364compiler to reference fields within a descriptor.  They are only
18365valid at compile time and are not passed through to the AML
18366interpreter.
18367
18368Resource descriptor named fields are now typed as Integers and
18369subject to compile-time typechecking when used in expressions.
18370
18371 ------------------------------------------
18372Summary of changes for this label: 05_18_01
18373
18374 ACPI CA Core Subsystem:
18375
18376Fixed a couple of problems in the Field support code where bits
18377from adjacent fields could be returned along with the proper field
18378bits. Restructured the field support code to improve performance,
18379readability and maintainability.
18380
18381New DEBUG_PRINTP macro automatically inserts the procedure name
18382into the output, saving hundreds of copies of procedure name
18383strings within the source, shrinking the memory footprint of the
18384debug version of the core subsystem.
18385
18386 Source Code Structure:
18387
18388The source code directory tree was restructured to reflect the
18389current organization of the component architecture.  Some files
18390and directories have been moved and/or renamed.
18391
18392 Linux:
18393
18394Fixed leaking kacpidpc processes.
18395
18396Fixed queueing event data even when /proc/acpi/event is not
18397opened.
18398
18399 ASL Compiler, version X2020:
18400
18401Memory allocation performance enhancement - over 24X compile time
18402improvement on large ASL files.  Parse nodes and namestring
18403buffers are now allocated from a large internal compiler buffer.
18404
18405The temporary .SRC file is deleted unless the "-s" option is
18406specified
18407
18408The "-d" debug output option now sends all output to the .DBG file
18409instead of the console.
18410
18411"External" second parameter is now optional
18412
18413"ElseIf" syntax now properly allows the predicate
18414
18415Last operand to "Load" now recognized as a Target operand
18416
18417Debug object can now be used anywhere as a normal object.
18418
18419ResourceTemplate now returns an object of type BUFFER
18420
18421EISAID now returns an object of type INTEGER
18422
18423"Index" now works with a STRING operand
18424
18425"LoadTable" now accepts optional parameters
18426
18427"ToString" length parameter is now optional
18428
18429"Interrupt (ResourceType," parse error fixed.
18430
18431"Register" with a user-defined region space parse error fixed
18432
18433Escaped backslash at the end of a string ("\\") scan/parse error
18434fixed
18435
18436"Revision" is now an object of type INTEGER.
18437
18438
18439
18440------------------------------------------
18441Summary of changes for this label: 05_02_01
18442
18443Linux:
18444
18445/proc/acpi/event now blocks properly.
18446
18447Removed /proc/sys/acpi. You can still dump your DSDT from
18448/proc/acpi/dsdt.
18449
18450 ACPI CA Core Subsystem:
18451
18452Fixed a problem introduced in the previous label where some of the
18453"small" resource descriptor types were not recognized.
18454
18455Improved error messages for the case where an ASL Field is outside
18456the range of the parent operation region.
18457
18458 ASL Compiler, version X2018:
18459
18460
18461Added error detection for ASL Fields that extend beyond the length
18462of the parent operation region (only if the length of the region
18463is known at compile time.)  This includes fields that have a
18464minimum access width that is smaller than the parent region, and
18465individual field units that are partially or entirely beyond the
18466extent of the parent.
18467
18468
18469
18470------------------------------------------
18471Summary of changes for this label: 04_27_01
18472
18473 ACPI CA Core Subsystem:
18474
18475Fixed a problem where the namespace mutex could be released at the
18476wrong time during execution of AcpiRemoveAddressSpaceHandler.
18477
18478Added optional thread ID output for debug traces, to simplify
18479debugging of multiple threads.  Added context switch notification
18480when the debug code realizes that a different thread is now
18481executing ACPI code.
18482
18483Some additional external data types have been prefixed with the
18484string "ACPI_" for consistency.  This may effect existing code.
18485The data types affected are the external callback typedefs - e.g.,
18486
18487WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
18488
18489 Linux:
18490
18491Fixed an issue with the OSL semaphore implementation where a
18492thread was waking up with an error from receiving a SIGCHLD
18493signal.
18494
18495Linux version of ACPI CA now uses the system C library for string
18496manipulation routines instead of a local implementation.
18497
18498Cleaned up comments and removed TBDs.
18499
18500 ASL Compiler, version X2017:
18501
18502Enhanced error detection and reporting for all file I/O
18503operations.
18504
18505 Documentation:
18506
18507Programmer Reference updated to version 1.06.
18508
18509
18510
18511------------------------------------------
18512Summary of changes for this label: 04_13_01
18513
18514 ACPI CA Core Subsystem:
18515
18516Restructured support for BufferFields and RegionFields.
18517BankFields support is now fully operational.  All known 32-bit
18518limitations on field sizes have been removed.  Both BufferFields
18519and (Operation) RegionFields are now supported by the same field
18520management code.
18521
18522Resource support now supports QWORD address and IO resources. The
1852316/32/64 bit address structures and the Extended IRQ structure
18524have been changed to properly handle Source Resource strings.
18525
18526A ThreadId of -1 is now used to indicate a "mutex not acquired"
18527condition internally and must never be returned by AcpiOsThreadId.
18528This reserved value was changed from 0 since Unix systems allow a
18529thread ID of 0.
18530
18531Linux:
18532
18533Driver code reorganized to enhance portability
18534
18535Added a kernel configuration option to control ACPI_DEBUG
18536
18537Fixed the EC driver to honor _GLK.
18538
18539ASL Compiler, version X2016:
18540
18541Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
18542address space was set to 0, not 0x7f as it should be.
18543
18544 ------------------------------------------
18545Summary of changes for this label: 03_13_01
18546
18547 ACPI CA Core Subsystem:
18548
18549During ACPI initialization, the _SB_._INI method is now run if
18550present.
18551
18552Notify handler fix - notifies are deferred until the parent method
18553completes execution.  This fixes the "mutex already acquired"
18554issue seen occasionally.
18555
18556Part of the "implicit conversion" rules in ACPI 2.0 have been
18557found to cause compatibility problems with existing ASL/AML.  The
18558convert "result-to-target-type" implementation has been removed
18559for stores to method Args and Locals.  Source operand conversion
18560is still fully implemented.  Possible changes to ACPI 2.0
18561specification pending.
18562
18563Fix to AcpiRsCalculatePciRoutingTableLength to return correct
18564length.
18565
18566Fix for compiler warnings for 64-bit compiles.
18567
18568 Linux:
18569
18570/proc output aligned for easier parsing.
18571
18572Release-version compile problem fixed.
18573
18574New kernel configuration options documented in Configure.help.
18575
18576IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
18577context" message.
18578
18579 OSPM:
18580
18581Power resource driver integrated with bus manager.
18582
18583Fixed kernel fault during active cooling for thermal zones.
18584
18585Source Code:
18586
18587The source code tree has been restructured.
18588
18589
18590
18591------------------------------------------
18592Summary of changes for this label: 03_02_01
18593
18594 Linux OS Services Layer (OSL):
18595
18596Major revision of all Linux-specific code.
18597
18598Modularized all ACPI-specific drivers.
18599
18600Added new thermal zone and power resource drivers.
18601
18602Revamped /proc interface (new functionality is under /proc/acpi).
18603
18604New kernel configuration options.
18605
18606 Linux known issues:
18607
18608New kernel configuration options not documented in Configure.help
18609yet.
18610
18611
18612Module dependencies not currently implemented. If used, they
18613should be loaded in this order: busmgr, power, ec, system,
18614processor, battery, ac_adapter, button, thermal.
18615
18616Modules will not load if CONFIG_MODVERSION is set.
18617
18618IBM 600E - entering S5 may reboot instead of shutting down.
18619
18620IBM 600E - Sleep button may generate "Invalid <NULL> context"
18621message.
18622
18623Some systems may fail with "execution mutex already acquired"
18624message.
18625
18626 ACPI CA Core Subsystem:
18627
18628Added a new OSL Interface, AcpiOsGetThreadId.  This was required
18629for the  deadlock detection code. Defined to return a non-zero, 32-
18630bit thread ID for the currently executing thread.  May be a non-
18631zero constant integer on single-thread systems.
18632
18633Implemented deadlock detection for internal subsystem mutexes.  We
18634may add conditional compilation for this code (debug only) later.
18635
18636ASL/AML Mutex object semantics are now fully supported.  This
18637includes multiple acquires/releases by owner and support for the
18638
18639Mutex SyncLevel parameter.
18640
18641A new "Force Release" mechanism automatically frees all ASL
18642Mutexes that have been acquired but not released when a thread
18643exits the interpreter.  This forces conformance to the ACPI spec
18644("All mutexes must be released when an invocation exits") and
18645prevents deadlocked ASL threads.  This mechanism can be expanded
18646(later) to monitor other resource acquisitions if OEM ASL code
18647continues to misbehave (which it will).
18648
18649Several new ACPI exception codes have been added for the Mutex
18650support.
18651
18652Recursive method calls are now allowed and supported (the ACPI
18653spec does in fact allow recursive method calls.)  The number of
18654recursive calls is subject to the restrictions imposed by the
18655SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
18656parameter.
18657
18658Implemented support for the SyncLevel parameter for control
18659methods (ACPI 2.0 feature)
18660
18661Fixed a deadlock problem when multiple threads attempted to use
18662the interpreter.
18663
18664Fixed a problem where the string length of a String package
18665element was not always set in a package returned from
18666AcpiEvaluateObject.
18667
18668Fixed a problem where the length of a String package element was
18669not always included in the length of the overall package returned
18670from AcpiEvaluateObject.
18671
18672Added external interfaces (Acpi*) to the ACPI debug memory
18673manager.  This manager keeps a list of all outstanding
18674allocations, and can therefore detect memory leaks and attempts to
18675free memory blocks more than once. Useful for code such as the
18676power manager, etc.  May not be appropriate for device drivers.
18677Performance with the debug code enabled is slow.
18678
18679The ACPI Global Lock is now an optional hardware element.
18680
18681 ASL Compiler Version X2015:
18682
18683Integrated changes to allow the compiler to be generated on
18684multiple platforms.
18685
18686Linux makefile added to generate the compiler on Linux
18687
18688 Source Code:
18689
18690All platform-specific headers have been moved to their own
18691subdirectory, Include/Platform.
18692
18693New source file added, Interpreter/ammutex.c
18694
18695New header file, Include/acstruct.h
18696
18697 Documentation:
18698
18699The programmer reference has been updated for the following new
18700interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
18701
18702 ------------------------------------------
18703Summary of changes for this label: 02_08_01
18704
18705Core ACPI CA Subsystem: Fixed a problem where an error was
18706incorrectly returned if the return resource buffer was larger than
18707the actual data (in the resource interfaces).
18708
18709References to named objects within packages are resolved to the
18710
18711full pathname string before packages are returned directly (via
18712the AcpiEvaluateObject interface) or indirectly via the resource
18713interfaces.
18714
18715Linux OS Services Layer (OSL):
18716
18717Improved /proc battery interface.
18718
18719
18720Added C-state debugging output and other miscellaneous fixes.
18721
18722ASL Compiler Version X2014:
18723
18724All defined method arguments can now be used as local variables,
18725including the ones that are not actually passed in as parameters.
18726The compiler tracks initialization of the arguments and issues an
18727exception if they are used without prior assignment (just like
18728locals).
18729
18730The -o option now specifies a filename prefix that is used for all
18731output files, including the AML output file.  Otherwise, the
18732default behavior is as follows:  1) the AML goes to the file
18733specified in the DSDT.  2) all other output files use the input
18734source filename as the base.
18735
18736 ------------------------------------------
18737Summary of changes for this label: 01_25_01
18738
18739Core ACPI CA Subsystem: Restructured the implementation of object
18740store support within the  interpreter.  This includes support for
18741the Store operator as well  as any ASL operators that include a
18742target operand.
18743
18744Partially implemented support for Implicit Result-to-Target
18745conversion. This is when a result object is converted on the fly
18746to the type of  an existing target object.  Completion of this
18747support is pending  further analysis of the ACPI specification
18748concerning this matter.
18749
18750CPU-specific code has been removed from the subsystem (hardware
18751directory).
18752
18753New Power Management Timer functions added
18754
18755Linux OS Services Layer (OSL): Moved system state transition code
18756to the core, fixed it, and modified  Linux OSL accordingly.
18757
18758Fixed C2 and C3 latency calculations.
18759
18760
18761We no longer use the compilation date for the version message on
18762initialization, but retrieve the version from AcpiGetSystemInfo().
18763
18764Incorporated for fix Sony VAIO machines.
18765
18766Documentation:  The Programmer Reference has been updated and
18767reformatted.
18768
18769
18770ASL Compiler:  Version X2013: Fixed a problem where the line
18771numbering and error reporting could get out  of sync in the
18772presence of multiple include files.
18773
18774 ------------------------------------------
18775Summary of changes for this label: 01_15_01
18776
18777Core ACPI CA Subsystem:
18778
18779Implemented support for type conversions in the execution of the
18780ASL  Concatenate operator (The second operand is converted to
18781match the type  of the first operand before concatenation.)
18782
18783Support for implicit source operand conversion is partially
18784implemented.   The ASL source operand types Integer, Buffer, and
18785String are freely  interchangeable for most ASL operators and are
18786converted by the interpreter  on the fly as required.  Implicit
18787Target operand conversion (where the  result is converted to the
18788target type before storing) is not yet implemented.
18789
18790Support for 32-bit and 64-bit BCD integers is implemented.
18791
18792Problem fixed where a field read on an aligned field could cause a
18793read  past the end of the field.
18794
18795New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
18796does not return a value, but the caller expects one.  (The ASL
18797compiler flags this as a warning.)
18798
18799ASL Compiler:
18800
18801Version X2011:
188021. Static typechecking of all operands is implemented. This
18803prevents the use of invalid objects (such as using a Package where
18804an Integer is required) at compile time instead of at interpreter
18805run-time.
188062. The ASL source line is printed with ALL errors and warnings.
188073. Bug fix for source EOF without final linefeed.
188084. Debug option is split into a parse trace and a namespace trace.
188095. Namespace output option (-n) includes initial values for
18810integers and strings.
188116. Parse-only option added for quick syntax checking.
188127. Compiler checks for duplicate ACPI name declarations
18813
18814Version X2012:
188151. Relaxed typechecking to allow interchangeability between
18816strings, integers, and buffers.  These types are now converted by
18817the interpreter at runtime.
188182. Compiler reports time taken by each internal subsystem in the
18819debug         output file.
18820
18821
18822 ------------------------------------------
18823Summary of changes for this label: 12_14_00
18824
18825ASL Compiler:
18826
18827This is the first official release of the compiler. Since the
18828compiler requires elements of the Core Subsystem, this label
18829synchronizes everything.
18830
18831------------------------------------------
18832Summary of changes for this label: 12_08_00
18833
18834
18835Fixed a problem where named references within the ASL definition
18836of both OperationRegions and CreateXXXFields did not work
18837properly.  The symptom was an AE_AML_OPERAND_TYPE during
18838initialization of the region/field. This is similar (but not
18839related internally) to the problem that was fixed in the last
18840label.
18841
18842Implemented both 32-bit and 64-bit support for the BCD ASL
18843functions ToBCD and FromBCD.
18844
18845Updated all legal headers to include "2000" in the copyright
18846years.
18847
18848 ------------------------------------------
18849Summary of changes for this label: 12_01_00
18850
18851Fixed a problem where method invocations within the ASL definition
18852of both OperationRegions and CreateXXXFields did not work
18853properly.  The symptom was an AE_AML_OPERAND_TYPE during
18854initialization of the region/field:
18855
18856  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
18857[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
18858(0x3005)
18859
18860Fixed a problem where operators with more than one nested
18861subexpression would fail.  The symptoms were varied, by mostly
18862AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
18863problem that has gone unnoticed until now.
18864
18865  Subtract (Add (1,2), Multiply (3,4))
18866
18867Fixed a problem where AcpiGetHandle didn't quite get fixed in the
18868previous build (The prefix part of a relative path was handled
18869incorrectly).
18870
18871Fixed a problem where Operation Region initialization failed if
18872the operation region name was a "namepath" instead of a simple
18873"nameseg". Symptom was an AE_NO_OPERAND error.
18874
18875Fixed a problem where an assignment to a local variable via the
18876indirect RefOf mechanism only worked for the first such
18877assignment.  Subsequent assignments were ignored.
18878
18879 ------------------------------------------
18880Summary of changes for this label: 11_15_00
18881
18882ACPI 2.0 table support with backwards support for ACPI 1.0 and the
188830.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
18884the AML  interpreter does NOT have support for the new 2.0 ASL
18885grammar terms at this time.
18886
18887All ACPI hardware access is via the GAS structures in the ACPI 2.0
18888FADT.
18889
18890All physical memory addresses across all platforms are now 64 bits
18891wide. Logical address width remains dependent on the platform
18892(i.e., "void *").
18893
18894AcpiOsMapMemory interface changed to a 64-bit physical address.
18895
18896The AML interpreter integer size is now 64 bits, as per the ACPI
188972.0 specification.
18898
18899For backwards compatibility with ACPI 1.0, ACPI tables with a
18900revision number less than 2 use 32-bit integers only.
18901
18902Fixed a problem where the evaluation of OpRegion operands did not
18903always resolve them to numbers properly.
18904
18905------------------------------------------
18906Summary of changes for this label: 10_20_00
18907
18908Fix for CBN_._STA issue.  This fix will allow correct access to
18909CBN_ OpRegions when the _STA returns 0x8.
18910
18911Support to convert ACPI constants (Ones, Zeros, One) to actual
18912values before a package object is returned
18913
18914Fix for method call as predicate to if/while construct causing
18915incorrect if/while behavior
18916
18917Fix for Else block package lengths sometimes calculated wrong (if
18918block > 63 bytes)
18919
18920Fix for Processor object length field, was always zero
18921
18922Table load abort if FACP sanity check fails
18923
18924Fix for problem with Scope(name) if name already exists
18925
18926Warning emitted if a named object referenced cannot be found
18927(resolved) during method execution.
18928
18929
18930
18931
18932
18933------------------------------------------
18934Summary of changes for this label: 9_29_00
18935
18936New table initialization interfaces: AcpiInitializeSubsystem no
18937longer has any parameters AcpiFindRootPointer - Find the RSDP (if
18938necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
18939>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
18940AcpiLoadTables
18941
18942Note: These interface changes require changes to all existing OSDs
18943
18944The PCI_Config default address space handler is always installed
18945at the root namespace object.
18946
18947-------------------------------------------
18948Summary of changes for this label: 09_15_00
18949
18950The new initialization architecture is implemented.  New
18951interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
18952AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
18953
18954(Namespace is automatically loaded when a table is loaded)
18955
18956The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1895752 bytes to 32 bytes.  There is usually one of these for every
18958namespace object, so the memory savings is significant.
18959
18960Implemented just-in-time evaluation of the CreateField operators.
18961
18962Bug fixes for IA-64 support have been integrated.
18963
18964Additional code review comments have been implemented
18965
18966The so-called "third pass parse" has been replaced by a final walk
18967through the namespace to initialize all operation regions (address
18968spaces) and fields that have not yet been initialized during the
18969execution of the various _INI and REG methods.
18970
18971New file - namespace/nsinit.c
18972
18973-------------------------------------------
18974Summary of changes for this label: 09_01_00
18975
18976Namespace manager data structures have been reworked to change the
18977primary  object from a table to a single object.  This has
18978resulted in dynamic memory  savings of 3X within the namespace and
189792X overall in the ACPI CA subsystem.
18980
18981Fixed problem where the call to AcpiEvFindPciRootBuses was
18982inadvertently left  commented out.
18983
18984Reduced the warning count when generating the source with the GCC
18985compiler.
18986
18987Revision numbers added to each module header showing the
18988SourceSafe version of the file.  Please refer to this version
18989number when giving us feedback or comments on individual modules.
18990
18991The main object types within the subsystem have been renamed to
18992clarify their  purpose:
18993
18994ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
18995ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
18996ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
18997
18998NOTE: no changes to the initialization sequence are included in
18999this label.
19000
19001-------------------------------------------
19002Summary of changes for this label: 08_23_00
19003
19004Fixed problem where TerminateControlMethod was being called
19005multiple times per  method
19006
19007Fixed debugger problem where single stepping caused a semaphore to
19008be  oversignalled
19009
19010Improved performance through additional parse object caching -
19011added  ACPI_EXTENDED_OP type
19012
19013-------------------------------------------
19014Summary of changes for this label: 08_10_00
19015
19016Parser/Interpreter integration:  Eliminated the creation of
19017complete parse trees  for ACPI tables and control methods.
19018Instead, parse subtrees are created and  then deleted as soon as
19019they are processed (Either entered into the namespace or  executed
19020by the interpreter).  This reduces the use of dynamic kernel
19021memory  significantly. (about 10X)
19022
19023Exception codes broken into classes and renumbered.  Be sure to
19024recompile all  code that includes acexcep.h.  Hopefully we won't
19025have to renumber the codes  again now that they are split into
19026classes (environment, programmer, AML code,  ACPI table, and
19027internal).
19028
19029Fixed some additional alignment issues in the Resource Manager
19030subcomponent
19031
19032Implemented semaphore tracking in the AcpiExec utility, and fixed
19033several places  where mutexes/semaphores were being unlocked
19034without a corresponding lock  operation.  There are no known
19035semaphore or mutex "leaks" at this time.
19036
19037Fixed the case where an ASL Return operator is used to return an
19038unnamed  package.
19039
19040-------------------------------------------
19041Summary of changes for this label: 07_28_00
19042
19043Fixed a problem with the way addresses were calculated in
19044AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
19045manifested itself when a Field was  created with WordAccess or
19046DwordAccess, but the field unit defined within the  Field was less
19047
19048than a Word or Dword.
19049
19050Fixed a problem in AmlDumpOperands() module's loop to pull
19051operands off of the  operand stack to display information. The
19052problem manifested itself as a TLB  error on 64-bit systems when
19053accessing an operand stack with two or more  operands.
19054
19055Fixed a problem with the PCI configuration space handlers where
19056context was  getting confused between accesses. This required a
19057change to the generic address  space handler and address space
19058setup definitions. Handlers now get both a  global handler context
19059(this is the one passed in by the user when executing
19060AcpiInstallAddressSpaceHandler() and a specific region context
19061that is unique to  each region (For example, the _ADR, _SEG and
19062_BBN values associated with a  specific region). The generic
19063function definitions have changed to the  following:
19064
19065typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
19066UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
19067*HandlerContext, // This used to be void *Context void
19068*RegionContext); // This is an additional parameter
19069
19070typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
19071RegionHandle, UINT32 Function, void *HandlerContext,  void
19072**RegionContext); // This used to be **ReturnContext
19073
19074-------------------------------------------
19075Summary of changes for this label: 07_21_00
19076
19077Major file consolidation and rename.  All files within the
19078interpreter have been  renamed as well as most header files.  This
19079was done to prevent collisions with  existing files in the host
19080OSs -- filenames such as "config.h" and "global.h"  seem to be
19081quite common.  The VC project files have been updated.  All
19082makefiles  will require modification.
19083
19084The parser/interpreter integration continues in Phase 5 with the
19085implementation  of a complete 2-pass parse (the AML is parsed
19086twice) for each table;  This  avoids the construction of a huge
19087parse tree and therefore reduces the amount of  dynamic memory
19088required by the subsystem.  Greater use of the parse object cache
19089means that performance is unaffected.
19090
19091Many comments from the two code reviews have been rolled in.
19092
19093The 64-bit alignment support is complete.
19094
19095-------------------------------------------
19096Summary of changes for this label: 06_30_00
19097
19098With a nod and a tip of the hat to the technology of yesteryear,
19099we've added  support in the source code for 80 column output
19100devices.  The code is now mostly  constrained to 80 columns or
19101less to support environments and editors that 1)  cannot display
19102or print more than 80 characters on a single line, and 2) cannot
19103disable line wrapping.
19104
19105A major restructuring of the namespace data structure has been
19106completed.  The  result is 1) cleaner and more
19107understandable/maintainable code, and 2) a  significant reduction
19108in the dynamic memory requirement for each named ACPI  object
19109(almost half).
19110
19111-------------------------------------------
19112Summary of changes for this label: 06_23_00
19113
19114Linux support has been added.  In order to obtain approval to get
19115the ACPI CA  subsystem into the Linux kernel, we've had to make
19116quite a few changes to the  base subsystem that will affect all
19117users (all the changes are generic and OS- independent).  The
19118effects of these global changes have been somewhat far  reaching.
19119Files have been merged and/or renamed and interfaces have been
19120renamed.   The major changes are described below.
19121
19122Osd* interfaces renamed to AcpiOs* to eliminate namespace
19123pollution/confusion  within our target kernels.  All OSD
19124interfaces must be modified to match the new  naming convention.
19125
19126Files merged across the subsystem.  A number of the smaller source
19127and header  files have been merged to reduce the file count and
19128increase the density of the  existing files.  There are too many
19129to list here.  In general, makefiles that  call out individual
19130files will require rebuilding.
19131
19132Interpreter files renamed.  All interpreter files now have the
19133prefix am*  instead of ie* and is*.
19134
19135Header files renamed:  The acapi.h file is now acpixf.h.  The
19136acpiosd.h file is  now acpiosxf.h.  We are removing references to
19137the acronym "API" since it is  somewhat windowsy. The new name is
19138"external interface" or xface or xf in the  filenames.j
19139
19140
19141All manifest constants have been forced to upper case (some were
19142mixed case.)   Also, the string "ACPI_" has been prepended to many
19143(not all) of the constants,  typedefs, and structs.
19144
19145The globals "DebugLevel" and "DebugLayer" have been renamed
19146"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
19147
19148All other globals within the subsystem are now prefixed with
19149"AcpiGbl_" Internal procedures within the subsystem are now
19150prefixed with "Acpi" (with only  a few exceptions).  The original
19151two-letter abbreviation for the subcomponent  remains after "Acpi"
19152- for example, CmCallocate became AcpiCmCallocate.
19153
19154Added a source code translation/conversion utility.  Used to
19155generate the Linux  source code, it can be modified to generate
19156other types of source as well. Can  also be used to cleanup
19157existing source by removing extraneous spaces and blank  lines.
19158Found in tools/acpisrc/*
19159
19160OsdUnMapMemory was renamed to OsdUnmapMemory and then
19161AcpiOsUnmapMemory.  (UnMap  became Unmap).
19162
19163A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
19164When set to  one, this indicates that the caller wants to use the
19165
19166semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
19167both types.  However, implementers of this  call may want to use
19168different OS primitives depending on the type of semaphore
19169requested.  For example, some operating systems provide separate
19170
19171"mutex" and  "semaphore" interfaces - where the mutex interface is
19172much faster because it  doesn't have all the overhead of a full
19173semaphore implementation.
19174
19175Fixed a deadlock problem where a method that accesses the PCI
19176address space can  block forever if it is the first access to the
19177space.
19178
19179-------------------------------------------
19180Summary of changes for this label: 06_02_00
19181
19182Support for environments that cannot handle unaligned data
19183accesses (e.g.  firmware and OS environments devoid of alignment
19184handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
19185been added (via configurable macros) in  these three areas: -
19186Transfer of data from the raw AML byte stream is done via byte
19187moves instead of    word/dword/qword moves. - External objects are
19188aligned within the user buffer, including package   elements (sub-
19189objects). - Conversion of name strings to UINT32 Acpi Names is now
19190done byte-wise.
19191
19192The Store operator was modified to mimic Microsoft's
19193implementation when storing  to a Buffer Field.
19194
19195Added a check of the BM_STS bit before entering C3.
19196
19197The methods subdirectory has been obsoleted and removed.  A new
19198file, cmeval.c  subsumes the functionality.
19199
19200A 16-bit (DOS) version of AcpiExec has been developed.  The
19201makefile is under  the acpiexec directory.
19202