xref: /dragonfly/sys/contrib/dev/acpica/changes.txt (revision e4adeac1)
1----------------------------------------
205 January 2021. Summary of changes for version 20210105:
3
4This release is available at https://acpica.org/downloads
5
6
71) ACPICA kernel-resident subsystem:
8
9Updated all copyrights to 2021. This affects all ACPICA source code
10modules.
11
122) iASL Compiler/Disassembler and ACPICA tools:
13
14ASL test suite (ASLTS): Updated all copyrights to 2021.
15
16Tools and utilities: Updated all signon copyrights to 2021.
17
18iASL Table Compiler: Removed support for obsolete ACPI tables: VRTC,
19MTMR. Al Stone.
20
21
22----------------------------------------
2317 December 2020. Summary of changes for version 20201217:
24
25This release is available at https://acpica.org/downloads
26
27
281) ACPICA kernel-resident subsystem:
29
30Note: The implementation of ACPI 6.4 is underway, and is expected to be
31mostly finished next month, when ACPI 6.4 is released.
32
33From qzed:- fixed-ae-class-macros. Fix exception code class checks. Added
34several new macros, such as ACPI_CNTL_EXCEPTION(Status) in order to
35enable this.
36
37AcpiExec/iASL/AcpiHelp: Added a few changes for support of GCC 10.2.0.
38These included a few casts, as well as a null pointer check.
39
40Fix -Wfallthrough: GCC 7.1 gained -Wimplicit-fallthrough to warn on
41implicit fallthrough, as well as __attribute__((__fallthrough__)) and
42comments to explicitly denote that cases of fallthrough were intentional.
43Clang also supports this warning and statement attribute, but not the
44comment form. Added a new macro, ACPI_FALLTHROUGH to support this feature
45of GCC. With assistance from @nickdesaulniers.
46
472) iASL Compiler/Disassembler and ACPICA tools:
48
49Added improvement to method call analysis by saving the return type and
50relaxing certain cases of type checking.
51
52iASL Table Compiler: Improved info messages. Added a message to the -T
53option for when the default template (DSDT) is used.
54Also added a note for when multiple SSDTs are created with a DSDT that
55the SSDTs are created in the same file as the DSDT.
56
57
58----------------------------------------
59
6013 November 2020. Summary of changes for version 20201113:
61
62This release is available at https://acpica.org/downloads
63
64
651) ACPICA kernel-resident subsystem:
66
67Interpreter: fixed a memory leak by using use existing buffer in _HID
68repair. There was a memory leak that occurred when a _CID object is
69defined as a package containing string objects. When _CID is checked for
70any possible repairs, it calls a helper function to repair _HID (because
71_CID basically contains multiple _HID entries). The _HID repair function
72assumes that string objects are standalone objects that are not contained
73inside of any packages. The _HID repair function replaced the string
74object with a brand new object and attempted to delete the old object by
75decrementing the reference count of the old object. Strings inside of
76packages have a reference count of 2 so the _HID repair function leaves
77this object in a dangling state and causes a memory leak. Instead of
78allocating a brand new object and removing the old object, use the
79existing object when repairing the _HID object.
80
81Added function trace macros to improve namespace debugging. The namespace
82repair mechanism does not have function tracing macros. Add several trace
83macros to improve debuggability.
84
85Handle "orphan" _REG methods for GPIO OpRegions. Before this change
86AcpiEvExecuteRegMethods() had special handling to handle "orphan" (no
87matching OpRegion declared) _REG methods for EC nodes. On Intel Cherry
88Trail devices there are 2 possible ACPI OpRegions for accessing GPIOs.
89The standard GeneralPurposeIo OpRegion and the Cherry Trail - specific
90UserDefined 0x9X OpRegions. Having 2 different types of OpRegions leads
91to potential issues with checks for OpRegion availability, or in other
92words checks if _REG has been called for the OpRegion which the ACPI code
93wants to use. Except for the "orphan" EC handling, ACPICA core does not
94call _REG on an ACPI node which does not define an OpRegion matching the
95type being registered; and the reference design DSDT, from which most
96Cherry Trail DSDTs are derived, does not define GeneralPurposeIo, nor
97UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because no pins
98were assigned ACPI controlled functions in the reference design. Together
99this leads to the perfect storm, at least on the Cherry Trail based
100Medion Akayo E1239T. This design does use a GPO2 pin from its ACPI code
101and has added the Cherry Trail specific UserDefined(0x93) opregion to its
102GPO2 ACPI node to access this pin. But it uses a "has _REG been called"
103availability check for the standard GeneralPurposeIo OpRegion. This
104clearly is a bug in the DSDT, but this does work under Windows. This
105issue leads to the intel vbtn driver reporting the device always being in
106tablet-mode at boot, even if it is in laptop mode. Which in turn causes
107userspace to ignore touchpad events. So in other words, this issue causes
108the touchpad to not work at boot. This change fixes this by extending the
109"orphan" _REG method handling to also apply to GPIO address-space
110handlers.
111
112
1132) iASL Compiler/Disassembler and ACPICA tools:
114
115iASL: Added more info to namespace dump file (-ln option). In a separate
116section of the dump file (after the main namespace dump), emit the full
117pathname for each namespace node, its type, and the ASL filename and line
118number where it is declared.
119
120AcpiHelp: Added an option to display/decode iASL exceptions. Option is: -
121x [Hex Value] where "Hex Value" is the iASL exception code. If Hex Value
122is omitted, all iASL exceptions are displayed.
123
124iASL: Use StringLiteral instead of StringData for some ASL macros. The
125use of the stringData rule allows for some "string" oriented opcodes
126(Such as ToString, ToHexString, etc.) None of which make sense with the
127macros in question. This change modifies the StringData part of the rule
128for these macros to a simple string  literal - thus disallowing the use
129of ToString, ToHexString, etc.
130The following ASL operators (macros) are affected:
131EisaId
132Fprintf
133Printf
134ToUuid
135Unicode
136Note: The MS compiler requires the use of string literals for these
137operators also.
138
139iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND. Search
140the list of "known" UUIDs for the input to the ToUUID macro.
141
142Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the
143NFIT table.
144
145
146----------------------------------------
147
14825 September 2020. Summary of changes for version 20200925:
149
150This release is available at https://acpica.org/downloads
151
152
1531) ACPICA kernel-resident subsystem:
154
155Preserve memory opregion mappings. The ACPICA's strategy with respect to
156the handling of memory mappings associated with memory operation regions
157is to avoid mapping the entire region at once which may be problematic at
158least in principle (for example, it may lead to conflicts with
159overlapping mappings having different attributes created by drivers).  It
160may also be wasteful, because memory opregions on some systems take up
161vastchunks of address space while the fields in those regions actually
162accessed by AML are sparsely distributed.
163
164For this reason, a one-page "window" is mapped for a given opregion on
165the first memory access through it and if that "window" does not cover an
166address range accessed through that opregion subsequently, it is unmapped
167and a new "window" is mapped to replace it.  Next, if the new "window" is
168not sufficient to access memory through the opregion in question in the
169future, it will be replaced with yet another "window" and so on.  That
170may lead to a suboptimal sequence of memory mapping and unmapping
171operations, for example if two fields in one opregion separated from each
172other by a sufficiently wide chunk of unused address space are accessed
173in an alternating pattern.
174
175Added support for 64 bit risc-v compilation.  Useful for acpica tools and
176incorporating ACPICA into the Firmware Test Suite. Colin Ian King
177<colin.king@canonical.com>.
178
179Added support for SMBus predefined names (from SMBus Control Method
180Interface Specification, Version 1.0, December 10, 1999. New predefined
181names:
182    _SBA
183    _SBI
184    _SBR
185    _SBT
186    _SBW
187
188AML Disassembler: Added a new command, "All <NameSeg>". This command will
189evaluate all objects in the current namespace whose NameString contains
190the input NameSeg as the last element of the NameString. Useful for
191debugging.
192
193
1942) iASL Compiler/Disassembler and ACPICA tools:
195
196iASL: fixed a crash that occurred when predefined objects return packages
197with lengths that exceed the initializer list.
198
199iASL: added more detail to external resolution error message when
200compiling multiple definition blocks.
201
202iASL: added a remark for an attempt to create a nameseg or namestring
203containing lower-case letters. This should prevent declaring multiple
204namesegs or namestrings in an attempt to refer to different objects (with
205different cases), but actually refer to the same object(s).
206
207iASL: improve alias analysis by saving object type. If the alias is a
208method type, the parameter count is also recorded.
209
210AcpiExec: Increase the default loop timeout value. Was 1 second, is now
21110 seconds. Prevents unnecessary timeouts when executing control methods
212from the command line.
213
214AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal
215list. Includes:
216    Memory Device
217    Generic Buttons Device
218    NVDIMM Root Device
219    Control Method Battery
220    Device Graphs for _DSD method
221    Hierarchical Data Extension
222....ARM CoreSight Graph
223
224----------------------------------------
225
226
22717 July 2020. Summary of changes for version 20200717:
228
229This release is available at https://acpica.org/downloads
230
231
2321) ACPICA kernel-resident subsystem:
233
234Do not increment OperationRegion reference counts for field units. Recent
235server firmware has revealed that this reference count can overflow on
236large servers that declare many field units (thousands) under the same
237OperationRegion. This occurs because each field unit declaration will add
238a reference count to the source OperationRegion. This release solves the
239reference count overflow for OperationRegion objects by preventing
240fieldUnits from incrementing their parent OperationRegion's reference
241count.
242
243Replaced one-element arrays with flexible-arrays, which were introduced
244in C99.
245
246Restored the readme file containing the directions for generation of
247ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is
248located at: generate/msvc2017/readme.txt
249
2502) iASL Compiler/Disassembler and ACPICA tools:
251
252iASL: Fixed a regression found in version 20200214. Prevent iASL from
253emitting an extra byte of garbage data when control methods declared a
254single parameter type without using braces. This extra byte is known to
255cause a blue screen on the Windows AML interpreter.
256
257iASL: Made a change to allow external declarations to specify the type of
258a named object even when some name segments are not defined.
259This change allows the following ASL code to compile (When DEV0 is not
260defined or not defined yet):
261
262    External (\_SB.DEV0.OBJ1, IntObj)
263    External (\_SB.DEV0, DeviceObj)
264
265iASL: Fixed a problem where method names in "Alias ()" statement could be
266misinterpreted. They are now interpreted correctly as method invocations.
267
268iASL: capture a method parameter count (Within the Method info segment,
269as well as the argument node) when using parameter type lists.
270
271----------------------------------------
272
273
27428 May 2020. Summary of changes for version 20200528:
275
276
2771) ACPICA kernel-resident subsystem:
278
279Removed old/obsolete Visual Studio files which were used to build the
280Windows versions of the ACPICA tools. Since we have moved to Visual
281Studio 2017, we are no longer supporting Visual Studio 2006 and 2009
282project files. The new subdirectory and solution file are located at:
283
284    acpica/generate/msvc2017/AcpiComponents.sln
285
286
2872) iASL Compiler/Disassembler and ACPICA tools:
288
289iASL: added support for a new OperationRegion Address Space (subtype):
290PlatformRtMechanism. Support for this new keyword is being released for
291early prototyping. It will appear in the next release of the ACPI
292specification.
293
294iASL: do not optimize the NameString parameter of the CondRefOf operator.
295In the previous iASL compiler release, the NameString parameter of the
296CondRefOf was optimized. There is evidence that some implementations of
297the AML interpreter do not perform the recursive search-to-parent search
298during the execution of the CondRefOf operator. Therefore, the CondRefOf
299operator behaves differently when the NameString parameter is a single
300name segment (a NameSeg) as opposed to a full NamePath (starting at the
301root scope) or a NameString containing parent prefixes.
302
303iASL: Prevent an inadvertent remark message. This change prevents a
304remark if within a control method the following exist:
3051) An Operation Region is defined, and
3062) A Field operator is defined that refers to the region.
307This happens because at the top level, the Field operator does not
308actually create a new named object, it simply references the operation
309region.
310
311Removed support for the acpinames utility. The acpinames was a simple
312utility used to populate and display the ACPI namespace without executing
313any AML code. However, ACPICA now supports executable opcodes outside of
314control methods. This means that executable AML opcodes such as If and
315Store opcodes need to be executed during table load. Therefore, acpinames
316would need to be updated to match the same behavior as the acpiexec
317utility and since acpiexec can already dump the entire namespace (via the
318'namespace' command), we no longer have the need to maintain acpinames.
319
320    In order to dump the contents of the ACPI namespace using acpiexec,
321execute the following command from the command line:
322
323        acpiexec -b "n" [aml files]
324
325----------------------------------------
326
327
32830 April 2020. Summary of changes for version 20200430:
329
3301) ACPICA kernel-resident subsystem:
331
332Cleaned up the coding style of a couple of global variables
333(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers.
334AcpiProtocolLengths was made static, and the definition of
335AcpiGbl_NextCmdNum was moved to acglobal.h.
336
337
3382) iASL Compiler/Disassembler and ACPICA tools:
339
340iASL DataTable Compiler:  Fixed a segfault on errors that aren't directly
341associated with a field.
342
343Disassembler: has been made more resilient so that it will continue to
344parse AML even if the AML generates ACPI namespace errors. This enables
345iASL to disassemble some AML that may have been compiled using older
346versions of iASL that no longer compile with newer versions of iASL.
347
348iASL: Fixed the required parameters for _NIH and _NIG. Previously, there
349was a mixup where _NIG required one parameter and _NIH required zero
350parameters. This change swaps these parameter requirements. Now it is
351required that _NIH must be called with one parameter and _NIG requires
352zero parameters.
353
354iASL: Allow use of undefined externals as long as they are protected by
355an if (CondRefOf (...)) block when compiling multiple definition blocks.
356
357iASL: Fixed the type override behavior of named objects that are declared
358as External. External declarations will no longer override the type of
359the actual definition if it already exists.
360
361AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable
362command line wildcard support on Windows. Note: the AcpiNames utility is
363essentially redundant with the AcpiExec utility (using the "namespace"
364command) and is therefore deprecated. It will be removed in future
365releases of ACPICA.
366
367Disassembler: ignore AE_ALREADY_EXISTS status when parsing create*
368operators. The disassembler is intended to emit existing ASL code as-is.
369Therefore, error messages emitted during disassembly should be ignored or
370handled in a way such that the disassembler can continue to parse the
371AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op
372parsing for create operators in order to complete parsing ASL termlists.
373
374iASL DataTable Compiler: IVRS table: fix potentially uninitialized
375variable warning. Some compilers catch potential uninitialized variables.
376This is done by examining branches of if/else statements. This change
377replaces an "else if" with an "else" to fix the uninitialized variable
378warning.
379
380
381----------------------------------------
38226 March 2020. Summary of changes for version 20200326:
383
384
3851) ACPICA kernel-resident subsystem:
386
387Performed a code clean-up to prevent build errors on early versions of
388GCC-10.
389
390Added the NHLT table signature. iASL data table compiler/disassembler
391support for this table is coming soon.
392
393
3942) iASL Compiler/Disassembler and ACPICA tools:
395
396AcpiExec: Fixed several problems with the namespace initialization file
397(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS
398errors, several seg faults, and enhancements to line parsing within the
399init file. In addition, each object found in the init file and it's new
400value is displayed, as well as any such entries that do not have a
401corresponding name in the namespace. For reference, the syntax for the
402various supported data types are presented below:
403	PCHG 0x777788889999BBBB	// Integer
404	\DEV1.STR1 "XYZ"			// String
405	BUF1 (88 99 AA)			// Buffer
406	PKG1 [0x1111 0x2222]		// Package
407	\BF1 0x7980				// BufferField
408	RCRV 0x0123456789ABCDEF	// Field Unit
409
410iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro
411can be used anywhere in a given ASL file to configure iASL to expect an
412iASL compiler error code on the line where this macro was placed. If the
413error code does not exist, an error is generated. This is intended to be
414used for ACPICA's ASL test suite, but can be used by ASL developers as
415well.
416
417iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD
418IVRS table parsing supported only IVHD type 10h structures. Parsing an
419IVHD type 11h caused the iasl to report unknown subtable type. Add
420necessary structure definition for IVHD type 11h and apply correct
421parsing method based on subtable type. Micha? ?ygowski.
422
423iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name
424According to AMD IOMMU Specification Revision 3.05 the reserved field
425should be IOMMU Feature Reporting. Change the name of the field to the
426correct one. Micha? ?ygowski.
427
428acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch
429based on suggestions by David Seifert and Benjamin Berg.
430
431iASL: table compiler: removed an unused variable (DtCompilerParserResult)
432causing linking errors. Patch based on suggestions by David Seifert and
433Benjamin Berg.
434
435iASL: table compiler: make LexBuffer static to avoid linking errors in
436newer compilers. Patch based on suggestions by David Seifert and Benjamin
437Berg.
438
439iASL: fixed type matching between External and Named objects. External
440object types can only be expressed with ACPI object type values that are
441defined in the ACPI spec. However, iASL uses ACPI object type values that
442are local to ACPICA in addition to the values defined in the ACPI spec.
443This change implements type matching to map some object type values
444specific to ACPICA to ones that are defined in the ACPI spec.
445
446iASL: Dropped the type mismatch compiler error that can arise from
447External declarations to a warning. This warning can occur when there is
448a type difference between the external declaration and the actual object
449declaration (when compiling multiple files/modules simultaneously).
450
451iASL: removed an incorrect error message regarding externals. This change
452removes an incorrect error that is emitted when a duplicate external
453declaration does not contain a type that opens a scope. This is incorrect
454because the duplicate external with conflicting types are already caught
455by iASL and it doesn't make any sense to enforce what this conflicting
456type should be.
457
458AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be
459surrounded by parens. Otherwise, a logical statement that applies a
460logical not operator to this macro could result in a computation that
461applies the operator to the left side of the logical and but not the
462right. Reported-by: John Levon <john.levon@joyent.com>
463
464Fixed a problem with the local version of sprint(): On 32-bit, the
465provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX,
466String + Size will wrap, meaning End < Start, and
467AcpiUtBoundStringOutput() will never output anything as a result. The
468symptom seen of this was acpixtract failing to output anything -- with a
469custom build that included utprint.c. Signed-off-by: John Levon
470<john.levon@joyent.com>
471
472iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the
473ACPI specification.
474
475
476----------------------------------------
47714 February 2020. Summary of changes for version 20200214:
478
479
4801) ACPICA kernel-resident subsystem:
481
482Enable sleep button on ACPI legacy wake:  Hibernation (S4) is triggered
483in a guest when it receives a sleep trigger from the hypervisor. When the
484guest resumes from this power state, it does not see the SleepEnabled
485bit. In other words, the sleepHibernation (S4) is triggered in a guest
486when it receives a sleep trigger from the hypervisor. When the guest
487resumes from this power state, it does not see the SleepEnabled bit. In
488other words, the sleep button is not enabled on waking from an S4 state.
489This causes subsequent invocation of sleep state to fail since the
490guest.button is not enabled on waking from an S4 state. This causes
491subsequent invocation of sleep state to fail in the guest. Fix this
492problem by enabling the sleep button in ACPI legacy wake. From Anchal
493Agarwal <anchalag@amazon.com>.
494
495Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used
496for checking the status bits of all enabled GPEs in one go. It is needed
497to distinguish spurious SCIs from genuine ones when deciding whether or
498not to wake up the system from suspend-to-idle.
499
500Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be
501using HOST in their environment to represent the host name for their
502machines. Avoid this problem by renaming this variable from HOST to
503ACPI_HOST.
504
505MSVC 2017 project files: Enable multiprocessor generation to improve
506build performance.
507
508Added a macro to get the byte width of a Generic Address structure. New
509ACPI_ACCESS_BYTE_WIDTH is in addition to the existing
510ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg.
511
512
5132) iASL Compiler/Disassembler and ACPICA tools:
514
515iASL: Implemented full support for the (optional, rarely used) ReturnType
516and ParameterTypesList for the Method, Function, and External operators.
517For Method declarations, the number of individual ParameterTypes must
518match the declaration of the number of arguments (NumArgs). This also
519Fixes a problem with the External operator where extra/extraneous bytes
520were emitted in the AML code if the optional ReturnType/ParameterTypes
521were specified for a MethodObj declaration.
522New error message:
5231) Method NumArgs count does not match length of ParameterTypes list
524
525iASL: Implemented detection of type mismatches between External
526declarations and named object declarations. Also, detect type mismatches
527between multiple External declarations of the same Name.
528New error messages:
5291) Type mismatch between external declaration and actual object
530declaration detected
5312) Type mismatch between multiple external declarations detected
532
533iASL: Implemented new error messages for External operators that specify
534a ReturnType and/or ParameterTypesList for any object type other than
535control methods (MethodObj).
536New error messages:
5371) Return type is only allowed for Externals declared as MethodObj
5382) Parameter type is only allowed for Externals declared as MethodObj
539
540iASL: Implemented two new remark/warning messages for ASL code that
541creates named objects from within a control method. This is very
542inefficient since the named object must be created and deleted each time
543the method is executed.
544New messages:
5451) Creation of named objects within a method is highly inefficient, use
546globals or method local variables instead (remark)
5472) Static OperationRegion should be declared outside control method
548(warning)
549
550iASL: Improved illegal forward reference detection by adding support to
551detect forward-reference method invocations.
552
553iASL: Detect and issue an error message for NameStrings that contain too
554many individual NameSegs (>255). This is an AML limitation that is
555defined in the ACPI specification.
556New message:
5571) NameString contains too many NameSegs (>255)
558
559acpidump: windows: use GetSystemFirmwareTable API for all tables except
560SSDT. By using this API, acpidump is able to get all tables in the XSDT
561
562iASL: Removed unused parser file and updated msvc2017 project files.
563Removed the obsolete AslCompiler.y from the repository.
564
565iASL: msvc2017: Fixed macros in the file dependency list to prevent
566unnecessary rebuilds. Replace %(Directory) with %(RelativeDir).
567
568Disassembler: Prevent spilling error messages to the output file. All
569errors are directed to the console instead. These error messages
570prevented re-compilation of the resulting disassembled ASL output file
571(.DSL).
572
573
574----------------------------------------
57510 January 2020. Summary of changes for version 20200110:
576
577
5781) ACPICA kernel-resident subsystem:
579
580Updated all copyrights to 2020. This affects all ACPICA source code
581modules.
582
583
5842) iASL Compiler/Disassembler and ACPICA tools:
585
586ASL test suite (ASLTS): Updated all copyrights to 2020.
587
588Tools and utilities: Updated all signon copyrights to 2020.
589
590iASL: fix forward reference analysis for field declarations. Fixes
591forward reference analysis for field declarations by searching the
592parent scope for the named object when the object is not present in
593the current scope.
594
595iASL: Improved the error output for ALREADY_EXISTS errors. Now, the
596full pathname of the name that already exists is printed.
597
598iASL: Enhance duplicate Case() detection for buffers. Add check for
599buffers with no initializer list (these buffers will be filled with
600zeros at runtime.)
601
602
603----------------------------------------
60413 December 2019. Summary of changes for version 20191213:
605
606
6071) ACPICA kernel-resident subsystem:
608
609Return a Buffer object for all fields created via the CreateField
610operator. Previously, an Integer would be returned if the size of
611the field was less than or equal to the current size of an Integer.
612Although this goes against the ACPI specification, it provides
613compatibility with other ACPI implementations. Also updated the
614ASLTS test suite to reflect this new behavior.
615
6162) iASL Compiler/Disassembler and ACPICA tools:
617
618iASL: Implemented detection of (and throw an error for) duplicate
619values for Case statements within a single Switch statement. Duplicate
620Integers, Strings, and Buffers are supported.
621
622iASL: Fix error logging issue during multiple file compilation --
623Switch to the correct input file during error node creation.
624
625iASL: For duplicate named object creation, now emit an error instead
626of a warning - since this will cause a runtime error.
627
628AcpiSrc: Add unix line-ending support for non-Windows builds.
629
630iASL: Add an error condition for an attempt to create a NameString
631with > 255 NameSegs (the max allowable via the AML definition).
632
633
634----------------------------------------
63518 October 2019. Summary of changes for version 20191018:
636
637
6381) ACPICA kernel-resident subsystem:
639
640Debugger: added a new command: ?Fields [address space ID]?. This command
641dumps the contents of all field units that are defined within the
642namespace with a particular address space ID.
643
644Modified the external interface AcpiLoadTable() to return a table index.
645This table index can be used for unloading a table for debugging.
646    ACPI_STATUS
647    AcpiLoadTable (
648        ACPI_TABLE_HEADER       *Table,
649        UINT32                  *TableIndex))
650
651Implemented a new external interface: AcpiUnloadTable() This new function
652takes a table index as an argument and unloads the table. Useful for
653debugging only.
654    ACPI_STATUS
655    AcpiUnloadTable (
656        UINT32                  TableIndex))
657
658Ported the AcpiNames utility to use the new table initialization
659sequence. The utility was broken before this change. Also, it was
660required to include most of the AML interpreter into the utility in order
661to process table initialization (module-level code execution.)
662
663Update for results from running Clang V8.0.1. This fixes all "dead
664assignment" warnings. There are still several "Dereference of NULL
665pointer" warnings, but these have been found to be false positive
666warnings.
667
668
6692) iASL Compiler/Disassembler and ACPICA tools:
670
671iASL: numerous table compiler changes to ensure that the usage of
672yacc/bison syntax is POSIX-compliant.
673
674iASL/disassembler: several simple bug fixes in the data table
675disassembler.
676
677Acpiexec: expanded the initialization file (the -fi option) to initialize
678strings, buffers, packages, and field units.
679
680
681----------------------------------------
68216 August 2019. Summary of changes for version 20190816:
683
684This release is available at https://acpica.org/downloads
685
686
6871) ACPICA kernel-resident subsystem:
688
689Modified the OwnerId mechanism to allow for more Owner Ids. The previous
690limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT
691exceptions on machines with a large number of initialization threads,
692many CPU cores and nested initialization control methods.
693
694Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for
695checking if the given GPE (as represented by a GPE device handle and a
696GPE number) is currently active and dispatching it (if that's the case)
697outside of interrupt context.
698
699Table load: exit the interpreter before initializing objects within the
700new table This prevents re-acquiring the interpreter lock when loading
701tables
702
703Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
704uk Kim
705
706Macros: removed pointer math on a null pointer. Causes warnings on some
707compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR
708instead of using arithmetic.
709
710Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used
711across all "printf-like" internal functions. Also, cleanup all calls to
712such functions (both in 32-bit mode and 64-bit mode) now that they are
713analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
714
715
7162) iASL Compiler/Disassembler and ACPICA tools:
717
718iASL: implemented a new data table compiler flex/bison front-end. This
719change is internal and is not intended to result in changes to the
720compiled code. This new compiler front-end can be invoked using the -tp
721option for now, until the old mechanism is removed.
722
723ASLTS: Implemented a new data table compiler test suite. This test suite
724generates all table templates and compile/disassemble/re-compile/binary-
725compare each file.
726
727iASL: return -1 if AML files were not generated due to compiler errors
728
729iASL: added a warning on use of the now-legacy ASL Processor () keyword.
730
731iASL: added an error on _UID object declaration that returns a String
732within a Processor () declaration. A _UID for a processor must be an
733Integer.
734
735iASL: added a null terminator to name strings that consist only of
736multiple parent prefixes (^)
737
738iASL: added support to compile both ASL and data table files in a single
739command.
740
741Updated the tool generation project files that were recently migrated to
742MSVC 2017 to eliminate all new warnings. The new project files appear in
743the directory \acpica\generate\msvc2017. This change effectively
744deprecates the older project files in \acpica\generate\msvc9.
745
746
747----------------------------------------
74803 July 2019. Summary of changes for version 20190703:
749
750
7511) ACPICA kernel-resident subsystem:
752
753Remove legacy module-level support code. There were still some remnants
754of the legacy module-level code executions. Since we no longer support
755this option, this is essentially dead code and has been removed from the
756ACPICA source.
757
758iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
759scope. If these named objects are declared outside the root scope, they
760will not be invoked by any host Operating System.
761
762Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC
763one) can be enabled in two situations. First, the GPEs with existing _Lxx
764and _Exx methods are enabled implicitly by ACPICA during system
765initialization.  Second, the GPEs without these methods (like GPEs listed
766by _PRW objects for wakeup devices) need to be enabled directly by the
767code that is going to use them (e.g. ACPI power management or device
768drivers).
769
770In the former case, if the status of a given GPE is set to start with,
771its handler method (either _Lxx or _Exx) needs to be invoked to take care
772of the events (possibly) signaled before the GPE was enabled. In the
773latter case, however, the first caller of AcpiEnableGpe() for a given GPE
774should not be expected to care about any events that might be signaled
775through it earlier.  In that case, it is better to clear the status of
776the GPE before enabling it, to prevent stale events from triggering
777unwanted actions (like spurious system resume, for example).
778
779For this reason, modify AcpiEvAddGpeReference() to take an additional
780boolean argument indicating whether or not the GPE status needs to be
781cleared when its reference counter changes from zero to one and make
782AcpiEnableGpe() pass TRUE to it through that new argument.
783
784
7852) iASL Compiler/Disassembler and ACPICA tools:
786
787The tool generation process has been migrated to MSVC 2017, and all
788project files have been upgraded. The new project files appear in the
789directory \acpica\generate\msvc2017. This change effectively deprecates
790the older project files in \acpica\generate\msvc9.
791
792iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
793scope. If these named objects are declared outside the root scope, they
794will not be invoked by any host Operating System
795
796----------------------------------------
79709 May 2019. Summary of changes for version 20190509:
798
799
8001) ACPICA kernel-resident subsystem:
801
802Revert commit  6c43e1a ("ACPICA: Clear status of GPEs before enabling
803them") that causes problems with Thunderbolt controllers to occur if a
804dock device is connected at init time (the xhci_hcd and thunderbolt
805modules crash which prevents peripherals connected through them from
806working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA:
807Dispatch active GPEs at init time") to get undone, so the problem
808addressed by commit ecc1165b8b74 appears again as a result of it.
809
810
8112) iASL Compiler/Disassembler and ACPICA tools:
812
813Reverted iASL: Additional forward reference detection. This change
814reverts forward reference detection for field declarations. The feature
815unintentionally emitted AML bytecode with incorrect package lengths for
816some ASL code related to Fields and OperationRegions. This malformed AML
817can cause systems to crash
818during boot. The malformed AML bytecode is emitted in iASL version
81920190329 and 20190405.
820
821iASL: improve forward reference detection. This change improves forward
822reference detection for named objects inside of scopes. If a parse object
823has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to
824a named object that is declared later in the AML bytecode. This is
825allowed if the reference is inside of a method and the declaration is
826outside of a method like so:
827
828DefinitionBlock(...)
829{
830    Method (TEST)
831    {
832        Return (NUM0)
833    }
834    Name (NUM0,0)
835}
836
837However, if the declaration and reference are both in the same method or
838outside any methods, this is a forward reference and should be marked as
839an error because it would result in runtime errors.
840
841DefinitionBlock(...)
842{
843    Name (BUFF, Buffer (NUM0) {}) // Forward reference
844    Name (NUM0, 0x0)
845
846    Method (TEST)
847    {
848        Local0 = NUM1
849        Name (NUM1, 0x1) // Forward reference
850        return (Local0)
851    }
852}
853
854iASL: Implemented additional buffer overflow analysis for BufferField
855declarations. Check if a buffer index argument to a create buffer field
856operation is beyond the end of the target buffer.
857
858This affects these AML operators:
859
860   AML_CREATE_FIELD_OP
861   AML_CREATE_BIT_FIELD_OP
862   AML_CREATE_BYTE_FIELD_OP
863   AML_CREATE_WORD_FIELD_OP
864   AML_CREATE_DWORD_FIELD_OP
865   AML_CREATE_QWORD_FIELD_OP
866
867 There are three conditions that must be satisfied in order to allow this
868validation at compile time:
869
870   1) The length of the target buffer must be an integer constant
871   2) The index specified in the create* must be an integer constant
872   3) For CreateField, the bit length argument must be non-zero.
873
874Example:
875    Name (BUF1, Buffer() {1,2})
876    CreateField (BUF1, 7, 9, CF03)  // 3: ERR
877
878dsdt.asl     14:     CreateField (BUF1, 7, 9, CF03)  // 3: ERR
879Error    6165 -                           ^ Buffer index beyond end of
880target buffer
881
882
883----------------------------------------
88405 April 2019. Summary of changes for version 20190405:
885
886
8871) ACPICA kernel-resident subsystem:
888
889Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop
890unconditionally clearing ACPI IRQs during suspend/resume") was added
891earlier to stop clearing of event status bits unconditionally on suspend
892and resume paths. Though this change fixed an issue on suspend path, it
893introduced regressions on several resume paths. In the case of S0ix,
894events are enabled as part of device suspend path. If status bits for the
895events are set when they are enabled, it could result in premature wake
896from S0ix. If status is cleared for any event that is being enabled so
897that any stale events are cleared out. In case of S0ix, events are
898enabled as part of device suspend path. If status bits for the events are
899set when they are enabled, it could result in premature wake from S0ix.
900
901This change ensures that status is cleared for any event that is being
902enabled so that any stale events are cleared out.
903
904
9052) iASL Compiler/Disassembler and ACPICA tools:
906
907iASL: Implemented an enhanced multiple file compilation that combines
908named objects from all input files to a single namespace. With this
909feature, any unresolved external declarations as well as duplicate named
910object declarations can be detected during compilation rather than
911generating errors much later at runtime. The following commands are
912examples that utilize this feature:
913    iasl dsdt.asl ssdt.asl
914    iasl dsdt.asl ssdt1.asl ssdt2.asl
915    iasl dsdt.asl ssdt*.asl
916
917----------------------------------------
91829 March 2019. Summary of changes for version 20190329:
919
920
9211) ACPICA kernel-resident subsystem:
922
923Namespace support: Remove the address nodes from global list after method
924termination. The global address list contains pointers to namespace nodes
925that represent Operation Regions. This change properly removes Operation
926Region namespace nodes that are declared dynamically during method
927execution.
928
929Linux: Use a different debug default than ACPICA. There was a divergence
930between Linux and the ACPICA codebases. In order to resolve this
931divergence, Linux now declares its own debug default in aclinux.h
932
933Renamed some internal macros to improve code understanding and
934maintenance. The macros below all operate on single 4-character ACPI
935NameSegs, not generic strings (old -> new):
936    ACPI_NAME_SIZE    -> ACPI_NAMESEG_SIZE
937    ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
938    ACPI_MOVE_NAME    -> ACPI_COPY_NAMESEG
939
940Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
941table.
942
943Test suite: Update makefiles, add PCC operation region support
944
945
9462) iASL Compiler/Disassembler and Tools:
947
948iASL: Implemented additional illegal forward reference detection. Now
949detect and emit an error upon detection of a forward reference from a
950Field to an Operation Region. This will fail at runtime if allowed to
951pass the compiler.
952
953AcpiExec: Add an address list check for dynamic Operation Regions. This
954feature performs a sanity test for each node the global address list.
955This is done in order to ensure that all dynamic operation regions are
956properly removed from the global address list and no dangling pointers
957are left behind.
958
959Disassembler: Improved generation of resource pathnames. This change
960improves the code that generates resource descriptor and resource tag
961pathnames. The original code used a bunch of str* C library functions
962that caused warnings on some compilers.
963
964iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
965function can overwrite buffers if the calling code is not very careful.
966In the case of generating a module/table header, use of memmove is a
967better implementation.
968
969
9703) Status of new features that have not been completed at this time:
971
972iASL: Implementing an enhanced multiple file compilation into a single
973namespace feature (Status): This feature will be released soon, and
974allows multiple ASL files to be compiled into the same single namespace.
975By doing so, any unresolved external declarations as well as duplicate
976named object declarations can be detected during compilation (rather than
977later during runtime). The following commands are examples that utilize
978this feature:
979    iasl dsdt.asl ssdt.asl
980    iasl dsdt.asl ssdt1.asl ssdt2.asl
981    iasl dsdt.asl ssdt*.asl
982
983ASL tutorial status: Feedback is being gathered internally and the
984current plan is to publish this tutorial on the ACPICA website after a
985final review by a tech writer.
986
987----------------------------------------
98815 February 2019. Summary of changes for version 20190215:
989
990
9910) Support for ACPI specification version 6.3:
992
993Add PCC operation region support for the AML interpreter. This adds PCC
994operation region support in the AML interpreter and a default handler for
995acpiexec. The change also renames the PCC region address space keyword to
996PlatformCommChannel.
997
998Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG.
999These methods provide OSPM with health information and device boot
1000status.
1001
1002PDTT: Add TriggerOrder to the PCC Identifier structure. The field value
1003defines if the trigger needs to be invoked by OSPM before or at the end
1004of kernel crash dump processing/handling operation.
1005
1006SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT
1007is used for describing devices such as heterogeneous processors,
1008accelerators, GPUs, and IO devices with integrated compute or DMA
1009engines.
1010
1011MADT: Add support for statistical profiling in GICC. Statistical
1012profiling extension (SPE) is an architecture-specific feature for ARM.
1013
1014MADT: Add online capable flag. If this bit is set, system hardware
1015supports enabling this processor during OS runtime.
1016
1017New Error Disconnect Recover Notification value. There are a number of
1018scenarios where system Firmware in collaboration with hardware may
1019disconnect one or more devices from the rest of the system for purposes
1020of error containment. Firmware can use this new notification value to
1021alert OSPM of such a removal.
1022
1023PPTT: New additional fields in Processor Structure Flags. These flags
1024provide more information about processor topology.
1025
1026NFIT/Disassembler: Change a field name from "Address Range" to "Region
1027Type".
1028
1029HMAT updates: make several existing fields to be reserved as well as
1030rename subtable 0 to "memory proximity domain attributes".
1031
1032GTDT: Add support for new GTDT Revision 3. This revision adds information
1033for the EL2 timer.
1034
1035iASL: Update the HMAT example template for new fields.
1036
1037iASL: Add support for the new revision of the GTDT (Rev 3).
1038
1039
10401) ACPICA kernel-resident subsystem:
1041
1042AML Parser: fix the main AML parse loop to correctly skip erroneous
1043extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
1044byte extended opcodes. If an error occurs during an AML table load, the
1045AML parser will continue loading the table by skipping the offending
1046opcode. This implements a "load table at any cost" philosophy.
1047
1048
10492) iASL Compiler/Disassembler and Tools:
1050
1051iASL: Add checks for illegal object references, such as a reference
1052outside of method to an object within a method. Such an object is only
1053temporary.
1054
1055iASL: Emit error for creation of a zero-length operation region. Such a
1056region is rather pointless. If encountered, a runtime error is also
1057implemented in the interpreter.
1058
1059Debugger: Fix a possible fault with the "test objects" command.
1060
1061iASL: Makefile: support parent directory filenames containing embedded
1062spaces.
1063
1064iASL: Update the TPM2 template to revision 4.
1065
1066iASL: Add the ability to report specific warnings or remarks as errors.
1067
1068Disassembler: Disassemble OEMx tables as actual AML byte code.
1069Previously, these tables were treated as "unknown table".
1070
1071iASL: Add definition and disassembly for TPM2 revision 3.
1072
1073iASL: Add support for TPM2 rev 3 compilation.
1074
1075
1076----------------------------------------
107708 January 2019. Summary of changes for version 20190108:
1078
1079
10801) ACPICA kernel-resident subsystem:
1081
1082Updated all copyrights to 2019. This affects all source code modules.
1083
1084
10852) iASL Compiler/Disassembler and Tools:
1086
1087ASL test suite (ASLTS): Updated all copyrights to 2019.
1088
1089Tools: Updated all signon copyrights to 2019.
1090
1091AcpiExec: Added a new option to dump extra information concerning any
1092memory leaks detected by the internal object/cache tracking mechanism. -
1093va
1094
1095iASL: Updated the table template for the TPM2 table to the newest version
1096of the table (Revision 4)
1097
1098
1099----------------------------------------
110013 December 2018. Summary of changes for version 20181213:
1101
1102
11031) ACPICA Kernel-resident Subsystem:
1104
1105Fixed some buffer length issues with the GenericSerialBus, related to two
1106of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
1107which are rarely seen in the field. For these, the LEN field of the ASL
1108buffer is now ignored. Hans de Goede
1109
1110Implemented a new object evaluation trace mechanism for control methods
1111and data objects. This includes nested control methods. It is
1112particularly useful for examining the ACPI execution during system
1113initialization since the output is relatively terse. The flag below
1114enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
1115   #define ACPI_LV_EVALUATION          0x00080000
1116
1117Examples:
1118   Enter evaluation       :  _SB.PCI0._INI (Method)
1119   Exit evaluation        :  _SB.PCI0._INI
1120   Enter evaluation       :  _OSI (Method)
1121   Exit evaluation        :  _OSI
1122   Enter evaluation       :  _SB.PCI0.TEST (Method)
1123   Nested method call     :     _SB.PCI0.NST1
1124   Exit nested method     :     _SB.PCI0.NST1
1125   Exit evaluation        :  _SB.PCI0.TEST
1126
1127Added two recently-defined _OSI strings. See
1128https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
1129osi.
1130   "Windows 2018"
1131   "Windows 2018.2"
1132
1133Update for buffer-to-string conversions via the ToHexString ASL operator.
1134A "0x" is now prepended to each of the hex values in the output string.
1135This provides compatibility with other ACPI implementations. The ACPI
1136specification is somewhat vague on this issue.
1137   Example output string after conversion:
1138"0x01,0x02,0x03,0x04,0x05,0x06"
1139
1140Return a run-time error for TermArg expressions within individual package
1141elements. Although this is technically supported by the ASL grammar,
1142other ACPI implementations do not support this either. Also, this fixes a
1143fault if this type of construct is ever encountered (it never has been).
1144
1145
11462) iASL Compiler/Disassembler and Tools:
1147
1148iASL: Implemented a new compile option (-ww) that will promote individual
1149warnings and remarks to errors. This is intended to enhance the firmware
1150build process.
1151
1152AcpiExec: Implemented a new command-line option (-eo) to support the new
1153object evaluation trace mechanism described above.
1154
1155Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
1156instead of a "unknown table" message.
1157
1158AcpiHelp: Improved support for the "special" predefined names such as
1159_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be
1160used for "xx" and "x".
1161
1162----------------------------------------
116331 October 2018. Summary of changes for version 20181031:
1164
1165
1166An Operation Region regression was fixed by properly adding address
1167ranges to a global list during initialization. This allows OS to
1168accurately check for overlapping regions between native devices (such as
1169PCI) and Operation regions as well as checking for region conflicts
1170between two Operation Regions.
1171
1172Added support for the 2-byte extended opcodes in the code/feature that
1173attempts to continue parsing during the table load phase. Skip parsing
1174Device declarations (and other extended opcodes) when an error occurs
1175during parsing. Previously, only single-byte opcodes were supported.
1176
1177Cleanup: Simplified the module-level code support by eliminating a
1178useless global variable (AcpiGbl_GroupModuleLeveCode).
1179
1180
11812) iASL Compiler/Disassembler and Tools:
1182
1183iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
1184could cause a fault in the preprocessor. This was an inadvertent side-
1185effect from moving more allocations/frees to the local cache/memory
1186mechanism.
1187
1188iASL: Enhanced error detection by validating that all NameSeg elements
1189within a NamePatch actually exist. The previous behavior was spotty at
1190best, and such errors could be improperly ignored at compiler time (never
1191at runtime, however. There are two new error messages, as shown in the
1192examples below:
1193
1194dsdt.asl     33:     CreateByteField (TTTT.BXXX, 1, CBF1)
1195Error    6161 -                              ^ One or more objects within
1196the Pathname do not exist (TTTT.BXXX)
1197
1198dsdt.asl     34:     CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
1199Error    6160 -        One or more prefix Scopes do not exist ^
1200(BBBB.CBF1)
1201
1202iASL: Disassembler/table-compiler: Added support for the static data
1203table TPM2 revision 3 (an older version of TPM2). The support has been
1204added for the compiler and the disassembler.
1205
1206Fixed compilation of DOS format data table file on Unix/Linux systems.
1207iASL now properly detects line continuations (\) for DOS format data
1208table definition language files on when executing on Unix/Linux.
1209
1210----------------------------------------
121103 October 2018. Summary of changes for version 20181003:
1212
1213
12142) iASL Compiler/Disassembler and Tools:
1215
1216Fixed a regression introduced in version 20180927 that could cause the
1217compiler to fault, especially with NamePaths containing one or more
1218carats (^). Such as: ^^_SB_PCI0
1219
1220Added a new remark for the Sleep() operator when the sleep time operand
1221is larger than one second. This is a very long time for the ASL/BIOS code
1222and may not be what was intended by the ASL writer.
1223
1224----------------------------------------
122527 September 2018. Summary of changes for version 20180927:
1226
1227
12281) ACPICA kernel-resident subsystem:
1229
1230Updated the GPE support to clear the status of all ACPI events when
1231entering any/all sleep states in order to avoid premature wakeups. In
1232theory, this may cause some wakeup events to be missed, but the
1233likelihood of this is small. This change restores the original behavior
1234of the ACPICA code in order to fix a regression seen from the previous
1235"Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
1236This regression could cause some systems to incorrectly wake immediately.
1237
1238Updated the execution of the _REG methods during initialization and
1239namespace loading to bring the behavior into closer conformance to the
1240ACPI specification and other ACPI implementations:
1241
1242From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
1243    "Control methods must assume all operation regions are inaccessible
1244until the _REG(RegionSpace, 1) method is executed"
1245
1246    "The exceptions to this rule are:
12471.  OSPM must guarantee that the following operation regions are always
1248accessible:
1249    SystemIO operation regions.
1250    SystemMemory operation regions when accessing memory returned by the
1251System Address Map reporting interfaces."
1252
1253Since the state of both the SystemIO and SystemMemory address spaces are
1254defined by the specification to never change, this ACPICA change ensures
1255that now _REG is never called on them. This solves some problems seen in
1256the field and provides compatibility with other ACPI implementations. An
1257update to the upcoming new version of the ACPI specification will help
1258clarify this behavior.
1259
1260Updated the implementation of support for the Generic Serial Bus. For the
1261"bidirectional" protocols, the internal implementation now automatically
1262creates a return data buffer of the maximum size (255). This handles the
1263worst-case for data that is returned from the serial bus handler, and
1264fixes some problems seen in the field. This new buffer is directly
1265returned to the ASL. As such, there is no true "bidirectional" buffer,
1266which matches the ACPI specification. This is the reason for the "double
1267store" seen in the example ASL code in the specification, shown below:
1268
1269Word Process Call (AttribProcessCall):
1270    OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
1271    Field(TOP1, BufferAcc, NoLock, Preserve)
1272    {
1273        FLD1, 8, // Virtual register at command value 1.
1274    }
1275
1276    Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
1277                             // as BUFF
1278    CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
1279
1280    Store(0x5416, DATA)               // Save 0x5416 into the data buffer
1281    Store(Store(BUFF, FLD1), BUFF)    // Invoke a write/read Process Call
1282transaction
1283                           // This is the "double store". The write to
1284                           // FLD1 returns a new buffer, which is stored
1285                           // back into BUFF with the second Store.
1286
1287
12882) iASL Compiler/Disassembler and Tools:
1289
1290iASL: Implemented detection of extraneous/redundant uses of the Offset()
1291operator within a Field Unit list. A remark is now issued for these. For
1292example, the first two of the Offset() operators below are extraneous.
1293Because both the compiler and the interpreter track the offsets
1294automatically, these Offsets simply refer to the current offset and are
1295unnecessary. Note, when optimization is enabled, the iASL compiler will
1296in fact remove the redundant Offset operators and will not emit any AML
1297code for them.
1298
1299    OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
1300    Field (OPR1)
1301    {
1302        Offset (0),     // Never needed
1303        FLD1, 32,
1304        Offset (4),     // Redundant, offset is already 4 (bytes)
1305        FLD2, 8,
1306        Offset (64),    // OK use of Offset.
1307        FLD3, 16,
1308    }
1309dsdt.asl     14:         Offset (0),
1310Remark   2158 -                 ^ Unnecessary/redundant use of Offset
1311operator
1312
1313dsdt.asl     16:         Offset (4),
1314Remark   2158 -                 ^ Unnecessary/redundant use of Offset
1315operator
1316
1317----------------------------------------
131810 August 2018. Summary of changes for version 20180810:
1319
1320
13211) ACPICA kernel-resident subsystem:
1322
1323Initial ACPI table loading: Attempt to continue loading ACPI tables
1324regardless of malformed AML. Since migrating table initialization to the
1325new module-level code support, the AML interpreter rejected tables upon
1326any ACPI error encountered during table load. This is a problem because
1327non-serious ACPI errors during table load do not necessarily mean that
1328the entire definition block (DSDT or SSDT) is invalid. This change
1329improves the table loading by ignoring some types of errors that can be
1330generated by incorrect AML. This can range from object type errors, scope
1331errors, and index errors.
1332
1333Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
1334during suspend/resume. The status of ACPI events is no longer cleared
1335when entering the ACPI S5 system state (power off) which caused some
1336systems to power up immediately after turning off power in certain
1337situations. This was a functional regression. It was fixed by clearing
1338the status of all ACPI events again when entering S5 (for system-wide
1339suspend or hibernation the clearing of the status of all events is not
1340desirable, as it might cause the kernel to miss wakeup events sometimes).
1341Rafael Wysocki.
1342
1343
13442) iASL Compiler/Disassembler and Tools:
1345
1346AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
1347elements listed in the initialization file were previously initialized
1348after the table load and before executing module-level code blocks.
1349Recent changes in the module-level code support means that the table load
1350becomes a large control method execution. If fields are used within
1351module-level code and we are executing with the -fi option, the
1352initialization values were used to initialize the namespace object(s)
1353only after the table was finished loading. This change Provides an early
1354initialization of objects specified in the initialization file so that
1355field unit values are populated during the table load (not after the
1356load).
1357
1358AcpiExec: Fixed a small memory leak regression that could result in
1359warnings during exit of the utility. These warnings were similar to
1360these:
1361    0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
1362    0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
1363
1364----------------------------------------
136529 June 2018. Summary of changes for version 20180629:
1366
1367
13681) iASL Compiler/Disassembler and Tools:
1369
1370iASL: Fixed a regression related to the use of the ASL External
1371statement. Error checking for the use of the External() statement has
1372been relaxed. Previously, a restriction on the use of External meant that
1373the referenced named object was required to be defined in a different
1374table (an SSDT). Thus it would be an error to declare an object as an
1375external and then define the same named object in the same table. For
1376example:
1377    DefinitionBlock (...)
1378    {
1379        External (DEV1)
1380        Device (DEV1){...} // This was an error
1381    }
1382However, this behavior has caused regressions in some existing ASL code,
1383because there is code that depends on named objects and externals (with
1384the same name) being declared in the same table. This change will allow
1385the ASL code above to compile without errors or warnings.
1386
1387iASL: Implemented ASL language extensions for four operators to make some
1388of their arguments optional instead of required:
1389    1) Field (RegionName, AccessType, LockRule, UpdateRule)
1390    2) BankField (RegionName, BankName, BankValue,
1391                AccessType, LockRule, UpdateRule)
1392    3) IndexField (IndexName, DataName,
1393                AccessType, LockRule, UpdateRule)
1394For the Field operators above, the AccessType, LockRule, and UpdateRule
1395are now optional arguments. The default values are:
1396        AccessType: AnyAcc
1397        LockRule:   NoLock
1398        UpdateRule: Preserve
1399    4) Mutex (MutexName, SyncLevel)
1400For this operator, the SyncLevel argument is now optional. This argument
1401is rarely used in any meaningful way by ASL code, and thus it makes sense
1402to make it optional. The default value is:
1403        SyncLevel:  0
1404
1405iASL: Attempted use of the ASL Unload() operator now results in the
1406following warning:
1407    "Unload is not supported by all operating systems"
1408This is in fact very true, and the Unload operator may be completely
1409deprecated in the near future.
1410
1411AcpiExec: Fixed a regression for the -fi option (Namespace initialization
1412file. Recent changes in the ACPICA module-level code support altered the
1413table load/initialization sequence . This means that the table load has
1414become a large method execution of the table itself. If Operation Region
1415Fields are used within any module-level code and the -fi option was
1416specified, the initialization values were populated only after the table
1417had completely finished loading (and thus the module-level code had
1418already been executed). This change moves the initialization of objects
1419listed in the initialization file to before the table is executed as a
1420method. Field unit values are now initialized before the table execution
1421is performed.
1422
1423----------------------------------------
142431 May 2018. Summary of changes for version 20180531:
1425
1426
14271) ACPICA kernel-resident Subsystem:
1428
1429Implemented additional support to help ensure that a DSDT or SSDT is
1430fully loaded even if errors are incurred during the load. The majority of
1431the problems that are seen is the failure of individual AML operators
1432that occur during execution of any module-level code (MLC) existing in
1433the table. This support adds a mechanism to abort the current ASL
1434statement (AML opcode), emit an error message, and to simply move on to
1435the next opcode -- instead of aborting the entire table load. This is
1436different than the execution of a control method where the entire method
1437is aborted upon any error. The goal is to perform a very "best effort" to
1438load the ACPI tables. The most common MLC errors that have been seen in
1439the field are direct references to unresolved ASL/AML symbols (referenced
1440directly without the use of the CondRefOf operator to validate the
1441symbol). This new ACPICA behavior is now compatible with other ACPI
1442implementations.
1443
1444Interpreter: The Unload AML operator is no longer supported for the
1445reasons below. An AE_NOT_IMPLEMENTED exception is returned.
14461) A correct implementation on at least some hosts may not be possible.
14472) Other ACPI implementations do not correctly/fully support it.
14483) It requires host device driver support which is not known to exist.
1449    (To properly support namespace unload out from underneath.)
14504) This AML operator has never been seen in the field.
1451
1452Parser: Added a debug option to dump AML parse sub-trees as they are
1453being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
1454ACPI_DB_PARSE_TREES.
1455
1456Debugger: Reduced the verbosity for errors incurred during table load and
1457module-level code execution.
1458
1459Completed an investigation into adding a namespace node "owner list"
1460instead of the current "owner ID" associated with namespace nodes. This
1461list would link together all nodes that are owned by an individual
1462control method. The purpose would be to enhance control method execution
1463by speeding up cleanup during method exit (all namespace nodes created by
1464a method are deleted upon method termination.) Currently, the entire
1465namespace must be searched for matching owner IDs if (and only if) the
1466method creates named objects outside of the local scope. However, by far
1467the most common case is that methods create objects locally, not outside
1468the method scope. There is already an ACPICA optimization in place that
1469only searches the entire namespace in the rare case of a method creating
1470objects elsewhere in the namespace. Therefore, it is felt that the
1471overhead of adding an additional pointer to each namespace node to
1472implement the owner list makes this feature unnecessary.
1473
1474
14752) iASL Compiler/Disassembler and Tools:
1476
1477iASL, Disassembler, and Template generator: Implemented support for
1478Revision D of the IORT table. Adds a new subtable that is used to specify
1479SMMUv3 PMCGs. rmurphy-arm.
1480
1481Disassembler: Restored correct table header validation for the "special"
1482ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
1483table header and must be special-cased. This was a regression that has
1484been present for apparently a long time.
1485
1486AcpiExec: Reduced verbosity of the local exception handler implemented
1487within acpiexec. This handler is invoked by ACPICA upon any exceptions
1488generated during control method execution. A new option was added: -vh
1489restores the original verbosity level if desired.
1490
1491AcpiExec: Changed the default base from decimal to hex for the -x option
1492(set debug level). This simplifies the use of this option and matches the
1493behavior of the corresponding iASL -x option.
1494
1495AcpiExec: Restored a force-exit on multiple control-c (sigint)
1496interrupts. This allows program termination even if other issues cause
1497the control-c to fail.
1498
1499ASL test suite (ASLTS): Added tests for the recently implemented package
1500element resolution mechanism that allows forward references to named
1501objects from individual package elements (this mechanism provides
1502compatibility with other ACPI implementations.)
1503
1504
1505----------------------------------------
15068 May 2018. Summary of changes for version 20180508:
1507
1508
15091) ACPICA kernel-resident subsystem:
1510
1511Completed the new (recently deployed) package resolution mechanism for
1512the Load and LoadTable ASL/AML operators. This fixes a regression that
1513was introduced in version 20180209 that could result in an
1514AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
1515(SSDT) that contains package objects.
1516
1517
15182) iASL Compiler/Disassembler and Tools:
1519
1520AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
15211 MB. This change allows for table offsets within the acpidump file to be
1522up to 8 characters. These changes are backwards compatible with existing
1523acpidump files.
1524
1525
1526----------------------------------------
152727 April 2018. Summary of changes for version 20180427:
1528
1529
15301) ACPICA kernel-resident subsystem:
1531
1532Debugger: Added support for Package objects in the "Test Objects"
1533command. This command walks the entire namespace and evaluates all named
1534data objects (Integers, Strings, Buffers, and now Packages).
1535
1536Improved error messages for the namespace root node. Originally, the root
1537was referred to by the confusing string "\___". This has been replaced by
1538"Namespace Root" for clarification.
1539
1540Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
1541Ian King <colin.king@canonical.com>.
1542
1543
15442) iASL Compiler/Disassembler and Tools:
1545
1546iASL: Implemented support to detect and flag illegal forward references.
1547For compatibility with other ACPI implementations, these references are
1548now illegal at the root level of the DSDT or SSDTs. Forward references
1549have always been illegal within control methods. This change should not
1550affect existing ASL/AML code because of the fact that these references
1551have always been illegal in the other ACPI implementation.
1552
1553iASL: Added error messages for the case where a table OEM ID and OEM
1554TABLE ID strings are longer than the ACPI-defined length. Previously,
1555these strings were simply silently truncated.
1556
1557iASL: Enhanced the -tc option (which creates an AML hex file in C,
1558suitable for import into a firmware project):
1559  1) Create a unique name for the table, to simplify use of multiple
1560SSDTs.
1561  2) Add a protection #ifdef in the file, similar to a .h header file.
1562With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd,
1563evan.lloyd@arm.com
1564
1565AcpiExec: Added a new option, -df, to disable the local fault handler.
1566This is useful during debugging, where it may be desired to drop into a
1567debugger on a fault.
1568
1569----------------------------------------
157013 March 2018. Summary of changes for version 20180313:
1571
1572
15731) ACPICA kernel-resident subsystem:
1574
1575Implemented various improvements to the GPE support:
1576
15771) Dispatch all active GPEs at initialization time so that no GPEs are
1578lost.
15792) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
1580before devices are enumerated.
15813) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
1582IRQs are not lost.
15834) Add parallel GPE handling to eliminate the possibility of dispatching
1584the same GPE twice.
15855) Dispatch any pending GPEs after enabling for the first time.
1586
1587AcpiGetObjectInfo - removed support for the _STA method. This was causing
1588problems on some platforms.
1589
1590Added a new _OSI string, "Windows 2017.2".
1591
1592Cleaned up and simplified the module-level code support. These changes
1593are in preparation for the eventual removal of the legacy MLC support
1594(deferred execution), replaced by the new MLC architecture which executes
1595the MLC as a table is loaded (DSDT/SSDTs).
1596
1597Changed a compile-time option to a runtime option. Changes the option to
1598ignore ACPI table load-time package resolution errors into a runtime
1599option. Used only for platforms that generate many AE_NOT_FOUND errors
1600during boot. AcpiGbl_IgnorePackageResolutionErrors.
1601
1602Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
1603ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
1604compilation errors from unused variables (seen with some compilers).
1605
1606
16072) iASL Compiler/Disassembler and Tools:
1608
1609ASLTS: parallelized execution in order to achieve an (approximately) 2X
1610performance increase.
1611
1612ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
1613error reporting.
1614
1615----------------------------------------
161609 February 2018. Summary of changes for version 20180209:
1617
1618
16191) ACPICA kernel-resident subsystem:
1620
1621Completed the final integration of the recent changes to Package Object
1622handling and the module-level AML code support. This allows forward
1623references from individual package elements when the package object is
1624declared from within module-level code blocks. Provides compatibility
1625with other ACPI implementations.
1626
1627The new architecture for the AML module-level code has been completed and
1628is now the default for the ACPICA code. This new architecture executes
1629the module-level code in-line as the ACPI table is loaded/parsed instead
1630of the previous architecture which deferred this code until after the
1631table was fully loaded. This solves some ASL code ordering issues and
1632provides compatibility with other ACPI implementations. At this time,
1633there is an option to fallback to the earlier architecture, but this
1634support is deprecated and is planned to be completely removed later this
1635year.
1636
1637Added a compile-time option to ignore AE_NOT_FOUND exceptions during
1638resolution of named reference elements within Package objects. Although
1639this is potentially a serious problem, it can generate a lot of
1640noise/errors on platforms whose firmware carries around a bunch of unused
1641Package objects. To disable these errors, define
1642ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
1643errors are always reported for ACPICA applications such as AcpiExec.
1644
1645Fixed a regression related to the explicit type-conversion AML operators
1646(ToXXXX). The regression was introduced early in 2017 but was not seen
1647until recently because these operators are not fully supported by other
1648ACPI implementations and are thus rarely used by firmware developers. The
1649operators are defined by the ACPI specification to not implement the
1650"implicit result object conversion". The regression incorrectly
1651introduced this object conversion for the following explicit conversion
1652operators:
1653    ToInteger
1654    ToString
1655    ToBuffer
1656    ToDecimalString
1657    ToHexString
1658    ToBCD
1659    FromBCD
1660
1661
16622) iASL Compiler/Disassembler and Tools:
1663
1664iASL: Fixed a problem with the compiler constant folding feature as
1665related to the ToXXXX explicit conversion operators. These operators do
1666not support the "implicit result object conversion" by definition. Thus,
1667ASL expressions that use these operators cannot be folded to a simple
1668Store operator because Store implements the implicit conversion. This
1669change uses the CopyObject operator for the ToXXXX operator folding
1670instead. CopyObject is defined to not implement implicit result
1671conversions and is thus appropriate for folding the ToXXXX operators.
1672
1673iASL: Changed the severity of an error condition to a simple warning for
1674the case where a symbol is declared both locally and as an external
1675symbol. This accommodates existing ASL code.
1676
1677AcpiExec: The -ep option to enable the new architecture for module-level
1678code has been removed. It is replaced by the -dp option which instead has
1679the opposite effect: it disables the new architecture (the default) and
1680enables the legacy architecture. When the legacy code is removed in the
1681future, the -dp option will be removed also.
1682
1683----------------------------------------
168405 January 2018. Summary of changes for version 20180105:
1685
1686
16871) ACPICA kernel-resident subsystem:
1688
1689Updated all copyrights to 2018. This affects all source code modules.
1690
1691Fixed a possible build error caused by an unresolved reference to the
1692AcpiUtSafeStrncpy function.
1693
1694Removed NULL pointer arithmetic in the various pointer manipulation
1695macros. All "(void *) NULL" constructs are converted to "(void *) 0".
1696This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
1697
1698Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
1699Mittal.
1700
1701
17022) iASL Compiler/Disassembler and Tools:
1703
1704ASLTS: Updated all copyrights to 2018.
1705
1706Tools: Updated all signon copyrights to 2018.
1707
1708AcpiXtract: Fixed a regression related to ACPI table signatures where the
1709signature was truncated to 3 characters (instead of 4).
1710
1711AcpiExec: Restore the original terminal mode after the use of the -v and
1712-vd options.
1713
1714ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
1715
1716----------------------------------------
171714 December 2017. Summary of changes for version 20171214:
1718
1719
17201) ACPICA kernel-resident subsystem:
1721
1722Fixed a regression in the external (public) AcpiEvaluateObjectTyped
1723interface where the optional "pathname" argument had inadvertently become
1724a required argument returning an error if omitted (NULL pointer
1725argument).
1726
1727Fixed two possible memory leaks related to the recently developed "late
1728resolution" of reference objects within ASL Package Object definitions.
1729
1730Added two recently defined _OSI strings: "Windows 2016" and "Windows
17312017". Mario Limonciello.
1732
1733Implemented and deployed a safer version of the C library function
1734strncpy:  AcpiUtSafeStrncpy. The intent is to at least prevent the
1735creation of unterminated strings as a possible result of a standard
1736strncpy.
1737
1738Cleaned up and restructured the global variable file (acglobal.h). There
1739are many changes, but no functional changes.
1740
1741
17422) iASL Compiler/Disassembler and Tools:
1743
1744iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
1745optional OemData field at the end of the table was incorrectly required
1746for proper compilation. It is now correctly an optional field.
1747
1748ASLTS: The entire suite was converted from standard ASL to the ASL+
1749language, using the ASL-to-ASL+ converter which is integrated into the
1750iASL compiler. A binary compare of all output files has verified the
1751correctness of the conversion.
1752
1753iASL: Fixed the source code build for platforms where "char" is unsigned.
1754This affected the iASL lexer only. Jung-uk Kim.
1755
1756----------------------------------------
175710 November 2017. Summary of changes for version 20171110:
1758
1759
17601) ACPICA kernel-resident subsystem:
1761
1762This release implements full support for ACPI 6.2A:
1763    NFIT - Added a new subtable, "Platform Capabilities Structure"
1764No other changes to ACPICA were required, since ACPI 6.2A is primarily an
1765errata release of the specification.
1766
1767Other ACPI table changes:
1768    IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
1769    PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
1770Linton
1771
1772Utilities: Modified the string/integer conversion functions to use
1773internal 64-bit divide support instead of a native divide. On 32-bit
1774platforms, a 64-bit divide typically requires a library function which
1775may not be present in the build (kernel or otherwise).
1776
1777Implemented a targeted error message for timeouts returned from the
1778Embedded Controller device driver. This is seen frequently enough to
1779special-case an AE_TIME returned from an EC operation region access:
1780    "Timeout from EC hardware or EC device driver"
1781
1782Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
1783runtime error messages have the identical prefix.
1784
1785
17862) iASL Compiler/Disassembler and Tools:
1787
1788AcpiXtract: Fixed a problem with table header detection within the
1789acpidump file. Processing a table could be ended early if a 0x40 (@)
1790appears in the original binary table, resulting in the @ symbol appearing
1791in the decoded ASCII field at the end of the acpidump text line. The
1792symbol caused acpixtract to incorrectly think it had reached the end of
1793the current table and the beginning of a new table.
1794
1795AcpiXtract: Added an option (-f) to ignore some errors during table
1796extraction. This initial implementation ignores non-ASCII and non-
1797printable characters found in the acpidump text file.
1798
1799TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
1800for ASLTS. This feature is used to track memory allocations from
1801different memory caches within the ACPICA code. At the end of an ASLTS
1802run, these memory statistics are recorded and stored in a log file.
1803
1804Debugger (user-space version): Implemented a simple "Background" command.
1805Creates a new thread to execute a control method in the background, while
1806control returns to the debugger prompt to allow additional commands.
1807    Syntax: Background <Namepath> [Arguments]
1808
1809----------------------------------------
181029 September 2017. Summary of changes for version 20170929:
1811
1812
18131) ACPICA kernel-resident subsystem:
1814
1815Redesigned and implemented an improved ASL While() loop timeout
1816mechanism. This mechanism is used to prevent infinite loops in the kernel
1817AML interpreter caused by either non-responsive hardware or incorrect AML
1818code. The new implementation uses AcpiOsGetTimer instead of a simple
1819maximum loop count, and is thus more accurate and constant across
1820different machines. The default timeout is currently 30 seconds, but this
1821may be adjusted later.
1822
1823Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
1824better reflect the new implementation of the loop timeout mechanism.
1825
1826Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
1827and to fix an off-by-one error. Jung-uk Kim.
1828
1829Fixed an EFI build problem by updating the makefiles to for a new file
1830that was added, utstrsuppt.c
1831
1832
18332) iASL Compiler/Disassembler and Tools:
1834
1835Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
1836includes support in the table disassembler, compiler, and template
1837generator.
1838
1839iASL: Added an exception for an illegal type of recursive method
1840invocation. If a method creates named objects, the first recursive call
1841will fail at runtime. This change adds an error detection at compile time
1842to catch the problem up front. Note: Marking such a method as
1843"serialized" will not help with this problem, because the same thread can
1844acquire the method mutex more than once. Example compiler and runtime
1845output:
1846
1847    Method (MTH1)
1848    {
1849        Name (INT1, 1)
1850        MTH1 ()
1851    }
1852
1853    dsdt.asl     22: MTH1 ()
1854    Error    6152 -  ^ Illegal recursive call to method
1855                       that creates named objects (MTH1)
1856
1857Previous runtime exception:
1858    ACPI Error: [INT1] Namespace lookup failure,
1859    AE_ALREADY_EXISTS (20170831/dswload2-465)
1860
1861iASL: Updated support for External() opcodes to improve namespace
1862management and error detection. These changes are related to issues seen
1863with multiple-segment namespace pathnames within External declarations,
1864such as below:
1865
1866    External(\_SB.PCI0.GFX0, DeviceObj)
1867    External(\_SB.PCI0.GFX0.ALSI)
1868
1869iASL: Implemented support for multi-line error/warning messages. This
1870enables more detailed and helpful error messages as below, from the
1871initial deployment for the duplicate names error:
1872
1873    DSDT.iiii   1692:       Device(PEG2) {
1874    Error    6074 -                  ^ Name already exists in scope
1875(PEG2)
1876
1877        Original name creation/declaration below:
1878        DSDT.iiii     93:   External(\_SB.PCI0.PEG2, DeviceObj)
1879
1880AcpiXtract: Added additional flexibility to support differing input hex
1881dump formats. Specifically, hex dumps that contain partial disassembly
1882and/or comments within the ACPI table data definition. There exist some
1883dump utilities seen in the field that create this type of hex dump (such
1884as Simics). For example:
1885
1886    DSDT @ 0xdfffd0c0 (10999 bytes)
1887        Signature DSDT
1888        Length 10999
1889        Revision 1
1890        Checksum 0xf3 (Ok)
1891        OEM_ID BXPC
1892        OEM_table_id BXDSDT
1893        OEM_revision 1
1894        Creator_id 1280593481
1895        Creator_revision 537399345
1896      0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
1897      ...
1898      2af0: 5f 4c 30 46 00 a4 01
1899
1900Test suite: Miscellaneous changes/fixes:
1901    More cleanup and simplification of makefiles
1902    Continue compilation of test cases after a compile failure
1903    Do not perform binary compare unless both files actually exist
1904
1905iASL: Performed some code/module restructuring. Moved all memory
1906allocation functions to new modules. Two new files, aslallocate.c and
1907aslcache.c
1908
1909----------------------------------------
191031 August 2017. Summary of changes for version 20170831:
1911
1912
19131) ACPICA kernel-resident subsystem:
1914
1915Implemented internal support for full 64-bit addresses that appear in all
1916Generic Address Structure (GAS) structures. Previously, only the lower 32
1917bits were used. Affects the use of GAS structures in the FADT and other
1918tables, as well as the GAS structures passed to the AcpiRead and
1919AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
1920
1921Added header support for the PDTT ACPI table (Processor Debug Trigger
1922Table). Full support in the iASL Data Table Compiler and disassembler is
1923forthcoming.
1924
1925
19262) iASL Compiler/Disassembler and Tools:
1927
1928iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
1929Properties Topology Table) where a flag bit was specified in the wrong
1930bit position ("Line Size Valid", bit 6).
1931
1932iASL: Implemented support for Octal integer constants as defined by the
1933ASL language grammar, per the ACPI specification. Any integer constant
1934that starts with a zero is an octal constant. For example,
1935    Store (037777, Local0) /* Octal constant */
1936    Store (0x3FFF, Local0) /* Hex equivalent */
1937    Store (16383,  Local0) /* Decimal equivalent */
1938
1939iASL: Improved overflow detection for 64-bit string conversions during
1940compilation of integer constants. "Overflow" in this case means a string
1941that represents an integer that is too large to fit into a 64-bit value.
1942Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
1943the low-order 32 bits with a warning, as previously implemented. Several
1944new exceptions are defined that indicate a 64-bit overflow, as well as
1945the base (radix) that was used during the attempted conversion. Examples:
1946    Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF        // AE_HEX_OVERFLOW
1947    Local0 = 01111222233334444555566667777     // AE_OCTAL_OVERFLOW
1948    Local0 = 11112222333344445555666677778888  // AE_DECIMAL_OVERFLOW
1949
1950iASL: Added a warning for the case where a ResourceTemplate is declared
1951with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
1952this case, the resulting template is created with a single END_TAG
1953descriptor, which is essentially useless.
1954
1955iASL: Expanded the -vw option (ignore specific warnings/remarks) to
1956include compilation error codes as well.
1957
1958----------------------------------------
195928 July 2017. Summary of changes for version 20170728:
1960
1961
19621) ACPICA kernel-resident subsystem:
1963
1964Fixed a regression seen with small resource descriptors that could cause
1965an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
1966
1967AML interpreter: Implemented a new feature that allows forward references
1968from individual named references within package objects that are
1969contained within blocks of "module-level code". This provides
1970compatibility with other ACPI implementations and supports existing
1971firmware that depends on this feature. Example:
1972
1973    Name (ABCD, 1)
1974    If (ABCD)                       /* An If() at module-level */
1975    {
1976        Name (PKG1, Package()
1977        {
1978            INT1                    /* Forward reference to object INT1
1979*/
1980        })
1981        Name (INT1, 0x1234)
1982    }
1983
1984AML Interpreter: Fixed a problem with the Alias() operator where aliases
1985to some ASL objects were not handled properly. Objects affected are:
1986Mutex, Event, and OperationRegion.
1987
1988AML Debugger: Enhanced to properly handle AML Alias objects. These
1989objects have one level of indirection which was not fully supported by
1990the debugger.
1991
1992Table Manager: Added support to detect and ignore duplicate SSDTs within
1993the XSDT/RSDT. This error in the XSDT has been seen in the field.
1994
1995EFI and EDK2 support:
1996    Enabled /WX flag for MSVC builds
1997    Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
1998    Added local support for 64-bit multiply and shift operations
1999    Added support to compile acpidump.efi on Windows
2000    Added OSL function stubs for interfaces not used under EFI
2001
2002Added additional support for the _DMA predefined name. _DMA returns a
2003buffer containing a resource template. This change add support within the
2004resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
2005resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
2006
2007
20082) iASL Compiler/Disassembler and Tools:
2009
2010iASL: Fixed a problem where the internal input line buffer(s) could
2011overflow if there are very long lines in the input ASL source code file.
2012Implemented buffer management that automatically increases the size of
2013the buffers as necessary.
2014
2015iASL: Added an option (-vx) to "expect" particular remarks, warnings and
2016errors. If the specified exception is not raised during compilation, the
2017compiler emits an error. This is intended to support the ASL test suite,
2018but may be useful in other contexts.
2019
2020iASL: Implemented a new predefined macro, __METHOD__, which returns a
2021string containing the name of the current control method that is being
2022compiled.
2023
2024iASL: Implemented debugger and table compiler support for the SDEI ACPI
2025table (Software Delegated Exception Interface). James Morse
2026<james.morse@arm.com>
2027
2028Unix/Linux makefiles: Added an option to disable compile optimizations.
2029The disable occurs when the NOOPT flag is set to TRUE.
2030theracermaster@gmail.com
2031
2032Acpidump: Added support for multiple DSDT and FACS tables. This can occur
2033when there are different tables for 32-bit versus 64-bit.
2034
2035Enhanced error reporting for the ASL test suite (ASLTS) by removing
2036unnecessary/verbose text, and emit the actual line number where an error
2037has occurred. These changes are intended to improve the usefulness of the
2038test suite.
2039
2040----------------------------------------
204129 June 2017. Summary of changes for version 20170629:
2042
2043
20441) ACPICA kernel-resident subsystem:
2045
2046Tables: Implemented a deferred ACPI table verification. This is useful
2047for operating systems where the tables cannot be verified in the early
2048initialization stage due to early memory mapping limitations on some
2049architectures. Lv Zheng.
2050
2051Tables: Removed the signature validation for dynamically loaded tables.
2052Provides compatibility with other ACPI implementations. Previously, only
2053SSDT tables were allowed, as per the ACPI specification. Now, any table
2054signature can be used via the Load() operator. Lv Zheng.
2055
2056Tables: Fixed several mutex issues that could cause errors during table
2057acquisition. Lv Zheng.
2058
2059Tables: Fixed a problem where an ACPI warning could be generated if a
2060null pointer was passed to the AcpiPutTable interface. Lv Zheng.
2061
2062Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
2063AcpiPutTable interfaces. This applies to the "late stage" table loading
2064when the use of AcpiPutTable is no longer required (since the system
2065memory manager is fully running and available). Lv Zheng.
2066
2067Fixed/Reverted a regression during processing of resource descriptors
2068that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
2069exception in this case.
2070
2071Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
2072I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
2073
2074Interpreter: Fixed a possible fault if an Alias operator with an invalid
2075or duplicate target is encountered during Alias creation in
2076AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
2077
2078Added an option to use designated initializers for function pointers.
2079Kees Cook <keescook@google.com>
2080
2081
20822) iASL Compiler/Disassembler and Tools:
2083
2084iASL: Allow compilation of External declarations with target pathnames
2085that refer to existing named objects within the table. Erik Schmauss.
2086
2087iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
2088FieldUnit name also is declared via External in the same table. Erik
2089Schmauss.
2090
2091iASL: Allow existing scope names within pathnames used in External
2092statements. For example:
2093    External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
2094    Device (ABCD)
2095
2096iASL: IORT ACPI table: Implemented changes required to decode the new
2097Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
2098compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
2099
2100Disassembler: Don't abort disassembly on errors from External()
2101statements. Erik Schmauss.
2102
2103Disassembler: fixed a possible fault when one of the Create*Field
2104operators references a Resource Template. ACPICA Bugzilla 1396.
2105
2106iASL: In the source code, resolved some naming inconsistences across the
2107parsing support. Fixes confusion between "Parse Op" and "Parse Node".
2108Adds a new file, aslparseop.c
2109
2110----------------------------------------
211131 May 2017. Summary of changes for version 20170531:
2112
2113
21140) ACPI 6.2 support:
2115
2116The ACPI specification version 6.2 has been released and is available at
2117http://uefi.org/specifications
2118
2119This version of ACPICA fully supports the ACPI 6.2 specification. Changes
2120are summarized below.
2121
2122New ACPI tables (Table Compiler/Disassembler/Templates):
2123    HMAT (Heterogeneous Memory Attributes Table)
2124    WSMT (Windows SMM Security Mitigation Table)
2125    PPTT (Processor Properties Topology Table)
2126
2127New subtables for existing ACPI tables:
2128    HEST (New subtable, Arch-deferred machine check)
2129    SRAT (New subtable, Arch-specific affinity structure)
2130    PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
2131
2132Simple updates for existing ACPI tables:
2133    BGRT (two new flag bits)
2134    HEST (New bit defined for several subtables, GHES_ASSIST)
2135
2136New Resource Descriptors and Resource macros (Compiler/Disassembler):
2137    PinConfig()
2138    PinFunction()
2139    PinGroup()
2140    PinGroupConfig()
2141    PinGroupFunction()
2142    New type for hardware error notification (section 18.3.2.9)
2143
2144New predefined names/methods (Compiler/Interpreter):
2145    _HMA (Heterogeneous Memory Attributes)
2146    _LSI (Label Storage Information)
2147    _LSR (Label Storage Read)
2148    _LSW (Label Storage Write)
2149
2150ASL grammar/macro changes (Compiler):
2151    For() ASL macro, implemented with the AML while operator
2152    Extensions to Concatenate operator
2153    Support for multiple definition blocks in same ASL file
2154    Clarification for Buffer operator
2155    Allow executable AML code underneath all scopes (Devices, etc.)
2156    Clarification/change for the _OSI return value
2157    ASL grammar update for reference operators
2158    Allow a zero-length string for AML filename in DefinitionBlock
2159
2160Miscellaneous:
2161    New device object notification value
2162    Remove a notify value (0x0C) for graceful shutdown
2163    New UUIDs for processor/cache properties and
2164        physical package property
2165    New _HID, ACPI0014 (Wireless Power Calibration Device)
2166
2167
21681) ACPICA kernel-resident subsystem:
2169
2170Added support to disable ACPI events on hardware-reduced platforms.
2171Eliminates error messages of the form "Could not enable fixed event". Lv
2172Zheng
2173
2174Fixed a problem using Device/Thermal objects with the ObjectType and
2175DerefOf ASL operators. This support had not been fully/properly
2176implemented.
2177
2178Fixed a problem where if a Buffer object containing a resource template
2179was longer than the actual resource template, an error was generated --
2180even though the AML is legal. This case has been seen in the field.
2181
2182Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
2183The values for DUAL_PIC and MULTIPLE_APIC were reversed.
2184
2185Added header file changes for the TPM2 ACPI table. Update to new version
2186of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
2187
2188Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
2189These interfaces are intended to be used only in conjunction with the
2190predefined _DLM method (Device Lock Method). "This object appears in a
2191device scope when AML access to the device must be synchronized with the
2192OS environment".
2193
2194Example Code and Data Size: These are the sizes for the OS-independent
2195acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2196debug version of the code includes the debug output trace mechanism and
2197has a much larger code and data size.
2198
2199  Current Release:
2200    Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
2201    Debug Version:     204.0K Code, 84.3K Data, 288.3K Total
2202  Previous Release:
2203    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
2204    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
2205
2206
22072) iASL Compiler/Disassembler and Tools:
2208
2209iASL: Fixed a problem where an External() declaration could not refer to
2210a Field Unit. Erik Schmauss.
2211
2212Disassembler: Improved support for the Switch/Case operators. This
2213feature will disassemble AML code back to the original Switch operators
2214when possible, instead of an If..Else sequence. David Box
2215
2216iASL and disassembler: Improved the handling of multiple extraneous
2217parentheses for both ASL input and disassembled ASL output.
2218
2219Improved the behavior of the iASL compiler and disassembler to detect
2220improper use of external declarations
2221
2222Disassembler: Now aborts immediately upon detection of an unknown AML
2223opcode. The AML parser has no real way to recover from this, and can
2224result in the creation of an ill-formed parse tree that causes errors
2225later during the disassembly.
2226
2227All tools: Fixed a problem where the Unix application OSL did not handle
2228control-c correctly. For example, a control-c could incorrectly wake the
2229debugger.
2230
2231AcpiExec: Improved the Control-C handling and added a handler for
2232segmentation faults (SIGSEGV). Supports both Windows and Unix-like
2233environments.
2234
2235Reduced the verbosity of the generic unix makefiles. Previously, each
2236compilation displayed the full set of compiler options. This has been
2237eliminated as the options are easily inspected within the makefiles. Each
2238compilation now results in a single line of output.
2239
2240----------------------------------------
224103 March 2017. Summary of changes for version 20170303:
2242
2243
22440) ACPICA licensing:
2245
2246The licensing information at the start of each source code module has
2247been updated. In addition to the Intel license, the dual GPLv2/BSD
2248license has been added for completeness. Now, a single version of the
2249source code should be suitable for all ACPICA customers. This is the
2250major change for this release since it affects all source code modules.
2251
2252
22531) ACPICA kernel-resident subsystem:
2254
2255Fixed two issues with the common asltypes.h header that could cause
2256problems in some environments: (Kim Jung-uk)
2257    Removed typedef for YY_BUFFER_STATE ?
2258       Fixes an error with earlier versions of Flex.
2259    Removed use of FILE typedef (which is only defined in stdio.h)
2260
2261
22622) iASL Compiler/Disassembler and Tools:
2263
2264Disassembler: fixed a regression introduced in 20170224. A fix for a
2265memory leak related to resource descriptor tags (names) could fault when
2266the disassembler was generated with 64-bit compilers.
2267
2268The ASLTS test suite has been updated to implement a new testing
2269architecture. During generation of the suite from ASL source, both the
2270ASL and ASL+ compilers are now validated, as well as the disassembler
2271itself (Erik Schmauss). The architecture executes as follows:
2272
2273    For every ASL source module:
2274        Compile (legacy ASL compilation)
2275        Disassemble the resulting AML to ASL+ source code
2276        Compile the new ASL+ module
2277        Perform a binary compare on the legacy AML and the new ASL+ AML
2278    The ASLTS suite then executes normally using the AML binaries.
2279
2280----------------------------------------
228124 February 2017. Summary of changes for version 20170224:
2282
2283
22841) ACPICA kernel-resident subsystem:
2285
2286Interpreter: Fixed two issues with the control method return value auto-
2287repair feature, where an attempt to double-delete an internal object
2288could result in an ACPICA warning (for _CID repair and others). No fault
2289occurs, however, because the attempted deletion (actually a release to an
2290internal cache) is detected and ignored via object poisoning.
2291
2292Debugger: Fixed an AML interpreter mutex issue during the single stepping
2293of control methods. If certain debugger commands are executed during
2294stepping, a mutex acquire/release error could occur. Lv Zheng.
2295
2296Fixed some issues generating ACPICA with the Intel C compiler by
2297restoring the original behavior and compiler-specific include file in
2298acenv.h. Lv Zheng.
2299
2300Example Code and Data Size: These are the sizes for the OS-independent
2301acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2302debug version of the code includes the debug output trace mechanism and
2303has a much larger code and data size.
2304
2305  Current Release:
2306    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
2307    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
2308  Previous Release:
2309    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2310    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2311
2312
23132) iASL Compiler/Disassembler and Tools:
2314
2315iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
2316tool has been designed, implemented, and included in this release. The
2317key feature of this utility is that the original comments within the
2318input ASL file are preserved during the conversion process, and included
2319within the converted ASL+ file -- thus creating a transparent conversion
2320of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
2321
2322    Usage: iasl -ca <ASL-filename>  // Output is a .dsl file with
2323converted code
2324
2325iASL/Disassembler: Improved the detection and correct disassembly of
2326Switch/Case operators. This feature detects sequences of if/elseif/else
2327operators that originated from ASL Switch/Case/Default operators and
2328emits the original operators. David Box.
2329
2330iASL: Improved the IORT ACPI table support in the following areas. Lv
2331Zheng:
2332    Clear MappingOffset if the MappingCount is zero.
2333    Fix the disassembly of the SMMU GSU interrupt offset.
2334    Update the template file for the IORT table.
2335
2336Disassembler: Enhanced the detection and disassembly of resource
2337template/descriptor within a Buffer object. An EndTag descriptor is now
2338required to have a zero second byte, since all known ASL compilers emit
2339this. This helps eliminate incorrect decisions when a buffer is
2340disassembled (false positives on resource templates).
2341
2342----------------------------------------
234319 January 2017. Summary of changes for version 20170119:
2344
2345
23461) General ACPICA software:
2347
2348Entire source code base: Added the 2017 copyright to all source code
2349legal/licensing module headers and utility/tool signons. This includes
2350the standard Linux dual-license header. This affects virtually every file
2351in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
2352the ACPICA test suite.
2353
2354
23552) iASL Compiler/Disassembler and Tools:
2356
2357iASL: Removed/fixed an inadvertent remark when a method argument
2358containing a reference is used as a target operand within the method (and
2359never used as a simple argument), as in the example below. Jeffrey Hugo.
2360
2361    dsdt.asl   1507:    Store(0x1, Arg0)
2362    Remark   2146 -                ^ Method Argument is never used (Arg0)
2363
2364All tools: Removed the bit width of the compiler that generated the tool
2365from the common signon for all user space tools. This proved to be
2366confusing and unnecessary. This includes similar removal of HARDWARE_NAME
2367from the generic makefiles (Thomas Petazzoni). Example below.
2368
2369    Old:
2370    ASL+ Optimizing Compiler version 20170119-32
2371    ASL+ Optimizing Compiler version 20170119-64
2372
2373    New:
2374    ASL+ Optimizing Compiler version 20170119
2375
2376----------------------------------------
237722 December 2016. Summary of changes for version 20161222:
2378
2379
23801) ACPICA kernel-resident subsystem:
2381
2382AML Debugger: Implemented a new mechanism to simplify and enhance
2383debugger integration into all environments, including kernel debuggers
2384and user-space utilities, as well as remote debug services. This
2385mechanism essentially consists of new OSL interfaces to support debugger
2386initialization/termination, as well as wait/notify interfaces to perform
2387the debugger handshake with the host. Lv Zheng.
2388
2389    New OSL interfaces:
2390        AcpiOsInitializeDebugger (void)
2391        AcpiOsTerminateDebugger (void)
2392        AcpiOsWaitCommandReady (void)
2393        AcpiOsNotifyCommandComplete (void)
2394
2395    New OS services layer:
2396        osgendbg.c -- Example implementation, and used for AcpiExec
2397
2398Update for Generic Address Space (GAS) support: Although the AccessWidth
2399and/or BitOffset fields of the GAS are not often used, this change now
2400fully supports these fields. This affects the internal support for FADT
2401registers, registers in other ACPI data tables, and the AcpiRead and
2402AcpiWrite public interfaces. Lv Zheng.
2403
2404Sleep support: In order to simplify integration of ACPI sleep for the
2405various host operating systems, a new OSL interface has been introduced.
2406AcpiOsEnterSleep allows the host to perform any required operations
2407before the final write to the sleep control register(s) is performed by
2408ACPICA. Lv Zheng.
2409
2410    New OSL interface:
2411        AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
2412
2413    Called from these internal interfaces:
2414        AcpiHwLegacySleep
2415        AcpiHwExtendedSleep
2416
2417EFI support: Added a very small EFI/ACPICA example application. Provides
2418a simple demo for EFI integration, as well as assisting with resolution
2419of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
2420
2421    source/tools/efihello/efihello.c
2422
2423Local C library: Implemented several new functions to enhance ACPICA
2424portability, for environments where these clib functions are not
2425available (such as EFI). Lv Zheng:
2426    putchar
2427    getchar
2428    strpbrk
2429    strtok
2430    memmove
2431
2432Fixed a regression where occasionally a valid resource descriptor was
2433incorrectly detected as invalid at runtime, and a
2434AE_AML_NO_RESOURCE_END_TAG was returned.
2435
2436Fixed a problem with the recently implemented support that enables
2437control method invocations as Target operands to many ASL operators.
2438Warnings of this form: "Needed type [Reference], found [Processor]" were
2439seen at runtime for some method invocations.
2440
2441Example Code and Data Size: These are the sizes for the OS-independent
2442acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2443debug version of the code includes the debug output trace mechanism and
2444has a much larger code and data size.
2445
2446  Current Release:
2447    Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
2448    Debug Version:     201.7K Code, 82.7K Data, 284.4K Total
2449  Previous Release:
2450    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
2451    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
2452
2453
24542) iASL Compiler/Disassembler and Tools:
2455
2456Disassembler: Enhanced output by adding the capability to detect and
2457disassemble ASL Switch/Case statements back to the original ASL source
2458code instead of if/else blocks. David Box.
2459
2460AcpiHelp: Split a large file into separate files based upon
2461functionality/purpose. New files are:
2462    ahaml.c
2463    ahasl.c
2464
2465----------------------------------------
246617 November 2016. Summary of changes for version 20161117:
2467
2468
24691) ACPICA kernel-resident subsystem:
2470
2471Table Manager: Fixed a regression introduced in 20160729, "FADT support
2472cleanup". This was an attempt to remove all references in the source to
2473the FADT version 2, which never was a legal version number. It was
2474skipped because it was an early version of 64-bit support that was
2475eventually abandoned for the current 64-bit support.
2476
2477Interpreter: Fixed a problem where runtime implicit conversion was
2478incorrectly disabled for the ASL operators below. This brings the
2479behavior into compliance with the ACPI specification:
2480    FromBCD
2481    ToBCD
2482    ToDecimalString
2483    ToHexString
2484    ToInteger
2485    ToBuffer
2486
2487Table Manager: Added a new public interface, AcpiPutTable, used to
2488release and free an ACPI table returned by AcpiGetTable and related
2489interfaces. Lv Zheng.
2490
2491Example Code and Data Size: These are the sizes for the OS-independent
2492acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2493debug version of the code includes the debug output trace mechanism and
2494has a much larger code and data size.
2495
2496  Current Release:
2497    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
2498    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
2499  Previous Release:
2500    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
2501    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
2502
2503
25042) iASL Compiler/Disassembler and Tools:
2505
2506Disassembler: Fixed a regression for disassembly of Resource Template.
2507Detection of templates in the AML stream missed some types of templates.
2508
2509iASL: Fixed a problem where an Access Size error was returned for the PCC
2510address space when the AccessSize of the GAS register is greater than a
2511DWORD. Hoan Tran.
2512
2513iASL: Implemented several grammar changes for the operators below. These
2514changes are slated for the next version of the ACPI specification:
2515    RefOf        - Disallow method invocation as an operand
2516    CondRefOf    - Disallow method invocation as an operand
2517    DerefOf      - Disallow operands that use the result from operators
2518that
2519                   do not return a reference (Changed TermArg to
2520SuperName).
2521
2522iASL: Control method invocations are now allowed for Target operands, as
2523per the ACPI specification. Removed error for using a control method
2524invocation as a Target operand.
2525
2526Disassembler: Improved detection of Resource Templates, Unicode, and
2527Strings within Buffer objects. These subtypes do not contain a specific
2528opcode to indicate the originating ASL code, and they must be detected by
2529other means within the disassembler.
2530
2531iASL: Implemented an optimization improvement for 32-bit ACPI tables
2532(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
2533only after 64-bit to 32-bit truncation. A truncation warning message is
2534still emitted, however.
2535
2536AcpiXtract: Implemented handling for both types of line terminators (LF
2537or CR/LF) so that it can accept AcpiDump output files from any system.
2538Peter Wu.
2539
2540AcpiBin: Added two new options for comparing AML files:
2541    -a: compare and display ALL mismatches
2542    -o: start compare at this offset into the second file
2543
2544----------------------------------------
254530 September 2016. Summary of changes for version 20160930:
2546
2547
25481) ACPICA kernel-resident subsystem:
2549
2550Fixed a regression in the internal AcpiTbFindTable function where a non
2551AE_OK exception could inadvertently be returned even if the function did
2552not fail. This problem affects the following operators:
2553    DataTableRegion
2554    LoadTable
2555
2556Fixed a regression in the LoadTable operator where a load to any
2557namespace location other than the root no longer worked properly.
2558
2559Increased the maximum loop count value that will result in the
2560AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
2561prevent infinite loops within the AML interpreter and thus the host OS
2562kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
25631,048,575).
2564
2565Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
2566acpixf.h file. This allows hosts to easily configure the maximum loop
2567count at runtime.
2568
2569Removed an illegal character in the strtoul64.c file. This character
2570caused errors with some C compilers.
2571
2572Example Code and Data Size: These are the sizes for the OS-independent
2573acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2574debug version of the code includes the debug output trace mechanism and
2575has a much larger code and data size.
2576
2577  Current Release:
2578    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
2579    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
2580  Previous Release:
2581    Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
2582    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
2583
2584
25852) iASL Compiler/Disassembler and Tools:
2586
2587Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
2588the simpler ASL ElseIf keyword. During the conversion, a trailing If
2589block could be lost and missing from the disassembled output.
2590
2591iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
2592the missing rule caused a parse error when using the Index operator as an
2593operand to ObjectType. This construct now compiles properly. Example:
2594    ObjectType(PKG1[4]).
2595
2596iASL: Correctly handle unresolved symbols in the hardware map file (-lm
2597option). Previously, unresolved symbols could cause a protection fault.
2598Such symbols are now marked as unresolved in the map file.
2599
2600iASL: Implemented support to allow control method invocations as an
2601operand to the ASL DeRefOf operator. Example:
2602    DeRefOf(MTH1(Local0))
2603
2604Disassembler: Improved support for the ToPLD ASL macro. Detection of a
2605possible _PLD buffer now includes examination of both the normal buffer
2606length (16 or 20) as well as the surrounding AML package length.
2607
2608Disassembler: Fixed a problem with the decoding of complex expressions
2609within the Divide operator for ASL+. For the case where both the quotient
2610and remainder targets are specified, the entire statement cannot be
2611disassembled. Previously, the output incorrectly contained a mix of ASL-
2612and ASL+ operators. This mixed statement causes a syntax error when
2613compiled. Example:
2614    Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly
2615disassembled to:
2616    Divide (INT1 + 6, 128, RSLT, QUOT)
2617
2618iASL/Tools: Added support to process AML and non-AML ACPI tables
2619consistently. For the disassembler and AcpiExec, allow all types of ACPI
2620tables (AML and data tables). For the iASL -e option, allow only AML
2621tables (DSDT/SSDT).
2622
2623----------------------------------------
262431 August 2016. Summary of changes for version 20160831:
2625
2626
26271) ACPICA kernel-resident subsystem:
2628
2629Improve support for the so-called "module-level code", which is defined
2630to be math, logical and control AML opcodes that appear outside of any
2631control method. This change improves the support by adding more opcodes
2632that can be executed in the manner. Some other issues have been solved,
2633and the ASL grammar changes to support such code under all scope
2634operators (Device, etc.) are complete. Lv Zheng.
2635
2636UEFI support: these OSL functions have been implemented. This is an
2637additional step toward supporting the AcpiExec utility natively (with
2638full hardware access) under UEFI. Marcelo Ferreira.
2639    AcpiOsReadPciConfiguration
2640    AcpiOsWritePciConfiguration
2641
2642Fixed a possible mutex error during control method auto-serialization. Lv
2643Zheng.
2644
2645Updated support for the Generic Address Structure by fully implementing
2646all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
2647Zheng.
2648
2649Updated the return value for the internal _OSI method. Instead of
26500xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
2651for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
2652implementations, and will be reflected and clarified in the next version
2653of the ACPI specification.
2654
2655Implemented two new table events that can be passed to an ACPICA table
2656handler. These events are used to indicate a table installation or
2657uninstallation. These events are used in addition to existed table load
2658and unload events. Lv Zheng.
2659
2660Implemented a cleanup for all internal string-to-integer conversions.
2661Consolidate multiple versions of this functionality and limit possible
2662bases to either 10 or 16 to simplify the code. Adds a new file,
2663utstrtoul64.
2664
2665Cleanup the inclusion order of the various compiler-specific headers.
2666This simplifies build configuration management. The compiler-specific
2667headers are now split out from the host-specific headers. Lv Zheng.
2668
2669Example Code and Data Size: These are the sizes for the OS-independent
2670acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2671debug version of the code includes the debug output trace mechanism and
2672has a much larger code and data size.
2673
2674  Current Release:
2675    Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
2676    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
2677
2678
26792) iASL Compiler/Disassembler and Tools:
2680
2681iASL/AcpiExec: Added a command line option to display the build date/time
2682of the tool (-vd). This can be useful to verify that the correct version
2683of the tools are being used.
2684
2685AML Debugger: Implemented a new subcommand ("execute predef") to execute
2686all predefined control methods and names within the current namespace.
2687This can be useful for debugging problems with ACPI tables and the ACPI
2688namespace.
2689
2690----------------------------------------
269129 July 2016. Summary of changes for version 20160729:
2692
2693
26941) ACPICA kernel-resident subsystem:
2695
2696Implemented basic UEFI support for the various ACPICA tools. This
2697includes:
26981) An OSL to implement the various AcpiOs* interfaces on UEFI.
26992) Support to obtain the ACPI tables on UEFI.
27003) Local implementation of required C library functions not available on
2701UEFI.
27024) A front-end (main) function for the tools for UEFI-related
2703initialization.
2704
2705The initial deployment of this support is the AcpiDump utility executing
2706as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
2707Current environments supported are Linux/Unix. MSVC generation is not
2708supported at this time. See the generate/efi/README file for build
2709instructions. Lv Zheng.
2710
2711Future plans include porting the AcpiExec utility to execute natively on
2712the platform with I/O and memory access. This will allow viewing/dump of
2713the platform namespace and native execution of ACPI control methods that
2714access the actual hardware. To fully implement this support, the OSL
2715functions below must be implemented with UEFI interfaces. Any community
2716help in the implementation of these functions would be appreciated:
2717    AcpiOsReadPort
2718    AcpiOsWritePort
2719    AcpiOsReadMemory
2720    AcpiOsWriteMemory
2721    AcpiOsReadPciConfiguration
2722    AcpiOsWritePciConfiguration
2723
2724Restructured and standardized the C library configuration for ACPICA,
2725resulting in the various configuration options below. This includes a
2726global restructuring of the compiler-dependent and platform-dependent
2727include files. These changes may affect the existing platform-dependent
2728configuration files on some hosts. Lv Zheng.
2729
2730The current C library configuration options appear below. For any issues,
2731it may be helpful to examine the existing compiler-dependent and
2732platform-dependent files as examples. Lv Zheng.
2733
27341) Linux kernel:
2735    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2736library.
2737    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
27382) Unix/Windows/BSD applications:
2739    ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
2740library.
2741    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
27423) UEFI applications:
2743    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2744library.
2745    ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
27464) UEFI applications (EDK2/StdLib):
2747    ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
2748    ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
2749
2750
2751AML interpreter: "module-level code" support. Allows for execution of so-
2752called "executable" AML code (math/logical operations, etc.) outside of
2753control methods not just at the module level (top level) but also within
2754any scope declared outside of a control method - Scope{}, Device{},
2755Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
2756
2757Simplified the configuration of the "maximum AML loops" global option by
2758adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
2759modified at runtime.
2760
2761
2762Example Code and Data Size: These are the sizes for the OS-independent
2763acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2764debug version of the code includes the debug output trace mechanism and
2765has a much larger code and data size.
2766
2767  Current Release:
2768    Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
2769    Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
2770
2771
27722) iASL Compiler/Disassembler and Tools:
2773
2774iASL: Add full support for the RASF ACPI table (RAS Features Table).
2775Includes disassembler, data table compiler, and header support.
2776
2777iASL Expand "module-level code" support. Allows for
2778compilation/disassembly of so-called "executable" AML code (math/logical
2779operations, etc.) outside of control methods not just at the module level
2780(top level) but also within any scope declared outside of a control
2781method - Scope{}, Device{}, Processor{}, PowerResource{}, and
2782ThermalZone{}.
2783
2784AcpiDump: Added support for dumping all SSDTs on newer versions of
2785Windows. These tables are now easily available -- SSDTs are not available
2786through the registry on older versions.
2787
2788----------------------------------------
278927 May 2016. Summary of changes for version 20160527:
2790
2791
27921) ACPICA kernel-resident subsystem:
2793
2794Temporarily reverted the new arbitrary bit length/alignment support in
2795AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
2796a number of regressions with the new code that need to be fully resolved
2797and tested before this support can be finally integrated into ACPICA.
2798Apologies for any inconveniences these issues may have caused.
2799
2800The ACPI message macros are not configurable (ACPI_MSG_ERROR,
2801ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
2802and ACPI_MSG_BIOS_WARNING). Lv Zheng.
2803
2804Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
2805option. Adds a new return macro, return_STR. Junk-uk Kim.
2806
2807Example Code and Data Size: These are the sizes for the OS-independent
2808acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2809debug version of the code includes the debug output trace mechanism and
2810has a much larger code and data size.
2811
2812  Current Release:
2813    Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
2814    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2815  Previous Release:
2816    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2817    Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
2818
2819----------------------------------------
282022 April 2016. Summary of changes for version 20160422:
2821
28221) ACPICA kernel-resident subsystem:
2823
2824Fixed a regression in the GAS (generic address structure) arbitrary bit
2825support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
2826and incorrect return values. Lv Zheng. ACPICA BZ 1270.
2827
2828ACPI 6.0: Added support for new/renamed resource macros. One new argument
2829was added to each of these macros, and the original name has been
2830deprecated. The AML disassembler will always disassemble to the new
2831names. Support for the new macros was added to iASL, disassembler,
2832resource manager, and the acpihelp utility. ACPICA BZ 1274.
2833
2834    I2cSerialBus  -> I2cSerialBusV2
2835    SpiSerialBus  -> SpiSerialBusV2
2836    UartSerialBus -> UartSerialBusV2
2837
2838ACPI 6.0: Added support for a new integer field that was appended to the
2839package object returned by the _BIX method. This adds iASL compile-time
2840and AML runtime error checking. ACPICA BZ 1273.
2841
2842ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
2843Subspace Type2" (Headers, Disassembler, and data table compiler).
2844
2845Example Code and Data Size: These are the sizes for the OS-independent
2846acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2847debug version of the code includes the debug output trace mechanism and
2848has a much larger code and data size.
2849
2850  Current Release:
2851    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2852    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2853  Previous Release:
2854    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2855    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2856
2857
28582) iASL Compiler/Disassembler and Tools:
2859
2860iASL: Implemented an ASL grammar extension to allow/enable executable
2861"module-level code" to be created and executed under the various
2862operators that create new scopes. This type of AML code is already
2863supported in all known AML interpreters, and the grammar change will
2864appear in the next version of the ACPI specification. Simplifies the
2865conditional runtime creation of named objects under these object types:
2866
2867    Device
2868    PowerResource
2869    Processor
2870    Scope
2871    ThermalZone
2872
2873iASL: Implemented a new ASL extension, a "For" loop macro to add greater
2874ease-of-use to the ASL language. The syntax is similar to the
2875corresponding C operator, and is implemented with the existing AML While
2876opcode -- thus requiring no changes to existing AML interpreters.
2877
2878    For (Initialize, Predicate, Update) {TermList}
2879
2880Grammar:
2881    ForTerm :=
2882        For (
2883            Initializer    // Nothing | TermArg => ComputationalData
2884            Predicate      // Nothing | TermArg => ComputationalData
2885            Update         // Nothing | TermArg => ComputationalData
2886        ) {TermList}
2887
2888
2889iASL: The _HID/_ADR detection and validation has been enhanced to search
2890under conditionals in order to allow these objects to be conditionally
2891created at runtime.
2892
2893iASL: Fixed several issues with the constant folding feature. The
2894improvement allows better detection and resolution of statements that can
2895be folded at compile time. ACPICA BZ 1266.
2896
2897iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
2898conversion to the ASL ElseIf operator where incorrect ASL code could be
2899generated.
2900
2901iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
2902sometimes an extra (and extraneous) set of parentheses were emitted for
2903some combinations of operators. Although this did not cause any problems
2904with recompilation of the disassembled code, it made the code more
2905difficult to read. David Box. ACPICA BZ 1231.
2906
2907iASL: Changed to ignore the unreferenced detection for predefined names
2908of resource descriptor elements, when the resource descriptor is
2909created/defined within a control method.
2910
2911iASL: Disassembler: Fix a possible fault with externally declared Buffer
2912objects.
2913
2914----------------------------------------
291518 March 2016. Summary of changes for version 20160318:
2916
29171) ACPICA kernel-resident subsystem:
2918
2919Added support for arbitrary bit lengths and bit offsets for registers
2920defined by the Generic Address Structure. Previously, only aligned bit
2921lengths of 8/16/32/64 were supported. This was sufficient for many years,
2922but recently some machines have been seen that require arbitrary bit-
2923level support. ACPICA BZ 1240. Lv Zheng.
2924
2925Fixed an issue where the \_SB._INI method sometimes must be evaluated
2926before any _REG methods are evaluated. Lv Zheng.
2927
2928Implemented several changes related to ACPI table support
2929(Headers/Disassembler/TableCompiler):
2930NFIT: For ACPI 6.1, updated to add some additional new fields and
2931constants.
2932FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
29336).
2934DMAR: Added new constants per the 10/2014 DMAR spec.
2935IORT: Added new subtable per the 10/2015 IORT spec.
2936HEST: For ACPI 6.1, added new constants and new subtable.
2937DBG2: Added new constants per the 12/2015 DBG2 spec.
2938FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
2939ACPICA BZ 1249.
2940ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
2941
2942Updated header support for the DMAR table to match the current version of
2943the related spec.
2944
2945Added extensions to the ASL Concatenate operator to allow any ACPI object
2946to be passed as an operand. Any object other than Integer/String/Buffer
2947simply returns a string containing the object type. This extends the
2948usefulness of the Printf macros. Previously, Concatenate would abort the
2949control method if a non-data object was encountered.
2950
2951ACPICA source code: Deployed the C "const" keyword across the source code
2952where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
2953
2954Example Code and Data Size: These are the sizes for the OS-independent
2955acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2956debug version of the code includes the debug output trace mechanism and
2957has a much larger code and data size.
2958
2959  Current Release:
2960    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2961    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2962  Previous Release:
2963    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2964    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
2965
2966
29672) iASL Compiler/Disassembler and Tools:
2968
2969iASL/Disassembler: Improved the heuristic used to determine the number of
2970arguments for an externally defined control method (a method in another
2971table). Although this is an improvement, there is no deterministic way to
2972"guess" the number of method arguments. Only the ACPI 6.0 External opcode
2973will completely solve this problem as it is deployed (automatically) in
2974newer BIOS code.
2975
2976iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
2977statements that could cause errors when the disassembled file is
2978compiled. ACPICA BZ 1243. David Box.
2979
2980iASL: Fixed a regression caused by the merger of the two versions of the
2981local strtoul64. Because of a dependency on a global variable, strtoul64
2982could return an error for integers greater than a 32-bit value. ACPICA BZ
29831260.
2984
2985iASL: Fixed a regression where a fault could occur for an ASL Return
2986statement if it invokes a control method that is not resolved. ACPICA BZ
29871264.
2988
2989AcpiXtract: Improved input file validation: detection of binary files and
2990non-acpidump text files.
2991
2992----------------------------------------
299312 February 2016. Summary of changes for version 20160212:
2994
29951) ACPICA kernel-resident subsystem:
2996
2997Implemented full support for the ACPI 6.1 specification (released in
2998January). This version of the specification is available at:
2999http://www.uefi.org/specifications
3000
3001Only a relatively small number of changes were required in ACPICA to
3002support ACPI 6.1, in these areas:
3003- New predefined names
3004- New _HID values
3005- A new subtable for HEST
3006- A few other header changes for new values
3007
3008Ensure \_SB_._INI is executed before any _REG methods are executed. There
3009appears to be existing BIOS code that relies on this behavior. Lv Zheng.
3010
3011Reverted a change made in version 20151218 which enabled method
3012invocations to be targets of various ASL operators (SuperName and Target
3013grammar elements). While the new behavior is supported by the ACPI
3014specification, other AML interpreters do not support this behavior and
3015never will. The ACPI specification will be updated for ACPI 6.2 to remove
3016this support. Therefore, the change was reverted to the original ACPICA
3017behavior.
3018
3019ACPICA now supports the GCC 6 compiler.
3020
3021Current Release: (Note: build changes increased sizes)
3022    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
3023    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
3024Previous Release:
3025    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
3026    Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
3027
3028
30292) iASL Compiler/Disassembler and Tools:
3030
3031Completed full support for the ACPI 6.0 External() AML opcode. The
3032compiler emits an external AML opcode for each ASL External statement.
3033This opcode is used by the disassembler to assist with the disassembly of
3034external control methods by specifying the required number of arguments
3035for the method. AML interpreters do not use this opcode. To ensure that
3036interpreters do not even see the opcode, a block of one or more external
3037opcodes is surrounded by an "If(0)" construct. As this feature becomes
3038commonly deployed in BIOS code, the ability of disassemblers to correctly
3039disassemble AML code will be greatly improved. David Box.
3040
3041iASL: Implemented support for an optional cross-reference output file.
3042The -lx option will create a the cross-reference file with the suffix
3043"xrf". Three different types of cross-reference are created in this file:
3044- List of object references made from within each control method
3045- Invocation (caller) list for each user-defined control method
3046- List of references to each non-method object in the namespace
3047
3048iASL: Method invocations as ASL Target operands are now disallowed and
3049flagged as errors in preparation for ACPI 6.2 (see the description of the
3050problem above).
3051
3052----------------------------------------
30538 January 2016. Summary of changes for version 20160108:
3054
30551) ACPICA kernel-resident subsystem:
3056
3057Updated all ACPICA copyrights and signons to 2016: Added the 2016
3058copyright to all source code module headers and utility/tool signons.
3059This includes the standard Linux dual-license header. This affects
3060virtually every file in the ACPICA core subsystem, iASL compiler, all
3061ACPICA utilities, and the ACPICA test suite.
3062
3063Fixed a regression introduced in version 20151218 concerning the
3064execution of so-called module-level ASL/AML code. Namespace objects
3065created under a module-level If() construct were not properly/fully
3066entered into the namespace and could cause an interpreter fault when
3067accessed.
3068
3069Example Code and Data Size: These are the sizes for the OS-independent
3070acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3071debug version of the code includes the debug output trace mechanism and
3072has a much larger code and data size.
3073
3074Current Release:
3075    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
3076    Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
3077  Previous Release:
3078    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
3079    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
3080
3081
30822) iASL Compiler/Disassembler and Tools:
3083
3084Fixed a problem with the compilation of the GpioIo and GpioInt resource
3085descriptors. The _PIN field name was incorrectly defined to be an array
3086of 32-bit values, but the _PIN values are in fact 16 bits each. This
3087would cause incorrect bit width warnings when using Word (16-bit) fields
3088to access the descriptors.
3089
3090
3091----------------------------------------
309218 December 2015. Summary of changes for version 20151218:
3093
30941) ACPICA kernel-resident subsystem:
3095
3096Implemented per-AML-table execution of "module-level code" as individual
3097ACPI tables are loaded into the namespace during ACPICA initialization.
3098In other words, any module-level code within an AML table is executed
3099immediately after the table is loaded, instead of batched and executed
3100after all of the tables have been loaded. This provides compatibility
3101with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
3102David Box.
3103
3104To fully support the feature above, the default operation region handlers
3105for the SystemMemory, SystemIO, and PCI_Config address spaces are now
3106installed before any ACPI tables are loaded. This enables module-level
3107code to access these address spaces during the table load and module-
3108level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
3109Box.
3110
3111Implemented several changes to the internal _REG support in conjunction
3112with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
3113utilities for the changes above. Although these tools were changed, host
3114operating systems that simply use the default handlers for SystemMemory,
3115SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
3116
3117For example, in the code below, DEV1 is conditionally added to the
3118namespace by the DSDT via module-level code that accesses an operation
3119region. The SSDT references DEV1 via the Scope operator. DEV1 must be
3120created immediately after the DSDT is loaded in order for the SSDT to
3121successfully reference DEV1. Previously, this code would cause an
3122AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
3123fully supported by ACPICA.
3124
3125    DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
3126    {
3127        OperationRegion (OPR1, SystemMemory, 0x400, 32)
3128        Field (OPR1, AnyAcc, NoLock, Preserve)
3129        {
3130            FLD1, 1
3131        }
3132        If (FLD1)
3133        {
3134            Device (\DEV1)
3135            {
3136            }
3137        }
3138    }
3139    DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
3140    {
3141        External (\DEV1, DeviceObj)
3142        Scope (\DEV1)
3143        {
3144        }
3145    }
3146
3147Fixed an AML interpreter problem where control method invocations were
3148not handled correctly when the invocation was itself a SuperName argument
3149to another ASL operator. In these cases, the method was not invoked.
3150ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
3151argument:
3152    Store
3153    Acquire, Wait
3154    CondRefOf, RefOf
3155    Decrement, Increment
3156    Load, Unload
3157    Notify
3158    Signal, Release, Reset
3159    SizeOf
3160
3161Implemented automatic String-to-ObjectReference conversion support for
3162packages returned by predefined names (such as _DEP). A common BIOS error
3163is to add double quotes around an ObjectReference namepath, which turns
3164the reference into an unexpected string object. This support detects the
3165problem and corrects it before the package is returned to the caller that
3166invoked the method. Lv Zheng.
3167
3168Implemented extensions to the Concatenate operator. Concatenate now
3169accepts any type of object, it is not restricted to simply
3170Integer/String/Buffer. For objects other than these 3 basic data types,
3171the argument is treated as a string containing the name of the object
3172type. This expands the utility of Concatenate and the Printf/Fprintf
3173macros. ACPICA BZ 1222.
3174
3175Cleaned up the output of the ASL Debug object. The timer() value is now
3176optional and no longer emitted by default. Also, the basic data types of
3177Integer/String/Buffer are simply emitted as their values, without a data
3178type string -- since the data type is obvious from the output. ACPICA BZ
31791221.
3180
3181Example Code and Data Size: These are the sizes for the OS-independent
3182acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3183debug version of the code includes the debug output trace mechanism and
3184has a much larger code and data size.
3185
3186  Current Release:
3187    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
3188    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
3189  Previous Release:
3190    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
3191    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
3192
3193
31942) iASL Compiler/Disassembler and Tools:
3195
3196iASL: Fixed some issues with the ASL Include() operator. This operator
3197was incorrectly defined in the iASL parser rules, causing a new scope to
3198be opened for the code within the include file. This could lead to
3199several issues, including allowing ASL code that is technically illegal
3200and not supported by AML interpreters. Note, this does not affect the
3201related #include preprocessor operator. ACPICA BZ 1212.
3202
3203iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
3204operator is essentially an ASL macro since there is no AML opcode
3205associated with it. The code emitted by the iASL compiler for ElseIf is
3206an Else opcode followed immediately by an If opcode. The disassembler
3207will now emit an ElseIf if it finds an Else immediately followed by an
3208If. This simplifies the decoded ASL, especially for deeply nested
3209If..Else and large Switch constructs. Thus, the disassembled code more
3210closely follows the original source ASL. ACPICA BZ 1211. Example:
3211
3212    Old disassembly:
3213        Else
3214        {
3215            If (Arg0 == 0x02)
3216            {
3217                Local0 = 0x05
3218            }
3219        }
3220
3221    New disassembly:
3222        ElseIf (Arg0 == 0x02)
3223        {
3224            Local0 = 0x05
3225        }
3226
3227AcpiExec: Added support for the new module level code behavior and the
3228early region installation. This required a small change to the
3229initialization, since AcpiExec must install its own operation region
3230handlers.
3231
3232AcpiExec: Added support to make the debug object timer optional. Default
3233is timer disabled. This cleans up the debug object output -- the timer
3234data is rarely used.
3235
3236AcpiExec: Multiple ACPI tables are now loaded in the order that they
3237appear on the command line. This can be important when there are
3238interdependencies/references between the tables.
3239
3240iASL/Templates. Add support to generate template files with multiple
3241SSDTs within a single output file. Also added ommand line support to
3242specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
32431223, 1225.
3244
3245
3246----------------------------------------
324724 November 2015. Summary of changes for version 20151124:
3248
32491) ACPICA kernel-resident subsystem:
3250
3251Fixed a possible regression for a previous update to FADT handling. The
3252FADT no longer has a fixed table ID, causing some issues with code that
3253was hardwired to a specific ID. Lv Zheng.
3254
3255Fixed a problem where the method auto-serialization could interfere with
3256the current SyncLevel. This change makes the auto-serialization support
3257transparent to the SyncLevel support and management.
3258
3259Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
3260interface is intended for early access to the namespace during the
3261initial namespace device discovery walk. The _SUB method has been seen to
3262access operation regions in some cases, causing errors because the
3263operation regions are not fully initialized.
3264
3265AML Debugger: Fixed some issues with the terminate/quit/exit commands
3266that can cause faults. Lv Zheng.
3267
3268AML Debugger: Add thread ID support so that single-step mode only applies
3269to the AML Debugger thread. This prevents runtime errors within some
3270kernels. Lv Zheng.
3271
3272Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
3273methods that are invoked by this interface are optional, removed warnings
3274emitted for the case where one or more of these methods do not exist.
3275ACPICA BZ 1208, original change by Prarit Bhargava.
3276
3277Made a major pass through the entire ACPICA source code base to
3278standardize formatting that has diverged a bit over time. There are no
3279functional changes, but this will of course cause quite a few code
3280differences from the previous ACPICA release.
3281
3282Example Code and Data Size: These are the sizes for the OS-independent
3283acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3284debug version of the code includes the debug output trace mechanism and
3285has a much larger code and data size.
3286
3287  Current Release:
3288    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
3289    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
3290  Previous Release:
3291    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3292    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
3293
3294
32952) iASL Compiler/Disassembler and Tools:
3296
3297iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
3298definition blocks within a single ASL file and the resulting AML file.
3299Support for this type of file was also added to the various tools that
3300use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
3301example code below shows two definition blocks within the same file:
3302
3303    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
33040x12345678)
3305    {
3306    }
3307    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
3308    {
3309    }
3310
3311iASL: Enhanced typechecking for the Name() operator. All expressions for
3312the value of the named object must be reduced/folded to a single constant
3313at compile time, as per the ACPI specification (the AML definition of
3314Name()).
3315
3316iASL: Fixed some code indentation issues for the -ic and -ia options (C
3317and assembly headers). Now all emitted code correctly begins in column 1.
3318
3319iASL: Added an error message for an attempt to open a Scope() on an
3320object defined in an SSDT. The DSDT is always loaded into the namespace
3321first, so any attempt to open a Scope on an SSDT object will fail at
3322runtime.
3323
3324
3325----------------------------------------
332630 September 2015. Summary of changes for version 20150930:
3327
33281) ACPICA kernel-resident subsystem:
3329
3330Debugger: Implemented several changes and bug fixes to assist support for
3331the in-kernel version of the AML debugger. Lv Zheng.
3332- Fix the "predefined" command for in-kernel debugger.
3333- Do not enter debug command loop for the help and version commands.
3334- Disallow "execute" command during execution/single-step of a method.
3335
3336Interpreter: Updated runtime typechecking for all operators that have
3337target operands. The operand is resolved and validated that it is legal.
3338For example, the target cannot be a non-data object such as a Device,
3339Mutex, ThermalZone, etc., as per the ACPI specification.
3340
3341Debugger: Fixed the double-mutex user I/O handshake to work when local
3342deadlock detection is enabled.
3343
3344Debugger: limited display of method locals and arguments (LocalX and
3345ArgX) to only those that have actually been initialized. This prevents
3346lines of extraneous output.
3347
3348Updated the definition of the NFIT table to correct the bit polarity of
3349one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
3350
3351Example Code and Data Size: These are the sizes for the OS-independent
3352acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3353debug version of the code includes the debug output trace mechanism and
3354has a much larger code and data size.
3355
3356  Current Release:
3357    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3358    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
3359  Previous Release:
3360    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
3361    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
3362
3363
33642) iASL Compiler/Disassembler and Tools:
3365
3366iASL: Improved the compile-time typechecking for operands of many of the
3367ASL operators:
3368
3369-- Added an option to disable compiler operand/operator typechecking (-
3370ot).
3371
3372-- For the following operators, the TermArg operands are now validated
3373when possible to be Integer data objects: BankField, OperationRegion,
3374DataTableRegion, Buffer, and Package.
3375
3376-- Store (Source, Target): Both the source and target operands are
3377resolved and checked that the operands are both legal. For example,
3378neither operand can be a non-data object such as a Device, Mutex,
3379ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
3380operator can be used to store an object to any type of target object.
3381
3382-- Store (Source, Target): If the source is a Package object, the target
3383must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
3384is a Package, the source must also be a Package.
3385
3386-- Store (Source, Target): A warning is issued if the source and target
3387resolve to the identical named object.
3388
3389-- Store (Source, <method invocation>): An error is generated for the
3390target method invocation, as this construct is not supported by the AML
3391interpreter.
3392
3393-- For all ASL math and logic operators, the target operand must be a
3394data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
3395includes the function return value also.
3396
3397-- External declarations are also included in the typechecking where
3398possible. External objects defined using the UnknownObj keyword cannot be
3399typechecked, however.
3400
3401iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
3402operator:
3403- Legacy code: Index(PKG1, 3)
3404- New ASL+ code: PKG1[3]
3405This completes the ACPI 6.0 ASL+ support as it was the only operator not
3406supported.
3407
3408iASL: Fixed the file suffix for the preprocessor output file (.i). Two
3409spaces were inadvertently appended to the filename, causing file access
3410and deletion problems on some systems.
3411
3412ASL Test Suite (ASLTS): Updated the master makefile to generate all
3413possible compiler output files when building the test suite -- thus
3414exercising these features of the compiler. These files are automatically
3415deleted when the test suite exits.
3416
3417
3418----------------------------------------
341918 August 2015. Summary of changes for version 20150818:
3420
34211) ACPICA kernel-resident subsystem:
3422
3423Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
3424Zheng. ACPICA BZ 1186.
3425
3426Completed development to ensure that the ACPICA Disassembler and Debugger
3427are fully standalone components of ACPICA. Removed cross-component
3428dependences. Lv Zheng.
3429
3430The max-number-of-AML-loops is now runtime configurable (previously was
3431compile-time only). This is essentially a loop timeout to force-abort
3432infinite AML loops. ACPCIA BZ 1192.
3433
3434Debugger: Cleanup output to dump ACPI names and namepaths without any
3435trailing underscores. Lv Zheng. ACPICA BZ 1135.
3436
3437Removed unnecessary conditional compilations across the Debugger and
3438Disassembler components where entire modules could be left uncompiled.
3439
3440The aapits test is deprecated and has been removed from the ACPICA git
3441tree. The test has never been completed and has not been maintained, thus
3442becoming rather useless. ACPICA BZ 1015, 794.
3443
3444A batch of small changes to close bugzilla and other reports:
3445- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
3446- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
3447- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
3448- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
3449Moore.
3450- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
3451ACPICA BZ 1184.
3452- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
3453operators.
3454- Debugger: Split debugger initialization/termination interfaces. Lv
3455Zheng.
3456- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
3457identification.
3458- AcpiExec: Add debug message during _REG method phase during table
3459load/init.
3460- AcpiNames: Fix a regression where some output was missing and no longer
3461emitted.
3462- Debugger: General cleanup and simplification. Lv Zheng.
3463- Disassembler: Cleanup use of several global option variables. Lv Zheng.
3464
3465Example Code and Data Size: These are the sizes for the OS-independent
3466acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3467debug version of the code includes the debug output trace mechanism and
3468has a much larger code and data size.
3469
3470  Current Release:
3471    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
3472    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
3473  Previous Release:
3474    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
3475    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
3476
3477
34782) iASL Compiler/Disassembler and Tools:
3479
3480AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
3481were not handled properly and caused load errors. Now, properly invoke
3482and use the ACPICA auto-reallocate mechanism for ACPI table data
3483structures. ACPICA BZ 1188
3484
3485AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
3486BZ 1190.
3487
3488AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
3489AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
3490executed during initialization. ACPICA BZ 1187, 1189.
3491
3492iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
3493that corresponds to each disassembled ASL statement, to simplify
3494debugging. ACPICA BZ 1191.
3495
3496Debugger: Add option to the "objects" command to display a summary of the
3497current namespace objects (Object type and count). This is displayed if
3498the command is entered with no arguments.
3499
3500AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
3501
3502
3503----------------------------------------
350417 July 2015. Summary of changes for version 20150717:
3505
35061) ACPICA kernel-resident subsystem:
3507
3508Improved the partitioning between the Debugger and Disassembler
3509components. This allows the Debugger to be used standalone within kernel
3510code without the Disassembler (which is used for single stepping also).
3511This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
3512
3513Debugger: Implemented a new command to trace the execution of control
3514methods (Trace). This is especially useful for the in-kernel version of
3515the debugger when file I/O may not be available for method trace output.
3516See the ACPICA reference for more information. Lv Zheng.
3517
3518Moved all C library prototypes (used for the local versions of these
3519functions when requested) to a new header, acclib.h
3520Cleaned up the use of non-ANSI C library functions. These functions are
3521implemented locally in ACPICA. Moved all such functions to a common
3522source file, utnonansi.c
3523
3524Debugger: Fixed a problem with the "!!" command (get last command
3525executed) where the debugger could enter an infinite loop and eventually
3526crash.
3527
3528Removed the use of local macros that were used for some of the standard C
3529library functions to automatically cast input parameters. This mostly
3530affected the is* functions where the input parameter is defined to be an
3531int. This required a few modifications to the main ACPICA source code to
3532provide casting for these functions and eliminate possible compiler
3533warnings for these parameters.
3534
3535Across the source code, added additional status/error checking to resolve
3536issues discovered by static source code analysis tools such as Coverity.
3537
3538Example Code and Data Size: These are the sizes for the OS-independent
3539acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3540debug version of the code includes the debug output trace mechanism and
3541has a much larger code and data size.
3542
3543  Current Release:
3544    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
3545    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
3546  Previous Release:
3547    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3548    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
3549
3550
35512) iASL Compiler/Disassembler and Tools:
3552
3553iASL: Fixed a regression where the device map file feature no longer
3554worked properly when used in conjunction with the disassembler. It only
3555worked properly with the compiler itself.
3556
3557iASL: Implemented a new warning for method LocalX variables that are set
3558but never used (similar to a C compiler such as gcc). This also applies
3559to ArgX variables that are not defined by the parent method, and are
3560instead (legally) used as local variables.
3561
3562iASL/Preprocessor: Finished the pass-through of line numbers from the
3563preprocessor to the compiler. This ensures that compiler errors/warnings
3564have the correct original line numbers and filenames, regardless of any
3565#include files.
3566
3567iASL/Preprocessor: Fixed a couple of issues with comment handling and the
3568pass-through of comments to the preprocessor output file (which becomes
3569the compiler input file). Also fixed a problem with // comments that
3570appear after a math expression.
3571
3572iASL: Added support for the TCPA server table to the table compiler and
3573template generator. (The client table was already previously supported)
3574
3575iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
3576identify the iASL compiler.
3577
3578Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
3579multiple times. The new names are ACPI_SIGN_NEGATIVE and
3580ACPI_SIGN_POSITIVE.
3581
3582AcpiHelp: Update to expand help messages for the iASL preprocessor
3583directives.
3584
3585
3586----------------------------------------
358719 June 2015. Summary of changes for version 20150619:
3588
3589Two regressions in version 20150616 have been addressed:
3590
3591Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
3592etc.) This update changes ACPICA to only use the standard headers for
3593functions, or the prototypes for the local versions of the C library
3594functions. Across the source code, this required some additional casts
3595for some Clib invocations for portability. Moved all local prototypes to
3596a new file, acclib.h
3597
3598Fixes several problems with recent changes to the handling of the FACS
3599table that could cause some systems not to boot.
3600
3601
3602----------------------------------------
360316 June 2015. Summary of changes for version 20150616:
3604
3605
36061) ACPICA kernel-resident subsystem:
3607
3608Across the entire ACPICA source code base, the various macros for the C
3609library functions (such as ACPI_STRLEN, etc.) have been removed and
3610replaced by the standard C library names (strlen, etc.) The original
3611purpose for these macros is no longer applicable. This simplification
3612reduces the number of macros used in the ACPICA source code
3613significantly, improving readability and maintainability.
3614
3615Implemented support for a new ACPI table, the OSDT. This table, the
3616"override" SDT, can be loaded directly by the host OS at boot time. It
3617enables the replacement of existing namespace objects that were installed
3618via the DSDT and/or SSDTs. The primary purpose for this is to replace
3619buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
3620for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
3621Moore.
3622
3623Added support for systems with (improperly) two FACS tables -- a "32-bit"
3624table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
3625X field). This change will support both automatically. There continues to
3626be systems found with this issue. This support requires a change to the
3627AcpiSetFirmwareWakingVector interface. Also, a public global variable has
3628been added to allow the host to select which FACS is desired
3629(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
3630details Lv Zheng.
3631
3632Added a new feature to allow for systems that do not contain an FACS.
3633Although this is already supported on hardware-reduced platforms, the
3634feature has been extended for all platforms. The reasoning is that we do
3635not want to abort the entire ACPICA initialization just because the
3636system is seriously buggy and has no FACS.
3637
3638Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
3639not correctly transcribed from the ACPI specification in ACPICA version
364020150515.
3641
3642Implemented support for the _CLS object in the AcpiGetObjectInfo external
3643interface.
3644
3645Updated the definitions of the TCPA and TPM2 ACPI tables to the more
3646recent TCG ACPI Specification, December 14, 2014. Table disassembler and
3647compiler also updated. Note: The TCPA "server" table is not supported by
3648the disassembler/table-compiler at this time.
3649
3650ACPI 6.0: Added definitions for the new GIC version field in the MADT.
3651
3652Example Code and Data Size: These are the sizes for the OS-independent
3653acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3654debug version of the code includes the debug output trace mechanism and
3655has a much larger code and data size.
3656
3657  Current Release:
3658    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3659    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
3660  Previous Release:
3661    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
3662    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
3663
3664
36652) iASL Compiler/Disassembler and Tools:
3666
3667Disassembler: Fixed a problem with the new symbolic operator disassembler
3668where incorrect ASL code could be emitted in some cases for the "non-
3669commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
3670ShiftRight. The actual problem cases seem to be rather unusual in common
3671ASL code, however. David Box.
3672
3673Modified the linux version of acpidump to obtain ACPI tables from not
3674just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
3675Zheng.
3676
3677iASL: Fixed a problem where the user preprocessor output file (.i)
3678contained extra data that was not expected. The compiler was using this
3679file as a temporary file and passed through #line directives in order to
3680keep compiler error messages in sync with the input file and line number
3681across multiple include files. The (.i) is no longer a temporary file as
3682the compiler uses a new, different file for the original purpose.
3683
3684iASL: Fixed a problem where comments within the original ASL source code
3685file were not passed through to the preprocessor output file, nor any
3686listing files.
3687
3688iASL: Fixed some issues for the handling of the "#include" preprocessor
3689directive and the similar (but not the same) "Include" ASL operator.
3690
3691iASL: Add support for the new OSDT in both the disassembler and compiler.
3692
3693iASL: Fixed a problem with the constant folding support where a Buffer
3694object could be incorrectly generated (incorrectly formed) during a
3695conversion to a Store() operator.
3696
3697AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
3698description text for the _REV predefined name. _REV now permanently
3699returns 2, as per the ACPI 6.0 specification.
3700
3701Debugger: Enhanced the output of the Debug ASL object for references
3702produced by the Index operator. For Buffers and strings, only output the
3703actual byte pointed to by the index. For packages, only print the single
3704package element decoded by the index. Previously, the entire
3705buffer/string/package was emitted.
3706
3707iASL/Table-compiler: Fixed a regression where the "generic" data types
3708were no longer recognized, causing errors.
3709
3710
3711----------------------------------------
371215 May 2015. Summary of changes for version 20150515:
3713
3714This release implements most of ACPI 6.0 as described below.
3715
37161) ACPICA kernel-resident subsystem:
3717
3718Implemented runtime argument checking and return value checking for all
3719new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
3720_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
3721
3722Example Code and Data Size: These are the sizes for the OS-independent
3723acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3724debug version of the code includes the debug output trace mechanism and
3725has a much larger code and data size.
3726
3727  Current Release:
3728    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
3729    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
3730  Previous Release:
3731    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
3732    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
3733
3734
37352) iASL Compiler/Disassembler and Tools:
3736
3737iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
3738names (argument count validation and return value typechecking.)
3739
3740iASL disassembler and table compiler: implemented support for all new
3741ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
3742
3743iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
3744tables: FADT, MADT.
3745
3746iASL preprocessor: Added a new directive to enable inclusion of binary
3747blobs into ASL code. The new directive is #includebuffer. It takes a
3748binary file as input and emits a named ascii buffer object into the ASL
3749code.
3750
3751AcpiHelp: Added support for all new ACPI 6.0 predefined names.
3752
3753AcpiHelp: Added a new option, -d, to display all iASL preprocessor
3754directives.
3755
3756AcpiHelp: Added a new option, -t, to display all known/supported ACPI
3757tables.
3758
3759
3760----------------------------------------
376110 April 2015. Summary of changes for version 20150410:
3762
3763Reverted a change introduced in version 20150408 that caused
3764a regression in the disassembler where incorrect operator
3765symbols could be emitted.
3766
3767
3768----------------------------------------
376908 April 2015. Summary of changes for version 20150408:
3770
3771
37721) ACPICA kernel-resident subsystem:
3773
3774Permanently set the return value for the _REV predefined name. It now
3775returns 2 (was 5). This matches other ACPI implementations. _REV will be
3776deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
3777for ACPI 2.0 and later. It should never be used to differentiate or
3778identify operating systems.
3779
3780Added the "Windows 2015" string to the _OSI support. ACPICA will now
3781return TRUE to a query with this string.
3782
3783Fixed several issues with the local version of the printf function.
3784
3785Added the C99 compiler option (-std=c99) to the Unix makefiles.
3786
3787  Current Release:
3788    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
3789    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
3790  Previous Release:
3791    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3792    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3793
3794
37952) iASL Compiler/Disassembler and Tools:
3796
3797iASL: Implemented an enhancement to the constant folding feature to
3798transform the parse tree to a simple Store operation whenever possible:
3799    Add (2, 3, X) ==> is converted to: Store (5, X)
3800    X = 2 + 3     ==> is converted to: Store (5, X)
3801
3802Updated support for the SLIC table (Software Licensing Description Table)
3803in both the Data Table compiler and the disassembler. The SLIC table
3804support now conforms to "Microsoft Software Licensing Tables (SLIC and
3805MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
3806following the ACPI header is now defined to be "Proprietary Data", and as
3807such, can only be entered or displayed as a hex data block.
3808
3809Implemented full support for the MSDM table as described in the document
3810above. Note: The format of MSDM is similar to SLIC. Any MSDM data
3811following the ACPI header is defined to be "Proprietary Data", and can
3812only be entered or displayed as a hex data block.
3813
3814Implemented the -Pn option for the iASL Table Compiler (was only
3815implemented for the ASL compiler). This option disables the iASL
3816preprocessor.
3817
3818Disassembler: For disassembly of Data Tables, added a comment field
3819around the Ascii equivalent data that is emitted as part of the "Raw
3820Table Data" block. This prevents the iASL Preprocessor from possible
3821confusion if/when the table is compiled.
3822
3823Disassembler: Added an option (-df) to force the disassembler to assume
3824that the table being disassembled contains valid AML. This feature is
3825useful for disassembling AML files that contain ACPI signatures other
3826than DSDT or SSDT (such as OEMx or other signatures).
3827
3828Changes for the EFI version of the tools:
38291) Fixed a build error/issue
38302) Fixed a cast warning
3831
3832iASL: Fixed a path issue with the __FILE__ operator by making the
3833directory prefix optional within the internal SplitInputFilename
3834function.
3835
3836Debugger: Removed some unused global variables.
3837
3838Tests: Updated the makefile for proper generation of the AAPITS suite.
3839
3840
3841----------------------------------------
384204 February 2015. Summary of changes for version 20150204:
3843
3844ACPICA kernel-resident subsystem:
3845
3846Updated all ACPICA copyrights and signons to 2014. Added the 2014
3847copyright to all module headers and signons, including the standard Linux
3848header. This affects virtually every file in the ACPICA core subsystem,
3849iASL compiler, all ACPICA utilities, and the test suites.
3850
3851Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
3852A raw gpe handling mechanism was created to allow better handling of GPE
3853storms that aren't easily managed by the normal handler. The raw handler
3854allows disabling/renabling of the GPE so that interrupt storms can be
3855avoided in cases where events cannot be timely serviced. In this
3856scenario, handlers should use the AcpiSetGpe() API to disable/enable the
3857GPE. This API will leave the reference counts undisturbed, thereby
3858preventing unintentional clearing of the GPE when the intent in only to
3859temporarily disable it. Raw handlers allow enabling and disabling of a
3860GPE by removing GPE register locking. As such, raw handlers much provide
3861their own locks while using GPE API's to protect access to GPE data
3862structures.
3863Lv Zheng
3864
3865Events: Always modify GPE registers under the GPE lock.
3866Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
3867values. Reported as bug by joe.liu@apple.com.
3868
3869Unix makefiles: Separate option to disable optimizations and
3870_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
3871NOOPT disable option and creates a separate flag (NOFORTIFY) for this
3872purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
3873errors when building ACPICA. This allows disabling the option without
3874also having to disable optimazations.
3875David Box
3876
3877  Current Release:
3878    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3879    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
3880
3881--
3882--------------------------------------
388307 November 2014. Summary of changes for version 20141107:
3884
3885This release is available at https://acpica.org/downloads
3886
3887This release introduces and implements language extensions to ASL that
3888provide support for symbolic ("C-style") operators and expressions. These
3889language extensions are known collectively as ASL+.
3890
3891
38921) iASL Compiler/Disassembler and Tools:
3893
3894Disassembler: Fixed a problem with disassembly of the UartSerialBus
3895macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
3896Box.
3897
3898Disassembler: Fixed the Unicode macro support to add escape sequences.
3899All non-printable ASCII values are emitted as escape sequences, as well
3900as the standard escapes for quote and backslash. Ensures that the
3901disassembled macro can be correctly recompiled.
3902
3903iASL: Added Printf/Fprintf macros for formatted output. These macros are
3904translated to existing AML Concatenate and Store operations. Printf
3905writes to the ASL Debug object. Fprintf allows the specification of an
3906ASL name as the target. Only a single format specifier is required, %o,
3907since the AML interpreter dynamically converts objects to the required
3908type. David E. Box.
3909
3910    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3911                 (Concatenate (Concatenate (Concatenate ("", Arg0),
3912                 ": Unexpected value for "), Arg1), ", "), Arg2),
3913                 " at line "), Arg3), Debug)
3914
3915    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
3916                 Arg0, Arg1, Arg2, Arg3)
3917
3918    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3919                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
3920
3921    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
3922
3923iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
3924ASL parse tree before the AML code is generated. This allows blocks of
3925ASL code to be removed in order to help locate and identify problem
3926devices and/or code. David E. Box.
3927
3928AcpiExec: Added support (-fi) for an optional namespace object
3929initialization file. This file specifies initial values for namespace
3930objects as necessary for debugging and testing different ASL code paths
3931that may be taken as a result of BIOS options.
3932
3933
39342) Overview of symbolic operator support for ASL (ASL+)
3935-------------------------------------------------------
3936
3937As an extension to the ASL language, iASL implements support for symbolic
3938(C-style) operators for math and logical expressions. This can greatly
3939simplify ASL code as well as improve both readability and
3940maintainability. These language extensions can exist concurrently with
3941all legacy ASL code and expressions.
3942
3943The symbolic extensions are 100% compatible with existing AML
3944interpreters, since no new AML opcodes are created. To implement the
3945extensions, the iASL compiler transforms the symbolic expressions into
3946the legacy ASL/AML equivalents at compile time.
3947
3948Full symbolic expressions are supported, along with the standard C
3949precedence and associativity rules.
3950
3951Full disassembler support for the symbolic expressions is provided, and
3952creates an automatic migration path for existing ASL code to ASL+ code
3953via the disassembly process. By default, the disassembler now emits ASL+
3954code with symbolic expressions. An option (-dl) is provided to force the
3955disassembler to emit legacy ASL code if desired.
3956
3957Below is the complete list of the currently supported symbolic operators
3958with examples. See the iASL User Guide for additional information.
3959
3960
3961ASL+ Syntax      Legacy ASL Equivalent
3962-----------      ---------------------
3963
3964    // Math operators
3965
3966Z = X + Y        Add (X, Y, Z)
3967Z = X - Y        Subtract (X, Y, Z)
3968Z = X * Y        Multiply (X, Y, Z)
3969Z = X / Y        Divide (X, Y, , Z)
3970Z = X % Y        Mod (X, Y, Z)
3971Z = X << Y       ShiftLeft (X, Y, Z)
3972Z = X >> Y       ShiftRight (X, Y, Z)
3973Z = X & Y        And (X, Y, Z)
3974Z = X | Y        Or (X, Y, Z)
3975Z = X ^ Y        Xor (X, Y, Z)
3976Z = ~X           Not (X, Z)
3977X++              Increment (X)
3978X--              Decrement (X)
3979
3980    // Logical operators
3981
3982(X == Y)         LEqual (X, Y)
3983(X != Y)         LNotEqual (X, Y)
3984(X < Y)          LLess (X, Y)
3985(X > Y)          LGreater (X, Y)
3986(X <= Y)         LLessEqual (X, Y)
3987(X >= Y)         LGreaterEqual (X, Y)
3988(X && Y)         LAnd (X, Y)
3989(X || Y)         LOr (X, Y)
3990(!X)             LNot (X)
3991
3992    // Assignment and compound assignment operations
3993
3994X = Y           Store (Y, X)
3995X += Y          Add (X, Y, X)
3996X -= Y          Subtract (X, Y, X)
3997X *= Y          Multiply (X, Y, X)
3998X /= Y          Divide (X, Y, , X)
3999X %= Y          Mod (X, Y, X)
4000X <<= Y         ShiftLeft (X, Y, X)
4001X >>= Y         ShiftRight (X, Y, X)
4002X &= Y          And (X, Y, X)
4003X |= Y          Or (X, Y, X)
4004X ^= Y          Xor (X, Y, X)
4005
4006
40073) ASL+ Examples:
4008-----------------
4009
4010Legacy ASL:
4011        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
4012            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
40130x03FB),
4014            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
4015        {
4016            And (MEMB, 0xFFFFFFF0, SRMB)
4017            Store (MEMB, Local2)
4018            Store (PDBM, Local1)
4019            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
4020            Store (SRMB, MEMB)
4021            Or (PDBM, 0x02, PDBM)
4022        }
4023
4024ASL+ version:
4025        If (((R510 & 0x03FB) == 0x02E0) ||
4026            ((R520 & 0x03FB) == 0x02E0) ||
4027            ((R530 & 0x03FB) == 0x02E0) ||
4028            ((R540 & 0x03FB) == 0x02E0))
4029        {
4030            SRMB = (MEMB & 0xFFFFFFF0)
4031            Local2 = MEMB
4032            Local1 = PDBM
4033            PDBM &= 0xFFFFFFFFFFFFFFF9
4034            MEMB = SRMB
4035            PDBM |= 0x02
4036        }
4037
4038Legacy ASL:
4039        Store (0x1234, Local1)
4040        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
4041        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
4042        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
4043        Store (Index (PKG1, 0x03), Local6)
4044        Store (Add (Local3, Local2), Debug)
4045        Add (Local1, 0x0F, Local2)
4046        Add (Local1, Multiply (Local2, Local3), Local2)
4047        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
4048
4049ASL+ version:
4050        Local1 = 0x1234
4051        Local3 = (((Local1 + TEST) + 0x20) * Local2)
4052        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
4053        Local3 = (Local1 + (TEST + (0x20 * Local2)))
4054        Local6 = Index (PKG1, 0x03)
4055        Debug = (Local3 + Local2)
4056        Local2 = (Local1 + 0x0F)
4057        Local2 = (Local1 + (Local2 * Local3))
4058        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
4059
4060
4061----------------------------------------
406226 September 2014. Summary of changes for version 20140926:
4063
40641) ACPICA kernel-resident subsystem:
4065
4066Updated the GPIO operation region handler interface (GeneralPurposeIo).
4067In order to support GPIO Connection objects with multiple pins, along
4068with the related Field objects, the following changes to the interface
4069have been made: The Address is now defined to be the offset in bits of
4070the field unit from the previous invocation of a Connection. It can be
4071viewed as a "Pin Number Index" into the connection resource descriptor.
4072The BitWidth is the exact bit width of the field. It is usually one bit,
4073but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
4074additional information and examples.
4075
4076GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
4077corresponding _Lxx/_Exx methods are disabled (they may have been enabled
4078by the firmware), so that they cannot fire until they are enabled via
4079AcpiUpdateAllGpes. Rafael J. Wysocki.
4080
4081Added a new return flag for the Event/GPE status interfaces --
4082AcpiGetEventStatus and AcpiGetGpeStatus. The new
4083ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
4084GPE currently has a handler associated with it, and can thus actually
4085affect the system. Lv Zheng.
4086
4087Example Code and Data Size: These are the sizes for the OS-independent
4088acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4089debug version of the code includes the debug output trace mechanism and
4090has a much larger code and data size.
4091
4092  Current Release:
4093    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
4094    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
4095  Previous Release:
4096    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
4097    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
4098
40992) iASL Compiler/Disassembler and Tools:
4100
4101iASL: Fixed a memory allocation/free regression introduced in 20140828
4102that could cause the compiler to crash. This was introduced inadvertently
4103during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
41041113.
4105
4106iASL: Removed two error messages that have been found to create false
4107positives, until they can be fixed and fully validated (ACPICA BZ 1112):
41081) Illegal forward reference within a method
41092) Illegal reference across two methods
4110
4111iASL: Implemented a new option (-lm) to create a hardware mapping file
4112that summarizes all GPIO, I2C, SPI, and UART connections. This option
4113works for both the compiler and disassembler. See the iASL compiler user
4114guide for additional information and examples (section 6.4.6).
4115
4116AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
4117version 2. This corrects the AE_BAD_HEADER exception seen on systems with
4118a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
4119
4120AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
4121unless STDIN is actually a terminal. Assists with batch-mode processing.
4122ACPICA BZ 1114.
4123
4124Disassembler/AcpiHelp: Added another large group of recognized _HID
4125values.
4126
4127
4128----------------------------------------
412928 August 2014. Summary of changes for version 20140828:
4130
41311) ACPICA kernel-resident subsystem:
4132
4133Fixed a problem related to the internal use of the Timer() operator where
4134a 64-bit divide could cause an attempted link to a double-precision math
4135library. This divide is not actually necessary, so the code was
4136restructured to eliminate it. Lv Zheng.
4137
4138ACPI 5.1: Added support for the runtime validation of the _DSD package
4139(similar to the iASL support).
4140
4141ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
4142SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
4143
4144Example Code and Data Size: These are the sizes for the OS-independent
4145acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4146debug version of the code includes the debug output trace mechanism and
4147has a much larger code and data size.
4148
4149  Current Release:
4150    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
4151    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
4152  Previous Release:
4153    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
4154    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
4155
41562) iASL Compiler/Disassembler and Tools:
4157
4158AcpiExec: Fixed a problem on unix systems where the original terminal
4159state was not always properly restored upon exit. Seen when using the -v
4160option. ACPICA BZ 1104.
4161
4162iASL: Fixed a problem with the validation of the ranges/length within the
4163Memory24 resource descriptor. There was a boundary condition when the
4164range was equal to the (length -1) caused by the fact that these values
4165are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
4166
4167Disassembler: Fixed a problem with the GpioInt descriptor interrupt
4168polarity
4169flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
4170is
4171now supported properly.
4172
4173ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
4174in the disassembler, data table compiler, and table template generator.
4175
4176iASL: Added a requirement for Device() objects that one of either a _HID
4177or _ADR must exist within the scope of a Device, as per the ACPI
4178specification. Remove a similar requirement that was incorrectly in place
4179for the _DSD object.
4180
4181iASL: Added error detection for illegal named references within control
4182methods that would cause runtime failures. Now trapped as errors are: 1)
4183References to objects within a non-parent control method. 2) Forward
4184references (within a method) -- for control methods, AML interpreters use
4185a one-pass parse of control methods. ACPICA BZ 1008.
4186
4187iASL: Added error checking for dependencies related to the _PSx power
4188methods. ACPICA BZ 1029.
41891) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
4190_PS3.
41912) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
4192scope.
4193
4194iASL and table compiler: Cleanup miscellaneous memory leaks by fully
4195deploying the existing object and string caches and adding new caches for
4196the table compiler.
4197
4198iASL: Split the huge parser source file into multiple subfiles to improve
4199manageability. Generation now requires the M4 macro preprocessor, which
4200is part of the Bison distribution on both unix and windows platforms.
4201
4202AcpiSrc: Fixed and removed all extraneous warnings generated during
4203entire ACPICA source code scan and/or conversion.
4204
4205
4206----------------------------------------
4207
420824 July 2014. Summary of changes for version 20140724:
4209
4210The ACPI 5.1 specification has been released and is available at:
4211http://uefi.org/specs/access
4212
4213
42140) ACPI 5.1 support in ACPICA:
4215
4216ACPI 5.1 is fully supported in ACPICA as of this release.
4217
4218New predefined names. Support includes iASL and runtime ACPICA
4219validation.
4220    _CCA (Cache Coherency Attribute).
4221    _DSD (Device-Specific Data). David Box.
4222
4223Modifications to existing ACPI tables. Support includes headers, iASL
4224Data Table compiler, disassembler, and the template generator.
4225    FADT - New fields and flags. Graeme Gregory.
4226    GTDT - One new subtable and new fields. Tomasz Nowicki.
4227    MADT - Two new subtables. Tomasz Nowicki.
4228    PCCT - One new subtable.
4229
4230Miscellaneous.
4231    New notification type for System Resource Affinity change events.
4232
4233
42341) ACPICA kernel-resident subsystem:
4235
4236Fixed a regression introduced in 20140627 where a fault can happen during
4237the deletion of Alias AML namespace objects. The problem affected both
4238the core ACPICA and the ACPICA tools including iASL and AcpiExec.
4239
4240Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
4241simple mechanism to enable wake GPEs that have no associated handler or
4242control method. Rafael Wysocki.
4243
4244Updated the AcpiEnableGpe interface to disallow the enable if there is no
4245handler or control method associated with the particular GPE. This will
4246help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
4247
4248Updated GPE handling and dispatch by disabling the GPE before clearing
4249the status bit for edge-triggered GPEs. Lv Zheng.
4250
4251Added Timer() support to the AML Debug object. The current timer value is
4252now displayed with each invocation of (Store to) the debug object to
4253enable simple generation of execution times for AML code (method
4254execution for example.) ACPICA BZ 1093.
4255
4256Example Code and Data Size: These are the sizes for the OS-independent
4257acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4258debug version of the code includes the debug output trace mechanism and
4259has a much larger code and data size.
4260
4261  Current Release:
4262    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
4263    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
4264  Previous Release:
4265    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
4266    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
4267
4268
42692) iASL Compiler/Disassembler and Tools:
4270
4271Fixed an issue with the recently added local printf implementation,
4272concerning width/precision specifiers that could cause incorrect output.
4273Lv Zheng. ACPICA BZ 1094.
4274
4275Disassembler: Added support to detect buffers that contain UUIDs and
4276disassemble them to an invocation of the ToUUID operator. Also emit
4277commented descriptions of known ACPI-related UUIDs.
4278
4279AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
4280-u. Adds three new files.
4281
4282iASL: Update table compiler and disassembler for DMAR table changes that
4283were introduced in September 2013. With assistance by David Woodhouse.
4284
4285----------------------------------------
428627 June 2014. Summary of changes for version 20140627:
4287
42881) ACPICA kernel-resident subsystem:
4289
4290Formatted Output: Implemented local versions of standard formatted output
4291utilities such as printf, etc. Over time, it has been discovered that
4292there are in fact many portability issues with printf, and the addition
4293of this feature will fix/prevent these issues once and for all. Some
4294known issues are summarized below:
4295
42961) Output of 64-bit values is not portable. For example, UINT64 is %ull
4297for the Linux kernel and is %uI64 for some MSVC versions.
42982) Invoking printf consistently in a manner that is portable across both
429932-bit and 64-bit platforms is difficult at best in many situations.
43003) The output format for pointers varies from system to system (leading
4301zeros especially), and leads to inconsistent output from ACPICA across
4302platforms.
43034) Certain platform-specific printf formats may conflict with ACPICA use.
43045) If there is no local C library available, ACPICA now has local support
4305for printf.
4306
4307-- To address these printf issues in a complete manner, ACPICA now
4308directly implements a small subset of printf format specifiers, only
4309those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
4310
4311Implemented support for ACPICA generation within the EFI environment.
4312Initially, the AcpiDump utility is supported in the UEFI shell
4313environment. Lv Zheng.
4314
4315Added a new external interface, AcpiLogError, to improve ACPICA
4316portability. This allows the host to redirect error messages from the
4317ACPICA utilities. Lv Zheng.
4318
4319Added and deployed new OSL file I/O interfaces to improve ACPICA
4320portability:
4321  AcpiOsOpenFile
4322  AcpiOsCloseFile
4323  AcpiOsReadFile
4324  AcpiOsWriteFile
4325  AcpiOsGetFileOffset
4326  AcpiOsSetFileOffset
4327There are C library implementations of these functions in the new file
4328service_layers/oslibcfs.c -- however, the functions can be implemented by
4329the local host in any way necessary. Lv Zheng.
4330
4331Implemented a mechanism to disable/enable ACPI table checksum validation
4332at runtime. This can be useful when loading tables very early during OS
4333initialization when it may not be possible to map the entire table in
4334order to compute the checksum. Lv Zheng.
4335
4336Fixed a buffer allocation issue for the Generic Serial Bus support.
4337Originally, a fixed buffer length was used. This change allows for
4338variable-length buffers based upon the protocol indicated by the field
4339access attributes. Reported by Lan Tianyu. Lv Zheng.
4340
4341Fixed a problem where an object detached from a namespace node was not
4342properly terminated/cleared and could cause a circular list problem if
4343reattached. ACPICA BZ 1063. David Box.
4344
4345Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
4346
4347Fixed a possible memory leak in an error return path within the function
4348AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
4349
4350Example Code and Data Size: These are the sizes for the OS-independent
4351acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4352debug version of the code includes the debug output trace mechanism and
4353has a much larger code and data size.
4354
4355  Current Release:
4356    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
4357    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
4358  Previous Release:
4359    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
4360    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
4361
4362
43632) iASL Compiler/Disassembler and Tools:
4364
4365Disassembler: Add dump of ASCII equivalent text within a comment at the
4366end of each line of the output for the Buffer() ASL operator.
4367
4368AcpiDump: Miscellaneous changes:
4369  Fixed repetitive table dump in -n mode.
4370  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
4371the ACPI 2.0 GUID fails.
4372
4373iASL: Fixed a problem where the compiler could fault if incorrectly given
4374an acpidump output file as input. ACPICA BZ 1088. David Box.
4375
4376AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
4377they are invoked without any arguments.
4378
4379Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
43801086. Colin Ian King.
4381
4382Disassembler: Cleaned up a block of code that extracts a parent Op
4383object. Added a comment that explains that the parent is guaranteed to be
4384valid in this case. ACPICA BZ 1069.
4385
4386
4387----------------------------------------
438824 April 2014. Summary of changes for version 20140424:
4389
43901) ACPICA kernel-resident subsystem:
4391
4392Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
4393Some of these tables are known to contain a trailing NULL entry. Lv
4394Zheng.
4395
4396Removed an extraneous error message for the case where there are a large
4397number of system GPEs (> 124). This was the "32-bit FADT register is too
4398long to convert to GAS struct" message, which is irrelevant for GPEs
4399since the GPEx_BLK_LEN fields of the FADT are always used instead of the
4400(limited capacity) GAS bit length. Also, several changes to ensure proper
4401support for GPE numbers > 255, where some "GPE number" fields were 8-bits
4402internally.
4403
4404Implemented and deployed additional configuration support for the public
4405ACPICA external interfaces. Entire classes of interfaces can now be
4406easily modified or configured out, replaced by stubbed inline functions
4407by default. Lv Zheng.
4408
4409Moved all public ACPICA runtime configuration globals to the public
4410ACPICA external interface file for convenience. Also, removed some
4411obsolete/unused globals. See the file acpixf.h. Lv Zheng.
4412
4413Documentation: Added a new section to the ACPICA reference describing the
4414maximum number of GPEs that can be supported by the FADT-defined GPEs in
4415block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
4416reference.
4417
4418Example Code and Data Size: These are the sizes for the OS-independent
4419acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4420debug version of the code includes the debug output trace mechanism and
4421has a much larger code and data size.
4422
4423  Current Release:
4424    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
4425    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
4426  Previous Release:
4427    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
4428    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
4429
4430
44312) iASL Compiler/Disassembler and Tools:
4432
4433iASL and disassembler: Add full support for the LPIT table (Low Power
4434Idle Table). Includes support in the disassembler, data table compiler,
4435and template generator.
4436
4437AcpiDump utility:
44381) Add option to force the use of the RSDT (over the XSDT).
44392) Improve validation of the RSDP signature (use 8 chars instead of 4).
4440
4441iASL: Add check for predefined packages that are too large.  For
4442predefined names that contain subpackages, check if each subpackage is
4443too large. (Check for too small already exists.)
4444
4445Debugger: Updated the GPE command (which simulates a GPE by executing the
4446GPE code paths in ACPICA). The GPE device is now optional, and defaults
4447to the GPE 0/1 FADT-defined blocks.
4448
4449Unix application OSL: Update line-editing support. Add additional error
4450checking and take care not to reset terminal attributes on exit if they
4451were never set. This should help guarantee that the terminal is always
4452left in the previous state on program exit.
4453
4454
4455----------------------------------------
445625 March 2014. Summary of changes for version 20140325:
4457
44581) ACPICA kernel-resident subsystem:
4459
4460Updated the auto-serialize feature for control methods. This feature
4461automatically serializes all methods that create named objects in order
4462to prevent runtime errors. The update adds support to ignore the
4463currently executing AML SyncLevel when invoking such a method, in order
4464to prevent disruption of any existing SyncLevel priorities that may exist
4465in the AML code. Although the use of SyncLevels is relatively rare, this
4466change fixes a regression where an AE_AML_MUTEX_ORDER exception can
4467appear on some machines starting with the 20140214 release.
4468
4469Added a new external interface to allow the host to install ACPI tables
4470very early, before the namespace is even created. AcpiInstallTable gives
4471the host additional flexibility for ACPI table management. Tables can be
4472installed directly by the host as if they had originally appeared in the
4473XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
4474(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
4475with additional internal restructuring and cleanup. See the ACPICA
4476Reference for interface details. Lv Zheng.
4477
4478Added validation of the checksum for all incoming dynamically loaded
4479tables (via external interfaces or via AML Load/LoadTable operators). Lv
4480Zheng.
4481
4482Updated the use of the AcpiOsWaitEventsComplete interface during Notify
4483and GPE handler removal. Restructured calls to eliminate possible race
4484conditions. Lv Zheng.
4485
4486Added a warning for the use/execution of the ASL/AML Unload (table)
4487operator. This will help detect and identify machines that use this
4488operator if and when it is ever used. This operator has never been seen
4489in the field and the usage model and possible side-effects of the drastic
4490runtime action of a full table removal are unknown.
4491
4492Reverted the use of #pragma push/pop which was introduced in the 20140214
4493release. It appears that push and pop are not implemented by enough
4494compilers to make the use of this feature feasible for ACPICA at this
4495time. However, these operators may be deployed in a future ACPICA
4496release.
4497
4498Added the missing EXPORT_SYMBOL macros for the install and remove SCI
4499handler interfaces.
4500
4501Source code generation:
45021) Disabled the use of the "strchr" macro for the gcc-specific
4503generation. For some versions of gcc, this macro can periodically expose
4504a compiler bug which in turn causes compile-time error(s).
45052) Added support for PPC64 compilation. Colin Ian King.
4506
4507Example Code and Data Size: These are the sizes for the OS-independent
4508acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4509debug version of the code includes the debug output trace mechanism and
4510has a much larger code and data size.
4511
4512  Current Release:
4513    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
4514    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
4515  Previous Release:
4516    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
4517    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
4518
4519
45202) iASL Compiler/Disassembler and Tools:
4521
4522Disassembler: Added several new features to improve the readability of
4523the resulting ASL code. Extra information is emitted within comment
4524fields in the ASL code:
45251) Known _HID/_CID values are decoded to descriptive text.
45262) Standard values for the Notify() operator are decoded to descriptive
4527text.
45283) Target operands are expanded to full pathnames (in a comment) when
4529possible.
4530
4531Disassembler: Miscellaneous updates for extern() handling:
45321) Abort compiler if file specified by -fe option does not exist.
45332) Silence unnecessary warnings about argument count mismatches.
45343) Update warning messages concerning unresolved method externals.
45354) Emit "UnknownObj" keyword for externals whose type cannot be
4536determined.
4537
4538AcpiHelp utility:
45391) Added the -a option to display both the ASL syntax and the AML
4540encoding for an input ASL operator. This effectively displays all known
4541information about an ASL operator with one AcpiHelp invocation.
45422) Added substring match support (similar to a wildcard) for the -i
4543(_HID/PNP IDs) option.
4544
4545iASL/Disassembler: Since this tool does not yet support execution on big-
4546endian machines, added detection of endianness and an error message if
4547execution is attempted on big-endian. Support for big-endian within iASL
4548is a feature that is on the ACPICA to-be-done list.
4549
4550AcpiBin utility:
45511) Remove option to extract binary files from an acpidump; this function
4552is made obsolete by the AcpiXtract utility.
45532) General cleanup of open files and allocated buffers.
4554
4555
4556----------------------------------------
455714 February 2014. Summary of changes for version 20140214:
4558
45591) ACPICA kernel-resident subsystem:
4560
4561Implemented a new mechanism to proactively prevent problems with ill-
4562behaved reentrant control methods that create named ACPI objects. This
4563behavior is illegal as per the ACPI specification, but is nonetheless
4564frequently seen in the field. Previously, this could lead to an
4565AE_ALREADY_EXISTS exception if the method was actually entered by more
4566than one thread. This new mechanism detects such methods at table load
4567time and marks them "serialized" to prevent reentrancy. A new global
4568option, AcpiGbl_AutoSerializeMethods, has been added to disable this
4569feature if desired. This mechanism and global option obsoletes and
4570supersedes the previous AcpiGbl_SerializeAllMethods option.
4571
4572Added the "Windows 2013" string to the _OSI support. ACPICA will now
4573respond TRUE to _OSI queries with this string. It is the stated policy of
4574ACPICA to add new strings to the _OSI support as soon as possible after
4575they are defined. See the full ACPICA _OSI policy which has been added to
4576the utilities/utosi.c file.
4577
4578Hardened/updated the _PRT return value auto-repair code:
45791) Do not abort the repair on a single subpackage failure, continue to
4580check all subpackages.
45812) Add check for the minimum subpackage length (4).
45823) Properly handle extraneous NULL package elements.
4583
4584Added support to avoid the possibility of infinite loops when traversing
4585object linked lists. Never allow an infinite loop, even in the face of
4586corrupted object lists.
4587
4588ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
4589pack(pop) directives to ensure that the ACPICA headers are independent of
4590compiler settings or other host headers.
4591
4592Example Code and Data Size: These are the sizes for the OS-independent
4593acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4594debug version of the code includes the debug output trace mechanism and
4595has a much larger code and data size.
4596
4597  Current Release:
4598    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
4599    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
4600  Previous Release:
4601    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
4602    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
4603
4604
46052) iASL Compiler/Disassembler and Tools:
4606
4607iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
4608first reserved field was incorrectly forced to have a value of zero. This
4609change correctly forces the field to have a value of one. ACPICA BZ 1081.
4610
4611Debugger: Added missing support for the "Extra" and "Data" subobjects
4612when displaying object data.
4613
4614Debugger: Added support to display entire object linked lists when
4615displaying object data.
4616
4617iASL: Removed the obsolete -g option to obtain ACPI tables from the
4618Windows registry. This feature has been superseded by the acpidump
4619utility.
4620
4621
4622----------------------------------------
462314 January 2014. Summary of changes for version 20140114:
4624
46251) ACPICA kernel-resident subsystem:
4626
4627Updated all ACPICA copyrights and signons to 2014. Added the 2014
4628copyright to all module headers and signons, including the standard Linux
4629header. This affects virtually every file in the ACPICA core subsystem,
4630iASL compiler, all ACPICA utilities, and the test suites.
4631
4632Improved parameter validation for AcpiInstallGpeBlock. Added the
4633following checks:
46341) The incoming device handle refers to type ACPI_TYPE_DEVICE.
46352) There is not already a GPE block attached to the device.
4636Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
4637device.
4638
4639Correctly support "references" in the ACPI_OBJECT. This change fixes the
4640support to allow references (namespace nodes) to be passed as arguments
4641to control methods via the evaluate object interface. This is probably
4642most useful for testing purposes, however.
4643
4644Improved support for 32/64 bit physical addresses in printf()-like
4645output. This change improves the support for physical addresses in printf
4646debug statements and other output on both 32-bit and 64-bit hosts. It
4647consistently outputs the appropriate number of bytes for each host. The
4648%p specifier is unsatisfactory since it does not emit uniform output on
4649all hosts/clib implementations (on some, leading zeros are not supported,
4650leading to difficult-to-read output).
4651
4652Example Code and Data Size: These are the sizes for the OS-independent
4653acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4654debug version of the code includes the debug output trace mechanism and
4655has a much larger code and data size.
4656
4657  Current Release:
4658    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
4659    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
4660  Previous Release:
4661    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
4662    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
4663
4664
46652) iASL Compiler/Disassembler and Tools:
4666
4667iASL: Fix a possible fault when using the Connection() operator. Fixes a
4668problem if the parent Field definition for the Connection operator refers
4669to an operation region that does not exist. ACPICA BZ 1064.
4670
4671AcpiExec: Load of local test tables is now optional. The utility has the
4672capability to load some various tables to test features of ACPICA.
4673However, there are enough of them that the output of the utility became
4674confusing. With this change, only the required local tables are displayed
4675(RSDP, XSDT, etc.) along with the actual tables loaded via the command
4676line specification. This makes the default output simler and easier to
4677understand. The -el command line option restores the original behavior
4678for testing purposes.
4679
4680AcpiExec: Added support for overlapping operation regions. This change
4681expands the simulation of operation regions by supporting regions that
4682overlap within the given address space. Supports SystemMemory and
4683SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
4684
4685AcpiExec: Added region handler support for PCI_Config and EC spaces. This
4686allows AcpiExec to simulate these address spaces, similar to the current
4687support for SystemMemory and SystemIO.
4688
4689Debugger: Added new command to read/write/compare all namespace objects.
4690The command "test objects" will exercise the entire namespace by writing
4691new values to each data object, and ensuring that the write was
4692successful. The original value is then restored and verified.
4693
4694Debugger: Added the "test predefined" command. This change makes this
4695test public and puts it under the new "test" command. The test executes
4696each and every predefined name within the current namespace.
4697
4698
4699----------------------------------------
470018 December 2013. Summary of changes for version 20131218:
4701
4702Global note: The ACPI 5.0A specification was released this month. There
4703are no changes needed for ACPICA since this release of ACPI is an
4704errata/clarification release. The specification is available at
4705acpi.info.
4706
4707
47081) ACPICA kernel-resident subsystem:
4709
4710Added validation of the XSDT root table if it is present. Some older
4711platforms contain an XSDT that is ill-formed or otherwise invalid (such
4712as containing some or all entries that are NULL pointers). This change
4713adds a new function to validate the XSDT before actually using it. If the
4714XSDT is found to be invalid, ACPICA will now automatically fall back to
4715using the RSDT instead. Original implementation by Zhao Yakui. Ported to
4716ACPICA and enhanced by Lv Zheng and Bob Moore.
4717
4718Added a runtime option to ignore the XSDT and force the use of the RSDT.
4719This change adds a runtime option that will force ACPICA to use the RSDT
4720instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
4721requires that an XSDT be used instead of the RSDT, the XSDT has been
4722found to be corrupt or ill-formed on some machines. Lv Zheng.
4723
4724Added a runtime option to favor 32-bit FADT register addresses over the
472564-bit addresses. This change adds an option to favor 32-bit FADT
4726addresses when there is a conflict between the 32-bit and 64-bit versions
4727of the same register. The default behavior is to use the 64-bit version
4728in accordance with the ACPI specification. This can now be overridden via
4729the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
4730
4731During the change above, the internal "Convert FADT" and "Verify FADT"
4732functions have been merged to simplify the code, making it easier to
4733understand and maintain. ACPICA BZ 933.
4734
4735Improve exception reporting and handling for GPE block installation.
4736Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
4737status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
4738
4739Added helper macros to extract bus/segment numbers from the HEST table.
4740This change adds two macros to extract the encoded bus and segment
4741numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
4742Betty Dall <betty.dall@hp.com>
4743
4744Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
4745by ACPICA. It is not a public macro, so it should have no effect on
4746existing OSV code. Lv Zheng.
4747
4748Example Code and Data Size: These are the sizes for the OS-independent
4749acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4750debug version of the code includes the debug output trace mechanism and
4751has a much larger code and data size.
4752
4753  Current Release:
4754    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
4755    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
4756  Previous Release:
4757    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4758    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4759
4760
47612) iASL Compiler/Disassembler and Tools:
4762
4763Disassembler: Improved pathname support for emitted External()
4764statements. This change adds full pathname support for external names
4765that have been resolved internally by the inclusion of additional ACPI
4766tables (via the iASL -e option). Without this change, the disassembler
4767can emit multiple externals for the same object, or it become confused
4768when the Scope() operator is used on an external object. Overall, greatly
4769improves the ability to actually recompile the emitted ASL code when
4770objects a referenced across multiple ACPI tables. Reported by Michael
4771Tsirkin (mst@redhat.com).
4772
4773Tests/ASLTS: Updated functional control suite to execute with no errors.
4774David Box. Fixed several errors related to the testing of the interpreter
4775slack mode. Lv Zheng.
4776
4777iASL: Added support to detect names that are declared within a control
4778method, but are unused (these are temporary names that are only valid
4779during the time the method is executing). A remark is issued for these
4780cases. ACPICA BZ 1022.
4781
4782iASL: Added full support for the DBG2 table. Adds full disassembler,
4783table compiler, and template generator support for the DBG2 table (Debug
4784Port 2 table).
4785
4786iASL: Added full support for the PCCT table, update the table definition.
4787Updates the PCCT table definition in the actbl3.h header and adds table
4788compiler and template generator support.
4789
4790iASL: Added an option to emit only error messages (no warnings/remarks).
4791The -ve option will enable only error messages, warnings and remarks are
4792suppressed. This can simplify debugging when only the errors are
4793important, such as when an ACPI table is disassembled and there are many
4794warnings and remarks -- but only the actual errors are of real interest.
4795
4796Example ACPICA code (source/tools/examples): Updated the example code so
4797that it builds to an actual working program, not just example code. Added
4798ACPI tables and execution of an example control method in the DSDT. Added
4799makefile support for Unix generation.
4800
4801
4802----------------------------------------
480315 November 2013. Summary of changes for version 20131115:
4804
4805This release is available at https://acpica.org/downloads
4806
4807
48081) ACPICA kernel-resident subsystem:
4809
4810Resource Manager: Fixed loop termination for the "get AML length"
4811function. The loop previously had an error termination on a NULL resource
4812pointer, which can never happen since the loop simply increments a valid
4813resource pointer. This fix changes the loop to terminate with an error on
4814an invalid end-of-buffer condition. The problem can be seen as an
4815infinite loop by callers to AcpiSetCurrentResources with an invalid or
4816corrupted resource descriptor, or a resource descriptor that is missing
4817an END_TAG descriptor. Reported by Dan Carpenter
4818<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
4819
4820Table unload and ACPICA termination: Delete all attached data objects
4821during namespace node deletion. This fix updates namespace node deletion
4822to delete the entire list of attached objects (attached via
4823AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
48241024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
4825
4826ACPICA termination: Added support to delete all objects attached to the
4827root namespace node. This fix deletes any and all objects that have been
4828attached to the root node via AcpiAttachData. Previously, none of these
4829objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
4830
4831Debug output: Do not emit the function nesting level for the in-kernel
4832build. The nesting level is really only useful during a single-thread
4833execution. Therefore, only enable this output for the AcpiExec utility.
4834Also, only emit the thread ID when executing under AcpiExec (Context
4835switches are still always detected and a message is emitted). ACPICA BZ
4836972.
4837
4838Example Code and Data Size: These are the sizes for the OS-independent
4839acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4840debug version of the code includes the debug output trace mechanism and
4841has a much larger code and data size.
4842
4843  Current Release:
4844    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4845    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4846  Previous Release:
4847    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4848    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4849
4850
48512) iASL Compiler/Disassembler and Tools:
4852
4853AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
4854correct portable POSIX header for terminal control functions.
4855
4856Disassembler: Fixed control method invocation issues related to the use
4857of the CondRefOf() operator. The problem is seen in the disassembly where
4858control method invocations may not be disassembled properly if the
4859control method name has been used previously as an argument to CondRefOf.
4860The solution is to not attempt to emit an external declaration for the
4861CondRefOf target (it is not necessary in the first place). This prevents
4862disassembler object type confusion. ACPICA BZ 988.
4863
4864Unix Makefiles: Added an option to disable compiler optimizations and the
4865_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
4866with optimizations (reportedly, gcc 4.4 for example). This change adds a
4867command line option for make (NOOPT) that disables all compiler
4868optimizations and the _FORTIFY_SOURCE compiler flag. The default
4869optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
48701034. Lv Zheng, Bob Moore.
4871
4872Tests/ASLTS: Added options to specify individual test cases and modes.
4873This allows testers running aslts.sh to optionally specify individual
4874test modes and test cases. Also added an option to disable the forced
4875generation of the ACPICA tools from source if desired. Lv Zheng.
4876
4877----------------------------------------
487827 September 2013. Summary of changes for version 20130927:
4879
4880This release is available at https://acpica.org/downloads
4881
4882
48831) ACPICA kernel-resident subsystem:
4884
4885Fixed a problem with store operations to reference objects. This change
4886fixes a problem where a Store operation to an ArgX object that contained
4887a
4888reference to a field object did not complete the automatic dereference
4889and
4890then write to the actual field object. Instead, the object type of the
4891field object was inadvertently changed to match the type of the source
4892operand. The new behavior will actually write to the field object (buffer
4893field or field unit), thus matching the correct ACPI-defined behavior.
4894
4895Implemented support to allow the host to redefine individual OSL
4896prototypes. This change enables the host to redefine OSL prototypes found
4897in the acpiosxf.h file. This allows the host to implement OSL interfaces
4898with a macro or inlined function. Further, it allows the host to add any
4899additional required modifiers such as __iomem, __init, __exit, etc., as
4900necessary on a per-interface basis. Enables maximum flexibility for the
4901OSL interfaces. Lv Zheng.
4902
4903Hardcoded the access width for the FADT-defined reset register. The ACPI
4904specification requires the reset register width to be 8 bits. ACPICA now
4905hardcodes the width to 8 and ignores the FADT width value. This provides
4906compatibility with other ACPI implementations that have allowed BIOS code
4907with bad register width values to go unnoticed. Matthew Garett, Bob
4908Moore,
4909Lv Zheng.
4910
4911Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
4912used
4913in the OSL header (acpiosxf). The change modifies the position of this
4914macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
4915build issues if the OSL defines the implementation of the interface to be
4916an inline stub function. Lv Zheng.
4917
4918Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
4919initialization interfaces. This change adds a new macro for the main init
4920and terminate external interfaces in order to support hosts that require
4921additional or different processing for these functions. Changed from
4922ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
4923Zheng, Bob Moore.
4924
4925Cleaned up the memory allocation macros for configurability. In the
4926common
4927case, the ACPI_ALLOCATE and related macros now resolve directly to their
4928respective AcpiOs* OSL interfaces. Two options:
49291) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
4930default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
49312) For AcpiExec (and for debugging), the macros can optionally be
4932resolved
4933to the local ACPICA interfaces that track each allocation (local tracking
4934is used to immediately detect memory leaks).
4935Lv Zheng.
4936
4937Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
4938to predefine this macro to either TRUE or FALSE during the system build.
4939
4940Replaced __FUNCTION_ with __func__ in the gcc-specific header.
4941
4942Example Code and Data Size: These are the sizes for the OS-independent
4943acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4944debug version of the code includes the debug output trace mechanism and
4945has a much larger code and data size.
4946
4947  Current Release:
4948    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4949    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4950  Previous Release:
4951    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
4952    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4953
4954
49552) iASL Compiler/Disassembler and Tools:
4956
4957iASL: Implemented wildcard support for the -e option. This simplifies use
4958when there are many SSDTs that must be included to resolve external
4959method
4960declarations. ACPICA BZ 1041. Example:
4961    iasl -e ssdt*.dat -d dsdt.dat
4962
4963AcpiExec: Add history/line-editing for Unix/Linux systems. This change
4964adds a portable module that implements full history and limited line
4965editing for Unix and Linux systems. It does not use readline() due to
4966portability issues. Instead it uses the POSIX termio interface to put the
4967terminal in raw input mode so that the various special keys can be
4968trapped
4969(such as up/down-arrow for history support and left/right-arrow for line
4970editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
4971
4972AcpiXtract: Add support to handle (ignore) "empty" lines containing only
4973one or more spaces. This provides compatible with early or different
4974versions of the AcpiDump utility. ACPICA BZ 1044.
4975
4976AcpiDump: Do not ignore tables that contain only an ACPI table header.
4977Apparently, some BIOSs create SSDTs that contain an ACPI table header but
4978no other data. This change adds support to dump these tables. Any tables
4979shorter than the length of an ACPI table header remain in error (an error
4980message is emitted). Reported by Yi Li.
4981
4982Debugger: Echo actual command along with the "unknown command" message.
4983
4984----------------------------------------
498523 August 2013. Summary of changes for version 20130823:
4986
49871) ACPICA kernel-resident subsystem:
4988
4989Implemented support for host-installed System Control Interrupt (SCI)
4990handlers. Certain ACPI functionality requires the host to handle raw
4991SCIs. For example, the "SCI Doorbell" that is defined for memory power
4992state support requires the host device driver to handle SCIs to examine
4993if the doorbell has been activated. Multiple SCI handlers can be
4994installed to allow for future expansion. New external interfaces are
4995AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
4996details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
4997
4998Operation region support: Never locally free the handler "context"
4999pointer. This change removes some dangerous code that attempts to free
5000the handler context pointer in some (rare) circumstances. The owner of
5001the handler owns this pointer and the ACPICA code should never touch it.
5002Although not seen to be an issue in any kernel, it did show up as a
5003problem (fault) under AcpiExec. Also, set the internal storage field for
5004the context pointer to zero when the region is deactivated, simply for
5005sanity. David Box. ACPICA BZ 1039.
5006
5007AcpiRead: On error, do not modify the return value target location. If an
5008error happens in the middle of a split 32/32 64-bit I/O operation, do not
5009modify the target of the return value pointer. Makes the code consistent
5010with the rest of ACPICA. Bjorn Helgaas.
5011
5012Example Code and Data Size: These are the sizes for the OS-independent
5013acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5014debug version of the code includes the debug output trace mechanism and
5015has a much larger code and data size.
5016
5017  Current Release:
5018    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
5019    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
5020  Previous Release:
5021    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
5022    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
5023
5024
50252) iASL Compiler/Disassembler and Tools:
5026
5027AcpiDump: Implemented several new features and fixed some problems:
50281) Added support to dump the RSDP, RSDT, and XSDT tables.
50292) Added support for multiple table instances (SSDT, UEFI).
50303) Added option to dump "customized" (overridden) tables (-c).
50314) Fixed a problem where some table filenames were improperly
5032constructed.
50335) Improved some error messages, removed some unnecessary messages.
5034
5035iASL: Implemented additional support for disassembly of ACPI tables that
5036contain invocations of external control methods. The -fe<file> option
5037allows the import of a file that specifies the external methods along
5038with the required number of arguments for each -- allowing for the
5039correct disassembly of the table. This is a workaround for a limitation
5040of AML code where the disassembler often cannot determine the number of
5041arguments required for an external control method and generates incorrect
5042ASL code. See the iASL reference for details. ACPICA BZ 1030.
5043
5044Debugger: Implemented a new command (paths) that displays the full
5045pathnames (namepaths) and object types of all objects in the namespace.
5046This is an alternative to the namespace command.
5047
5048Debugger: Implemented a new command (sci) that invokes the SCI dispatch
5049mechanism and any installed handlers.
5050
5051iASL: Fixed a possible segfault for "too many parent prefixes" condition.
5052This can occur if there are too many parent prefixes in a namepath (for
5053example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
5054
5055Application OSLs: Set the return value for the PCI read functions. These
5056functions simply return AE_OK, but should set the return value to zero
5057also. This change implements this. ACPICA BZ 1038.
5058
5059Debugger: Prevent possible command line buffer overflow. Increase the
5060size of a couple of the debugger line buffers, and ensure that overflow
5061cannot happen. ACPICA BZ 1037.
5062
5063iASL: Changed to abort immediately on serious errors during the parsing
5064phase. Due to the nature of ASL, there is no point in attempting to
5065compile these types of errors, and they typically end up causing a
5066cascade of hundreds of errors which obscure the original problem.
5067
5068----------------------------------------
506925 July 2013. Summary of changes for version 20130725:
5070
50711) ACPICA kernel-resident subsystem:
5072
5073Fixed a problem with the DerefOf operator where references to FieldUnits
5074and BufferFields incorrectly returned the parent object, not the actual
5075value of the object. After this change, a dereference of a FieldUnit
5076reference results in a read operation on the field to get the value, and
5077likewise, the appropriate BufferField value is extracted from the target
5078buffer.
5079
5080Fixed a problem where the _WAK method could cause a fault under these
5081circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
5082method returned no value. The problem is rarely seen because most kernels
5083run ACPICA in slack mode.
5084
5085For the DerefOf operator, a fatal error now results if an attempt is made
5086to dereference a reference (created by the Index operator) to a NULL
5087package element. Provides compatibility with other ACPI implementations,
5088and this behavior will be added to a future version of the ACPI
5089specification.
5090
5091The ACPI Power Management Timer (defined in the FADT) is now optional.
5092This provides compatibility with other ACPI implementations and will
5093appear in the next version of the ACPI specification. If there is no PM
5094Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
5095zero in the FADT indicates no PM timer.
5096
5097Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
5098allows the host to globally enable/disable all vendor strings, all
5099feature strings, or both. Intended to be primarily used for debugging
5100purposes only. Lv Zheng.
5101
5102Expose the collected _OSI data to the host via a global variable. This
5103data tracks the highest level vendor ID that has been invoked by the BIOS
5104so that the host (and potentially ACPICA itself) can change behaviors
5105based upon the age of the BIOS.
5106
5107Example Code and Data Size: These are the sizes for the OS-independent
5108acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5109debug version of the code includes the debug output trace mechanism and
5110has a much larger code and data size.
5111
5112  Current Release:
5113    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
5114    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
5115  Previous Release:
5116    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
5117    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
5118
5119
51202) iASL Compiler/Disassembler and Tools:
5121
5122iASL: Created the following enhancements for the -so option (create
5123offset table):
51241)Add offsets for the last nameseg in each namepath for every supported
5125object type
51262)Add support for Processor, Device, Thermal Zone, and Scope objects
51273)Add the actual AML opcode for the parent object of every supported
5128object type
51294)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
5130
5131Disassembler: Emit all unresolved external symbols in a single block.
5132These are external references to control methods that could not be
5133resolved, and thus, the disassembler had to make a guess at the number of
5134arguments to parse.
5135
5136iASL: The argument to the -T option (create table template) is now
5137optional. If not specified, the default table is a DSDT, typically the
5138most common case.
5139
5140----------------------------------------
514126 June 2013. Summary of changes for version 20130626:
5142
51431) ACPICA kernel-resident subsystem:
5144
5145Fixed an issue with runtime repair of the _CST object. Null or invalid
5146elements were not always removed properly. Lv Zheng.
5147
5148Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
5149FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
5150the maximum number of GPEs is 1016. Use of multiple GPE block devices
5151makes the system-wide number of GPEs essentially unlimited.
5152
5153Example Code and Data Size: These are the sizes for the OS-independent
5154acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5155debug version of the code includes the debug output trace mechanism and
5156has a much larger code and data size.
5157
5158  Current Release:
5159    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
5160    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
5161  Previous Release:
5162    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
5163    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
5164
5165
51662) iASL Compiler/Disassembler and Tools:
5167
5168Portable AcpiDump: Implemented full support for the Linux and FreeBSD
5169hosts. Now supports Linux, FreeBSD, and Windows.
5170
5171Disassembler: Added some missing types for the HEST and EINJ tables: "Set
5172Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
5173
5174iASL/Preprocessor: Implemented full support for nested
5175#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
5176
5177Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
5178max. The original purpose of this constraint was to limit the amount of
5179debug output. However, the string function in question (UtPrintString) is
5180now used for the disassembler also, where 256 bytes is insufficient.
5181Reported by RehabMan@GitHub.
5182
5183iASL/DataTables: Fixed some problems and issues with compilation of DMAR
5184tables. ACPICA BZ 999. Lv Zheng.
5185
5186iASL: Fixed a couple of error exit issues that could result in a "Could
5187not delete <file>" message during ASL compilation.
5188
5189AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
5190the actual signatures for these tables are "FACP" and "APIC",
5191respectively.
5192
5193AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
5194tables are allowed to have multiple instances.
5195
5196----------------------------------------
519717 May 2013. Summary of changes for version 20130517:
5198
51991) ACPICA kernel-resident subsystem:
5200
5201Fixed a regression introduced in version 20130328 for _INI methods. This
5202change fixes a problem introduced in 20130328 where _INI methods are no
5203longer executed properly because of a memory block that was not
5204initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
5205<tomasz.nowicki@linaro.org>.
5206
5207Fixed a possible problem with the new extended sleep registers in the
5208ACPI
52095.0 FADT. Do not use these registers (even if populated) unless the HW-
5210reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
52111020. Lv Zheng.
5212
5213Implemented return value repair code for _CST predefined objects: Sort
5214the
5215list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
5216
5217Implemented a debug-only option to disable loading of SSDTs from the
5218RSDT/XSDT during ACPICA initialization. This can be useful for debugging
5219ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
5220acglobal.h - ACPICA BZ 1005. Lv Zheng.
5221
5222Fixed some issues in the ACPICA initialization and termination code:
5223Tomasz Nowicki <tomasz.nowicki@linaro.org>
52241) Clear events initialized flag upon event component termination. ACPICA
5225BZ 1013.
52262) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
52273) Delete global lock pending lock during termination. ACPICA BZ 1012.
52284) Clear debug buffer global on termination to prevent possible multiple
5229delete. ACPICA BZ 1010.
5230
5231Standardized all switch() blocks across the entire source base. After
5232many
5233years, different formatting for switch() had crept in. This change makes
5234the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
5235
5236Split some files to enhance ACPICA modularity and configurability:
52371) Split buffer dump routines into utilities/utbuffer.c
52382) Split internal error message routines into utilities/uterror.c
52393) Split table print utilities into tables/tbprint.c
52404) Split iASL command-line option processing into asloptions.c
5241
5242Makefile enhancements:
52431) Support for all new files above.
52442) Abort make on errors from any subcomponent. Chao Guan.
52453) Add build support for Apple Mac OS X. Liang Qi.
5246
5247Example Code and Data Size: These are the sizes for the OS-independent
5248acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5249debug version of the code includes the debug output trace mechanism and
5250has a much larger code and data size.
5251
5252  Current Release:
5253    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
5254    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
5255  Previous Release:
5256    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
5257    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
5258
5259
52602) iASL Compiler/Disassembler and Tools:
5261
5262New utility: Implemented an easily portable version of the acpidump
5263utility to extract ACPI tables from the system (or a file) in an ASCII
5264hex
5265dump format. The top-level code implements the various command line
5266options, file I/O, and table dump routines. To port to a new host, only
5267three functions need to be implemented to get tables -- since this
5268functionality is OS-dependent. See the tools/acpidump/apmain.c module and
5269the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
52701) The Windows version obtains the ACPI tables from the Registry.
52712) The Linux version is under development.
52723) Other hosts - If an OS-dependent module is submitted, it will be
5273distributed with ACPICA.
5274
5275iASL: Fixed a regression for -D preprocessor option (define symbol). A
5276restructuring/change to the initialization sequence caused this option to
5277no longer work properly.
5278
5279iASL: Implemented a mechanism to disable specific warnings and remarks.
5280Adds a new command line option, "-vw <messageid> as well as "#pragma
5281disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
5282
5283iASL: Fix for too-strict package object validation. The package object
5284validation for return values from the predefined names is a bit too
5285strict, it does not allow names references within the package (which will
5286be resolved at runtime.) These types of references cannot be validated at
5287compile time. This change ignores named references within package objects
5288for names that return or define static packages.
5289
5290Debugger: Fixed the 80-character command line limitation for the History
5291command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
5292
5293iASL: Added control method and package support for the -so option
5294(generates AML offset table for BIOS support.)
5295
5296iASL: issue a remark if a non-serialized method creates named objects. If
5297a thread blocks within the method for any reason, and another thread
5298enters the method, the method will fail because an attempt will be made
5299to
5300create the same (named) object twice. In this case, issue a remark that
5301the method should be marked serialized. NOTE: may become a warning later.
5302ACPICA BZ 909.
5303
5304----------------------------------------
530518 April 2013. Summary of changes for version 20130418:
5306
53071) ACPICA kernel-resident subsystem:
5308
5309Fixed a possible buffer overrun during some rare but specific field unit
5310read operations. This overrun can only happen if the DSDT version is 1 --
5311meaning that all AML integers are 32 bits -- and the field length is
5312between 33 and 55 bits long. During the read, an internal buffer object
5313is
5314created for the field unit because the field is larger than an integer
5315(32
5316bits). However, in this case, the buffer will be incorrectly written
5317beyond the end because the buffer length is less than the internal
5318minimum
5319of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
5320long, but a full 8 bytes will be written.
5321
5322Updated the Embedded Controller "orphan" _REG method support. This refers
5323to _REG methods under the EC device that have no corresponding operation
5324region. This is allowed by the ACPI specification. This update removes a
5325dependency on the existence an ECDT table. It will execute an orphan _REG
5326method as long as the operation region handler for the EC is installed at
5327the EC device node and not the namespace root. Rui Zhang (original
5328update), Bob Moore (update/integrate).
5329
5330Implemented run-time argument typechecking for all predefined ACPI names
5331(_STA, _BIF, etc.) This change performs object typechecking on all
5332incoming arguments for all predefined names executed via
5333AcpiEvaluateObject. This ensures that ACPI-related device drivers are
5334passing correct object types as well as the correct number of arguments
5335(therefore identifying any issues immediately). Also, the ASL/namespace
5336definition of the predefined name is checked against the ACPI
5337specification for the proper argument count. Adds one new file,
5338nsarguments.c
5339
5340Changed an exception code for the ASL UnLoad() operator. Changed the
5341exception code for the case where the input DdbHandle is invalid, from
5342AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
5343
5344Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
5345global makefile. The use of this flag causes compiler errors on earlier
5346versions of GCC, so it has been removed for compatibility.
5347
5348Miscellaneous cleanup:
53491) Removed some unused/obsolete macros
53502) Fixed a possible memory leak in the _OSI support
53513) Removed an unused variable in the predefined name support
53524) Windows OSL: remove obsolete reference to a memory list field
5353
5354Example Code and Data Size: These are the sizes for the OS-independent
5355acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5356debug version of the code includes the debug output trace mechanism and
5357has a much larger code and data size.
5358
5359  Current Release:
5360    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
5361    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
5362  Previous Release:
5363    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
5364    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
5365
5366
53672) iASL Compiler/Disassembler and Tools:
5368
5369AcpiExec: Added installation of a handler for the SystemCMOS address
5370space. This prevents control method abort if a method accesses this
5371space.
5372
5373AcpiExec: Added support for multiple EC devices, and now install EC
5374operation region handler(s) at the actual EC device instead of the
5375namespace root. This reflects the typical behavior of host operating
5376systems.
5377
5378AcpiExec: Updated to ensure that all operation region handlers are
5379installed before the _REG methods are executed. This prevents a _REG
5380method from aborting if it accesses an address space has no handler.
5381AcpiExec installs a handler for every possible address space.
5382
5383Debugger: Enhanced the "handlers" command to display non-root handlers.
5384This change enhances the handlers command to display handlers associated
5385with individual devices throughout the namespace, in addition to the
5386currently supported display of handlers associated with the root
5387namespace
5388node.
5389
5390ASL Test Suite: Several test suite errors have been identified and
5391resolved, reducing the total error count during execution. Chao Guan.
5392
5393----------------------------------------
539428 March 2013. Summary of changes for version 20130328:
5395
53961) ACPICA kernel-resident subsystem:
5397
5398Fixed several possible race conditions with the internal object reference
5399counting mechanism. Some of the external ACPICA interfaces update object
5400reference counts without holding the interpreter or namespace lock. This
5401change adds a spinlock to protect reference count updates on the internal
5402ACPICA objects. Reported by and with assistance from Andriy Gapon
5403(avg@FreeBSD.org).
5404
5405FADT support: Removed an extraneous warning for very large GPE register
5406sets. This change removes a size mismatch warning if the legacy length
5407field for a GPE register set is larger than the 64-bit GAS structure can
5408accommodate. GPE register sets can be larger than the 255-bit width
5409limitation of the GAS structure. Linn Crosetto (linn@hp.com).
5410
5411_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
5412return from this interface. Handles a possible timeout case if
5413ACPI_WAIT_FOREVER is modified by the host to be a value less than
5414"forever". Jung-uk Kim.
5415
5416Predefined name support: Add allowed/required argument type information
5417to
5418the master predefined info table. This change adds the infrastructure to
5419enable typechecking on incoming arguments for all predefined
5420methods/objects. It does not actually contain the code that will fully
5421utilize this information, this is still under development. Also condenses
5422some duplicate code for the predefined names into a new module,
5423utilities/utpredef.c
5424
5425Example Code and Data Size: These are the sizes for the OS-independent
5426acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5427debug version of the code includes the debug output trace mechanism and
5428has a much larger code and data size.
5429
5430  Previous Release:
5431    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
5432    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
5433  Current Release:
5434    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
5435    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
5436
5437
54382) iASL Compiler/Disassembler and Tools:
5439
5440iASL: Implemented a new option to simplify the development of ACPI-
5441related
5442BIOS code. Adds support for a new "offset table" output file. The -so
5443option will create a C table containing the AML table offsets of various
5444named objects in the namespace so that BIOS code can modify them easily
5445at
5446boot time. This can simplify BIOS runtime code by eliminating expensive
5447searches for "magic values", enhancing boot times and adding greater
5448reliability. With assistance from Lee Hamel.
5449
5450iASL: Allow additional predefined names to return zero-length packages.
5451Now, all predefined names that are defined by the ACPI specification to
5452return a "variable-length package of packages" are allowed to return a
5453zero length top-level package. This allows the BIOS to tell the host that
5454the requested feature is not supported, and supports existing BIOS/ASL
5455code and practices.
5456
5457iASL: Changed the "result not used" warning to an error. This is the case
5458where an ASL operator is effectively a NOOP because the result of the
5459operation is not stored anywhere. For example:
5460    Add (4, Local0)
5461There is no target (missing 3rd argument), nor is the function return
5462value used. This is potentially a very serious problem -- since the code
5463was probably intended to do something, but for whatever reason, the value
5464was not stored. Therefore, this issue has been upgraded from a warning to
5465an error.
5466
5467AcpiHelp: Added allowable/required argument types to the predefined names
5468info display. This feature utilizes the recent update to the predefined
5469names table (above).
5470
5471----------------------------------------
547214 February 2013. Summary of changes for version 20130214:
5473
54741) ACPICA Kernel-resident Subsystem:
5475
5476Fixed a possible regression on some hosts: Reinstated the safe return
5477macros (return_ACPI_STATUS, etc.) that ensure that the argument is
5478evaluated only once. Although these macros are not needed for the ACPICA
5479code itself, they are often used by ACPI-related host device drivers
5480where
5481the safe feature may be necessary.
5482
5483Fixed several issues related to the ACPI 5.0 reduced hardware support
5484(SOC): Now ensure that if the platform declares itself as hardware-
5485reduced
5486via the FADT, the following functions become NOOPs (and always return
5487AE_OK) because ACPI is always enabled by definition on these machines:
5488  AcpiEnable
5489  AcpiDisable
5490  AcpiHwGetMode
5491  AcpiHwSetMode
5492
5493Dynamic Object Repair: Implemented additional runtime repairs for
5494predefined name return values. Both of these repairs can simplify code in
5495the related device drivers that invoke these methods:
54961) For the _STR and _MLS names, automatically repair/convert an ASCII
5497string to a Unicode buffer.
54982) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
5499a
5500lone end tag descriptor in the following cases: A Return(0) was executed,
5501a null buffer was returned, or no object at all was returned (non-slack
5502mode only). Adds a new file, nsconvert.c
5503ACPICA BZ 998. Bob Moore, Lv Zheng.
5504
5505Resource Manager: Added additional code to prevent possible infinite
5506loops
5507while traversing corrupted or ill-formed resource template buffers. Check
5508for zero-length resource descriptors in all code that loops through
5509resource templates (the length field is used to index through the
5510template). This change also hardens the external AcpiWalkResources and
5511AcpiWalkResourceBuffer interfaces.
5512
5513Local Cache Manager: Enhanced the main data structure to eliminate an
5514unnecessary mechanism to access the next object in the list. Actually
5515provides a small performance enhancement for hosts that use the local
5516ACPICA cache manager. Jung-uk Kim.
5517
5518Example Code and Data Size: These are the sizes for the OS-independent
5519acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5520debug version of the code includes the debug output trace mechanism and
5521has a much larger code and data size.
5522
5523  Previous Release:
5524    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
5525    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
5526  Current Release:
5527    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
5528    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
5529
5530
55312) iASL Compiler/Disassembler and Tools:
5532
5533iASL/Disassembler: Fixed several issues with the definition of the ACPI
55345.0 RASF table (RAS Feature Table). This change incorporates late changes
5535that were made to the ACPI 5.0 specification.
5536
5537iASL/Disassembler: Added full support for the following new ACPI tables:
5538  1) The MTMR table (MID Timer Table)
5539  2) The VRTC table (Virtual Real Time Clock Table).
5540Includes header file, disassembler, table compiler, and template support
5541for both tables.
5542
5543iASL: Implemented compile-time validation of package objects returned by
5544predefined names. This new feature validates static package objects
5545returned by the various predefined names defined to return packages. Both
5546object types and package lengths are validated, for both parent packages
5547and sub-packages, if any. The code is similar in structure and behavior
5548to
5549the runtime repair mechanism within the AML interpreter and uses the
5550existing predefined name information table. Adds a new file, aslprepkg.c.
5551ACPICA BZ 938.
5552
5553iASL: Implemented auto-detection of binary ACPI tables for disassembly.
5554This feature detects a binary file with a valid ACPI table header and
5555invokes the disassembler automatically. Eliminates the need to
5556specifically invoke the disassembler with the -d option. ACPICA BZ 862.
5557
5558iASL/Disassembler: Added several warnings for the case where there are
5559unresolved control methods during the disassembly. This can potentially
5560cause errors when the output file is compiled, because the disassembler
5561assumes zero method arguments in these cases (it cannot determine the
5562actual number of arguments without resolution/definition of the method).
5563
5564Debugger: Added support to display all resources with a single command.
5565Invocation of the resources command with no arguments will now display
5566all
5567resources within the current namespace.
5568
5569AcpiHelp: Added descriptive text for each ACPICA exception code displayed
5570via the -e option.
5571
5572----------------------------------------
557317 January 2013. Summary of changes for version 20130117:
5574
55751) ACPICA Kernel-resident Subsystem:
5576
5577Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
5578return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
5579objects to return a package containing one integer, most BIOS code
5580returns
5581two integers and the previous code reflects that. However, we also need
5582to
5583support BIOS code that actually implements to the ACPI spec, and this
5584change reflects this.
5585
5586Fixed two issues with the ACPI_DEBUG_PRINT macros:
55871) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
5588C compilers that require this support.
55892) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
5590ACPI_DEBUG is already used by many of the various hosts.
5591
5592Updated all ACPICA copyrights and signons to 2013. Added the 2013
5593copyright to all module headers and signons, including the standard Linux
5594header. This affects virtually every file in the ACPICA core subsystem,
5595iASL compiler, all ACPICA utilities, and the test suites.
5596
5597Example Code and Data Size: These are the sizes for the OS-independent
5598acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5599debug version of the code includes the debug output trace mechanism and
5600has a much larger code and data size.
5601
5602  Previous Release:
5603    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
5604    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
5605  Current Release:
5606    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
5607    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
5608
5609
56102) iASL Compiler/Disassembler and Tools:
5611
5612Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
5613prevent a possible fault on some hosts. Some C libraries modify the arg
5614pointer parameter to vfprintf making it difficult to call it twice in the
5615AcpiOsVprintf function. Use a local buffer to workaround this issue. This
5616does not affect the Windows OSL since the Win C library does not modify
5617the arg pointer. Chao Guan, Bob Moore.
5618
5619iASL: Fixed a possible infinite loop when the maximum error count is
5620reached. If an output file other than the .AML file is specified (such as
5621a listing file), and the maximum number of errors is reached, do not
5622attempt to flush data to the output file(s) as the compiler is aborting.
5623This can cause an infinite loop as the max error count code essentially
5624keeps calling itself.
5625
5626iASL/Disassembler: Added an option (-in) to ignore NOOP
5627opcodes/operators.
5628Implemented for both the compiler and the disassembler. Often, the NOOP
5629opcode is used as padding for packages that are changed dynamically by
5630the
5631BIOS. When disassembled and recompiled, these NOOPs will cause syntax
5632errors. This option causes the disassembler to ignore all NOOP opcodes
5633(0xA3), and it also causes the compiler to ignore all ASL source code
5634NOOP
5635statements as well.
5636
5637Debugger: Enhanced the Sleep command to execute all sleep states. This
5638change allows Sleep to be invoked with no arguments and causes the
5639debugger to execute all of the sleep states, 0-5, automatically.
5640
5641----------------------------------------
564220 December 2012. Summary of changes for version 20121220:
5643
56441) ACPICA Kernel-resident Subsystem:
5645
5646Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
5647alternate entry point for AcpiWalkResources and improves the usability of
5648the resource manager by accepting as input a buffer containing the output
5649of either a _CRS, _PRS, or _AEI method. The key functionality is that the
5650input buffer is not deleted by this interface so that it can be used by
5651the host later. See the ACPICA reference for details.
5652
5653Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
5654(DSDT version < 2). The constant will be truncated and this warning
5655reflects that behavior.
5656
5657Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
5658ExtendedInterrupt, and GpioInt descriptors. This change adds support to
5659both get and set the new wake bit in these descriptors, separately from
5660the existing share bit. Reported by Aaron Lu.
5661
5662Interpreter: Fix Store() when an implicit conversion is not possible. For
5663example, in the cases such as a store of a string to an existing package
5664object, implement the store as a CopyObject(). This is a small departure
5665from the ACPI specification which states that the control method should
5666be
5667aborted in this case. However, the ASLTS suite depends on this behavior.
5668
5669Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
5670macros: check if debug output is currently enabled as soon as possible to
5671minimize performance impact if debug is in fact not enabled.
5672
5673Source code restructuring: Cleanup to improve modularity. The following
5674new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
5675psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
5676Associated makefiles and project files have been updated.
5677
5678Changed an exception code for LoadTable operator. For the case where one
5679of the input strings is too long, change the returned exception code from
5680AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
5681
5682Fixed a possible memory leak in dispatcher error path. On error, delete
5683the mutex object created during method mutex creation. Reported by
5684tim.gardner@canonical.com.
5685
5686Example Code and Data Size: These are the sizes for the OS-independent
5687acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5688debug version of the code includes the debug output trace mechanism and
5689has a much larger code and data size.
5690
5691  Previous Release:
5692    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
5693    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5694  Current Release:
5695    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
5696    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
5697
5698
56992) iASL Compiler/Disassembler and Tools:
5700
5701iASL: Disallow a method call as argument to the ObjectType ASL operator.
5702This change tracks an errata to the ACPI 5.0 document. The AML grammar
5703will not allow the interpreter to differentiate between a method and a
5704method invocation when these are used as an argument to the ObjectType
5705operator. The ACPI specification change is to disallow a method
5706invocation
5707(UserTerm) for the ObjectType operator.
5708
5709Finish support for the TPM2 and CSRT tables in the headers, table
5710compiler, and disassembler.
5711
5712Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
5713always expires immediately if the semaphore is not available. The
5714original
5715code was using a relative-time timeout, but sem_timedwait requires the
5716use
5717of an absolute time.
5718
5719iASL: Added a remark if the Timer() operator is used within a 32-bit
5720table. This operator returns a 64-bit time value that will be truncated
5721within a 32-bit table.
5722
5723iASL Source code restructuring: Cleanup to improve modularity. The
5724following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
5725aslmethod.c, and aslfileio.c. Associated makefiles and project files have
5726been updated.
5727
5728
5729----------------------------------------
573014 November 2012. Summary of changes for version 20121114:
5731
57321) ACPICA Kernel-resident Subsystem:
5733
5734Implemented a performance enhancement for ACPI/AML Package objects. This
5735change greatly increases the performance of Package objects within the
5736interpreter. It changes the processing of reference counts for packages
5737by
5738optimizing for the most common case where the package sub-objects are
5739either Integers, Strings, or Buffers. Increases the overall performance
5740of
5741the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
57422X.)
5743Chao Guan. ACPICA BZ 943.
5744
5745Implemented and deployed common macros to extract flag bits from resource
5746descriptors. Improves readability and maintainability of the code. Fixes
5747a
5748problem with the UART serial bus descriptor for the number of data bits
5749flags (was incorrectly 2 bits, should be 3).
5750
5751Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
5752of the macros and changed the SETx macros to the style of (destination,
5753source). Also added ACPI_CASTx companion macros. Lv Zheng.
5754
5755Example Code and Data Size: These are the sizes for the OS-independent
5756acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5757debug version of the code includes the debug output trace mechanism and
5758has a much larger code and data size.
5759
5760  Previous Release:
5761    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
5762    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5763  Current Release:
5764    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
5765    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5766
5767
57682) iASL Compiler/Disassembler and Tools:
5769
5770Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
5771adds the ShareAndWake and ExclusiveAndWake flags which were added to the
5772Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
5773
5774Disassembler: Fixed a problem with external declaration generation. Fixes
5775a problem where an incorrect pathname could be generated for an external
5776declaration if the original reference to the object includes leading
5777carats (^). ACPICA BZ 984.
5778
5779Debugger: Completed a major update for the Disassemble<method> command.
5780This command was out-of-date and did not properly disassemble control
5781methods that had any reasonable complexity. This fix brings the command
5782up
5783to the same level as the rest of the disassembler. Adds one new file,
5784dmdeferred.c, which is existing code that is now common with the main
5785disassembler and the debugger disassemble command. ACPICA MZ 978.
5786
5787iASL: Moved the parser entry prototype to avoid a duplicate declaration.
5788Newer versions of Bison emit this prototype, so moved the prototype out
5789of
5790the iASL header to where it is actually used in order to avoid a
5791duplicate
5792declaration.
5793
5794iASL/Tools: Standardized use of the stream I/O functions:
5795  1) Ensure check for I/O error after every fopen/fread/fwrite
5796  2) Ensure proper order of size/count arguments for fread/fwrite
5797  3) Use test of (Actual != Requested) after all fwrite, and most fread
5798  4) Standardize I/O error messages
5799Improves reliability and maintainability of the code. Bob Moore, Lv
5800Zheng.
5801ACPICA BZ 981.
5802
5803Disassembler: Prevent duplicate External() statements. During generation
5804of external statements, detect similar pathnames that are actually
5805duplicates such as these:
5806  External (\ABCD)
5807  External (ABCD)
5808Remove all leading '\' characters from pathnames during the external
5809statement generation so that duplicates will be detected and tossed.
5810ACPICA BZ 985.
5811
5812Tools: Replace low-level I/O with stream I/O functions. Replace
5813open/read/write/close with the stream I/O equivalents
5814fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
5815Moore.
5816
5817AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
5818name header so that AcpiXtract recognizes the output file/table.
5819
5820iASL: Remove obsolete -2 option flag. Originally intended to force the
5821compiler/disassembler into an ACPI 2.0 mode, this was never implemented
5822and the entire concept is now obsolete.
5823
5824----------------------------------------
582518 October 2012. Summary of changes for version 20121018:
5826
5827
58281) ACPICA Kernel-resident Subsystem:
5829
5830Updated support for the ACPI 5.0 MPST table. Fixes some problems
5831introduced by late changes to the table as it was added to the ACPI 5.0
5832specification. Includes header, disassembler, and data table compiler
5833support as well as a new version of the MPST template.
5834
5835AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
58365.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
5837methods: _HID, _CID, and _UID.
5838
5839Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
5840ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
5841name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
5842names for their various drivers. Affects the AcpiGetObjectInfo external
5843interface, and other internal interfaces as well.
5844
5845Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
5846This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
5847on machines that support non-aligned transfers. Optimizes for this case
5848rather than using a strncpy. With assistance from Zheng Lv.
5849
5850Resource Manager: Small fix for buffer size calculation. Fixed a one byte
5851error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
5852
5853Added a new debug print message for AML mutex objects that are force-
5854released. At control method termination, any currently acquired mutex
5855objects are force-released. Adds a new debug-only message for each one
5856that is released.
5857
5858Audited/updated all ACPICA return macros and the function debug depth
5859counter: 1) Ensure that all functions that use the various TRACE macros
5860also use the appropriate ACPICA return macros. 2) Ensure that all normal
5861return statements surround the return expression (value) with parens to
5862ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
5863Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
5864
5865Global source code changes/maintenance: All extra lines at the start and
5866end of each source file have been removed for consistency. Also, within
5867comments, all new sentences start with a single space instead of a double
5868space, again for consistency across the code base.
5869
5870Example Code and Data Size: These are the sizes for the OS-independent
5871acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5872debug version of the code includes the debug output trace mechanism and
5873has a much larger code and data size.
5874
5875  Previous Release:
5876    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
5877    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
5878  Current Release:
5879    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
5880    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5881
5882
58832) iASL Compiler/Disassembler and Tools:
5884
5885AcpiExec: Improved the algorithm used for memory leak/corruption
5886detection. Added some intelligence to the code that maintains the global
5887list of allocated memory. The list is now ordered by allocated memory
5888address, significantly improving performance. When running AcpiExec on
5889the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
5890on the platform and/or the environment. Note, this performance
5891enhancement affects the AcpiExec utility only, not the kernel-resident
5892ACPICA code.
5893
5894Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
5895the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
5896incorrect table offset reported for invalid opcodes. Report the original
589732-bit value for bad ACPI_NAMEs (as well as the repaired name.)
5898
5899Disassembler: Enhanced the -vt option to emit the binary table data in
5900hex format to assist with debugging.
5901
5902Fixed a potential filename buffer overflow in osunixdir.c. Increased the
5903size of file structure. Colin Ian King.
5904
5905----------------------------------------
590613 September 2012. Summary of changes for version 20120913:
5907
5908
59091) ACPICA Kernel-resident Subsystem:
5910
5911ACPI 5.0: Added two new notify types for the Hardware Error Notification
5912Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
5913and
5914MCE(6).
5915
5916Table Manager: Merged/removed duplicate code in the root table resize
5917functions. One function is external, the other is internal. Lv Zheng,
5918ACPICA
5919BZ 846.
5920
5921Makefiles: Completely removed the obsolete "Linux" makefiles under
5922acpica/generate/linux. These makefiles are obsolete and have been
5923replaced
5924by
5925the generic unix makefiles under acpica/generate/unix.
5926
5927Makefiles: Ensure that binary files always copied properly. Minor rule
5928change
5929to ensure that the final binary output files are always copied up to the
5930appropriate binary directory (bin32 or bin64.)
5931
5932Example Code and Data Size: These are the sizes for the OS-independent
5933acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5934debug
5935version of the code includes the debug output trace mechanism and has a
5936much
5937larger code and data size.
5938
5939  Previous Release:
5940    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
5941    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
5942  Current Release:
5943    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
5944    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
5945
5946
59472) iASL Compiler/Disassembler and Tools:
5948
5949Disassembler: Fixed a possible fault during the disassembly of resource
5950descriptors when a second parse is required because of the invocation of
5951external control methods within the table. With assistance from
5952adq@lidskialf.net. ACPICA BZ 976.
5953
5954iASL: Fixed a namepath optimization problem. An error can occur if the
5955parse
5956node that contains the namepath to be optimized does not have a parent
5957node
5958that is a named object. This change fixes the problem.
5959
5960iASL: Fixed a regression where the AML file is not deleted on errors. The
5961AML
5962output file should be deleted if there are any errors during the
5963compiler.
5964The
5965only exception is if the -f (force output) option is used. ACPICA BZ 974.
5966
5967iASL: Added a feature to automatically increase internal line buffer
5968sizes.
5969Via realloc(), automatically increase the internal line buffer sizes as
5970necessary to support very long source code lines. The current version of
5971the
5972preprocessor requires a buffer long enough to contain full source code
5973lines.
5974This change increases the line buffer(s) if the input lines go beyond the
5975current buffer size. This eliminates errors that occurred when a source
5976code
5977line was longer than the buffer.
5978
5979iASL: Fixed a problem with constant folding in method declarations. The
5980SyncLevel term is a ByteConstExpr, and incorrect code would be generated
5981if a
5982Type3 opcode was used.
5983
5984Debugger: Improved command help support. For incorrect argument count,
5985display
5986full help for the command. For help command itself, allow an argument to
5987specify a command.
5988
5989Test Suites: Several bug fixes for the ASLTS suite reduces the number of
5990errors during execution of the suite. Guan Chao.
5991
5992----------------------------------------
599316 August 2012. Summary of changes for version 20120816:
5994
5995
59961) ACPICA Kernel-resident Subsystem:
5997
5998Removed all use of the deprecated _GTS and _BFS predefined methods. The
5999_GTS
6000(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
6001deprecated and will probably be removed from the ACPI specification.
6002Windows
6003does not invoke them, and reportedly never will. The final nail in the
6004coffin
6005is that the ACPI specification states that these methods must be run with
6006interrupts off, which is not going to happen in a kernel interpreter.
6007Note:
6008Linux has removed all use of the methods also. It was discovered that
6009invoking these functions caused failures on some machines, probably
6010because
6011they were never tested since Windows does not call them. Affects two
6012external
6013interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
6014ACPICA BZ 969.
6015
6016Implemented support for complex bit-packed buffers returned from the _PLD
6017(Physical Location of Device) predefined method. Adds a new external
6018interface, AcpiDecodePldBuffer that parses the buffer into a more usable
6019C
6020structure. Note: C Bitfields cannot be used for this type of predefined
6021structure since the memory layout of individual bitfields is not defined
6022by
6023the C language. In addition, there are endian concerns where a compiler
6024will
6025change the bitfield ordering based on the machine type. The new ACPICA
6026interface eliminates these issues, and should be called after _PLD is
6027executed. ACPICA BZ 954.
6028
6029Implemented a change to allow a scope change to root (via "Scope (\)")
6030during
6031execution of module-level ASL code (code that is executed at table load
6032time.) Lin Ming.
6033
6034Added the Windows8/Server2012 string for the _OSI method. This change
6035adds
6036a
6037new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
60382012.
6039
6040Added header support for the new ACPI tables DBG2 (Debug Port Table Type
60412)
6042and CSRT (Core System Resource Table).
6043
6044Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
6045names. This simplifies access to the buffers returned by these predefined
6046names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
6047
6048GPE support: Removed an extraneous parameter from the various low-level
6049internal GPE functions. Tang Feng.
6050
6051Removed the linux makefiles from the unix packages. The generate/linux
6052makefiles are obsolete and have been removed from the unix tarball
6053release
6054packages. The replacement makefiles are under generate/unix, and there is
6055a
6056top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
6057
6058Updates for Unix makefiles:
60591) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
60602) Update linker flags (move to end of command line) for AcpiExec
6061utility.
6062Guan Chao.
6063
6064Split ACPICA initialization functions to new file, utxfinit.c. Split from
6065utxface.c to improve modularity and reduce file size.
6066
6067Example Code and Data Size: These are the sizes for the OS-independent
6068acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6069debug version of the code includes the debug output trace mechanism and
6070has a
6071much larger code and data size.
6072
6073  Previous Release:
6074    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
6075    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
6076  Current Release:
6077    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
6078    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
6079
6080
60812) iASL Compiler/Disassembler and Tools:
6082
6083iASL: Fixed a problem with constant folding for fixed-length constant
6084expressions. The constant-folding code was not being invoked for constant
6085expressions that allow the use of type 3/4/5 opcodes to generate
6086constants
6087for expressions such as ByteConstExpr, WordConstExpr, etc. This could
6088result
6089in the generation of invalid AML bytecode. ACPICA BZ 970.
6090
6091iASL: Fixed a generation issue on newer versions of Bison. Newer versions
6092apparently automatically emit some of the necessary externals. This
6093change
6094handles these versions in order to eliminate generation warnings.
6095
6096Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
6097
6098Disassembler: Add support to decode _PLD buffers. The decoded buffer
6099appears
6100within comments in the output file.
6101
6102Debugger: Fixed a regression with the "Threads" command where
6103AE_BAD_PARAMETER was always returned.
6104
6105----------------------------------------
610611 July 2012. Summary of changes for version 20120711:
6107
61081) ACPICA Kernel-resident Subsystem:
6109
6110Fixed a possible fault in the return package object repair code. Fixes a
6111problem that can occur when a lone package object is wrapped with an
6112outer
6113package object in order to force conformance to the ACPI specification.
6114Can
6115affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
6116_DLM,
6117_CSD, _PSD, _TSD.
6118
6119Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
6120PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
6121ARB_DIS bit must be implemented in the host-dependent C3 processor power
6122state
6123support. Note, ARB_DIS is obsolete and only applies to older chipsets,
6124both
6125Intel and other vendors. (for Intel: ICH4-M and earlier)
6126
6127This change removes the code to disable/enable bus master arbitration
6128during
6129suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
6130causes
6131resume problems on some machines. The change has been in use for over
6132seven
6133years within Linux.
6134
6135Implemented two new external interfaces to support host-directed dynamic
6136ACPI
6137table load and unload. They are intended to simplify the host
6138implementation
6139of hot-plug support:
6140  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
6141  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
6142table.
6143See the ACPICA reference for additional details. Adds one new file,
6144components/tables/tbxfload.c
6145
6146Implemented and deployed two new interfaces for errors and warnings that
6147are
6148known to be caused by BIOS/firmware issues:
6149  AcpiBiosError: Prints "ACPI Firmware Error" message.
6150  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
6151Deployed these new interfaces in the ACPICA Table Manager code for ACPI
6152table
6153and FADT errors. Additional deployment to be completed as appropriate in
6154the
6155future. The associated conditional macros are ACPI_BIOS_ERROR and
6156ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
6157ACPICA
6158BZ
6159843.
6160
6161Implicit notify support: ensure that no memory allocation occurs within a
6162critical region. This fix moves a memory allocation outside of the time
6163that a
6164spinlock is held. Fixes issues on systems that do not allow this
6165behavior.
6166Jung-uk Kim.
6167
6168Split exception code utilities and tables into a new file,
6169utilities/utexcep.c
6170
6171Example Code and Data Size: These are the sizes for the OS-independent
6172acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6173debug
6174version of the code includes the debug output trace mechanism and has a
6175much
6176larger code and data size.
6177
6178  Previous Release:
6179    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
6180    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
6181  Current Release:
6182    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
6183    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
6184
6185
61862) iASL Compiler/Disassembler and Tools:
6187
6188iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
6189of
61900. Jung-uk Kim.
6191
6192Debugger: Enhanced the "tables" command to emit additional information
6193about
6194the current set of ACPI tables, including the owner ID and flags decode.
6195
6196Debugger: Reimplemented the "unload" command to use the new
6197AcpiUnloadParentTable external interface. This command was disable
6198previously
6199due to need for an unload interface.
6200
6201AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
6202option
6203will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
6204
6205----------------------------------------
620620 June 2012. Summary of changes for version 20120620:
6207
6208
62091) ACPICA Kernel-resident Subsystem:
6210
6211Implemented support to expand the "implicit notify" feature to allow
6212multiple
6213devices to be notified by a single GPE. This feature automatically
6214generates a
6215runtime device notification in the absence of a BIOS-provided GPE control
6216method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
6217notify is
6218provided by ACPICA for Windows compatibility, and is a workaround for
6219BIOS
6220AML
6221code errors. See the description of the AcpiSetupGpeForWake interface in
6222the
6223APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
6224
6225Changed some comments and internal function names to simplify and ensure
6226correctness of the Linux code translation. No functional changes.
6227
6228Example Code and Data Size: These are the sizes for the OS-independent
6229acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6230debug
6231version of the code includes the debug output trace mechanism and has a
6232much
6233larger code and data size.
6234
6235  Previous Release:
6236    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
6237    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
6238  Current Release:
6239    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
6240    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
6241
6242
62432) iASL Compiler/Disassembler and Tools:
6244
6245Disassembler: Added support to emit short, commented descriptions for the
6246ACPI
6247predefined names in order to improve the readability of the disassembled
6248output. ACPICA BZ 959. Changes include:
6249  1) Emit descriptions for all standard predefined names (_INI, _STA,
6250_PRW,
6251etc.)
6252  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
6253  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
6254etc.)
6255
6256AcpiSrc: Fixed several long-standing Linux code translation issues.
6257Argument
6258descriptions in function headers are now translated properly to lower
6259case
6260and
6261underscores. ACPICA BZ 961. Also fixes translation problems such as
6262these:
6263(old -> new)
6264  i_aSL -> iASL
6265  00-7_f -> 00-7F
6266  16_k -> 16K
6267  local_fADT -> local_FADT
6268  execute_oSI -> execute_OSI
6269
6270iASL: Fixed a problem where null bytes were inadvertently emitted into
6271some
6272listing files.
6273
6274iASL: Added the existing debug options to the standard help screen. There
6275are
6276no longer two different help screens. ACPICA BZ 957.
6277
6278AcpiHelp: Fixed some typos in the various predefined name descriptions.
6279Also
6280expand some of the descriptions where appropriate.
6281
6282iASL: Fixed the -ot option (display compile times/statistics). Was not
6283working
6284properly for standard output; only worked for the debug file case.
6285
6286----------------------------------------
628718 May 2012. Summary of changes for version 20120518:
6288
6289
62901) ACPICA Core Subsystem:
6291
6292Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
6293defined
6294to block until asynchronous events such as notifies and GPEs have
6295completed.
6296Within ACPICA, it is only called before a notify or GPE handler is
6297removed/uninstalled. It also may be useful for the host OS within related
6298drivers such as the Embedded Controller driver. See the ACPICA reference
6299for
6300additional information. ACPICA BZ 868.
6301
6302ACPI Tables: Added a new error message for a possible overflow failure
6303during
6304the conversion of FADT 32-bit legacy register addresses to internal
6305common
630664-
6307bit GAS structure representation. The GAS has a one-byte "bit length"
6308field,
6309thus limiting the register length to 255 bits. ACPICA BZ 953.
6310
6311Example Code and Data Size: These are the sizes for the OS-independent
6312acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6313debug
6314version of the code includes the debug output trace mechanism and has a
6315much
6316larger code and data size.
6317
6318  Previous Release:
6319    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6320    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
6321  Current Release:
6322    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
6323    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
6324
6325
63262) iASL Compiler/Disassembler and Tools:
6327
6328iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
6329macro.
6330This keyword was added late in the ACPI 5.0 release cycle and was not
6331implemented until now.
6332
6333Disassembler: Added support for Operation Region externals. Adds missing
6334support for operation regions that are defined in another table, and
6335referenced locally via a Field or BankField ASL operator. Now generates
6336the
6337correct External statement.
6338
6339Disassembler: Several additional fixes for the External() statement
6340generation
6341related to some ASL operators. Also, order the External() statements
6342alphabetically in the disassembler output. Fixes the External()
6343generation
6344for
6345the Create* field, Alias, and Scope operators:
6346 1) Create* buffer field operators - fix type mismatch warning on
6347disassembly
6348 2) Alias - implement missing External support
6349 3) Scope - fix to make sure all necessary externals are emitted.
6350
6351iASL: Improved pathname support. For include files, merge the prefix
6352pathname
6353with the file pathname and eliminate unnecessary components. Convert
6354backslashes in all pathnames to forward slashes, for readability. Include
6355file
6356pathname changes affect both #include and Include() type operators.
6357
6358iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
6359end
6360of a valid line by inserting a newline and then returning the EOF during
6361the
6362next call to GetNextLine. Prevents the line from being ignored due to EOF
6363condition.
6364
6365iASL: Implemented some changes to enhance the IDE support (-vi option.)
6366Error
6367and Warning messages are now correctly recognized for both the source
6368code
6369browser and the global error and warning counts.
6370
6371----------------------------------------
637220 April 2012. Summary of changes for version 20120420:
6373
6374
63751) ACPICA Core Subsystem:
6376
6377Implemented support for multiple notify handlers. This change adds
6378support
6379to
6380allow multiple system and device notify handlers on Device, Thermal Zone,
6381and
6382Processor objects. This can simplify the host OS notification
6383implementation.
6384Also re-worked and restructured the entire notify support code to
6385simplify
6386handler installation, handler removal, notify event queuing, and notify
6387dispatch to handler(s). Note: there can still only be two global notify
6388handlers - one for system notifies and one for device notifies. There are
6389no
6390changes to the existing handler install/remove interfaces. Lin Ming, Bob
6391Moore, Rafael Wysocki.
6392
6393Fixed a regression in the package repair code where the object reference
6394count was calculated incorrectly. Regression was introduced in the commit
6395"Support to add Package wrappers".
6396
6397Fixed a couple possible memory leaks in the AML parser, in the error
6398recovery
6399path. Jesper Juhl, Lin Ming.
6400
6401Example Code and Data Size: These are the sizes for the OS-independent
6402acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6403debug version of the code includes the debug output trace mechanism and
6404has a
6405much larger code and data size.
6406
6407  Previous Release:
6408    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6409    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6410  Current Release:
6411    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6412    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
6413
6414
64152) iASL Compiler/Disassembler and Tools:
6416
6417iASL: Fixed a problem with the resource descriptor support where the
6418length
6419of the StartDependentFn and StartDependentFnNoPrio descriptors were not
6420included in cumulative descriptor offset, resulting in incorrect values
6421for
6422resource tags within resource descriptors appearing after a
6423StartDependent*
6424descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
6425
6426iASL and Preprocessor: Implemented full support for the #line directive
6427to
6428correctly track original source file line numbers through the .i
6429preprocessor
6430output file - for error and warning messages.
6431
6432iASL: Expand the allowable byte constants for address space IDs.
6433Previously,
6434the allowable range was 0x80-0xFF (user-defined spaces), now the range is
64350x0A-0xFF to allow for custom and new IDs without changing the compiler.
6436
6437iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
6438
6439iASL: Add option to completely disable the preprocessor (-Pn).
6440
6441iASL: Now emit all error/warning messages to standard error (stderr) by
6442default (instead of the previous stdout).
6443
6444ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
6445Update
6446for resource descriptor offset fix above. Update/cleanup error output
6447routines. Enable and send iASL errors/warnings to an error logfile
6448(error.txt). Send all other iASL output to a logfile (compiler.txt).
6449Fixed
6450several extraneous "unrecognized operator" messages.
6451
6452----------------------------------------
645320 March 2012. Summary of changes for version 20120320:
6454
6455
64561) ACPICA Core Subsystem:
6457
6458Enhanced the sleep/wake interfaces to optionally execute the _GTS method
6459(Going To Sleep) and the _BFS method (Back From Sleep). Windows
6460apparently
6461does not execute these methods, and therefore these methods are often
6462untested. It has been seen on some systems where the execution of these
6463methods causes errors and also prevents the machine from entering S5. It
6464is
6465therefore suggested that host operating systems do not execute these
6466methods
6467by default. In the future, perhaps these methods can be optionally
6468executed
6469based on the age of the system and/or what is the newest version of
6470Windows
6471that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
6472and
6473AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
6474Ming.
6475
6476Fixed a problem where the length of the local/common FADT was set too
6477early.
6478The local FADT table length cannot be set to the common length until the
6479original length has been examined. There is code that checks the table
6480length
6481and sets various fields appropriately. This can affect older machines
6482with
6483early FADT versions. For example, this can cause inadvertent writes to
6484the
6485CST_CNT register. Julian Anastasov.
6486
6487Fixed a mapping issue related to a physical table override. Use the
6488deferred
6489mapping mechanism for tables loaded via the physical override OSL
6490interface.
6491This allows for early mapping before the virtual memory manager is
6492available.
6493Thomas Renninger, Bob Moore.
6494
6495Enhanced the automatic return-object repair code: Repair a common problem
6496with
6497predefined methods that are defined to return a variable-length Package
6498of
6499sub-objects. If there is only one sub-object, some BIOS ASL code
6500mistakenly
6501simply returns the single object instead of a Package with one sub-
6502object.
6503This new support will repair this error by wrapping a Package object
6504around
6505the original object, creating the correct and expected Package with one
6506sub-
6507object. Names that can be repaired in this manner include: _ALR, _CSD,
6508_HPX,
6509_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
6510939.
6511
6512Changed the exception code returned for invalid ACPI paths passed as
6513parameters to external interfaces such as AcpiEvaluateObject. Was
6514AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
6515
6516Example Code and Data Size: These are the sizes for the OS-independent
6517acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6518debug
6519version of the code includes the debug output trace mechanism and has a
6520much
6521larger code and data size.
6522
6523  Previous Release:
6524    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
6525    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6526  Current Release:
6527    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6528    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6529
6530
65312) iASL Compiler/Disassembler and Tools:
6532
6533iASL: Added the infrastructure and initial implementation of a integrated
6534C-
6535like preprocessor. This will simplify BIOS development process by
6536eliminating
6537the need for a separate preprocessing step during builds. On Windows, it
6538also
6539eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
6540features including full #define() macro support are still under
6541development.
6542These preprocessor directives are supported:
6543    #define
6544    #elif
6545    #else
6546    #endif
6547    #error
6548    #if
6549    #ifdef
6550    #ifndef
6551    #include
6552    #pragma message
6553    #undef
6554    #warning
6555In addition, these new command line options are supported:
6556    -D <symbol> Define symbol for preprocessor use
6557    -li         Create preprocessed output file (*.i)
6558    -P          Preprocess only and create preprocessor output file (*.i)
6559
6560Table Compiler: Fixed a problem where the equals operator within an
6561expression
6562did not work properly.
6563
6564Updated iASL to use the current versions of Bison/Flex. Updated the
6565Windows
6566project file to invoke these tools from the standard location. ACPICA BZ
6567904.
6568Versions supported:
6569    Flex for Windows:  V2.5.4
6570    Bison for Windows: V2.4.1
6571
6572----------------------------------------
657315 February 2012. Summary of changes for version 20120215:
6574
6575
65761) ACPICA Core Subsystem:
6577
6578There have been some major changes to the sleep/wake support code, as
6579described below (a - e).
6580
6581a) The AcpiLeaveSleepState has been split into two interfaces, similar to
6582AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
6583AcpiLeaveSleepStatePrep. This allows the host to perform actions between
6584the
6585time the _BFS method is called and the _WAK method is called. NOTE: all
6586hosts
6587must update their wake/resume code or else sleep/wake will not work
6588properly.
6589Rafael Wysocki.
6590
6591b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
6592_WAK
6593method. Some machines require that the GPEs are enabled before the _WAK
6594method
6595is executed. Thomas Renninger.
6596
6597c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
6598bit.
6599Some BIOS code assumes that WAK_STS will be cleared on resume and use it
6600to
6601determine whether the system is rebooting or resuming. Matthew Garrett.
6602
6603d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
6604Sleep) to
6605match the ACPI specification requirement. Rafael Wysocki.
6606
6607e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
6608registers within the V5 FADT. This support adds two new files:
6609hardware/hwesleep.c implements the support for the new registers. Moved
6610all
6611sleep/wake external interfaces to hardware/hwxfsleep.c.
6612
6613
6614Added a new OSL interface for ACPI table overrides,
6615AcpiOsPhysicalTableOverride. This interface allows the host to override a
6616table via a physical address, instead of the logical address required by
6617AcpiOsTableOverride. This simplifies the host implementation. Initial
6618implementation by Thomas Renninger. The ACPICA implementation creates a
6619single
6620shared function for table overrides that attempts both a logical and a
6621physical override.
6622
6623Expanded the OSL memory read/write interfaces to 64-bit data
6624(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
6625transfer support for GAS register structures passed to AcpiRead and
6626AcpiWrite.
6627
6628Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
6629custom
6630build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
6631model.
6632See the ACPICA reference for details. ACPICA BZ 942. This option removes
6633about
663410% of the code and 5% of the static data, and the following hardware
6635ACPI
6636features become unavailable:
6637    PM Event and Control registers
6638    SCI interrupt (and handler)
6639    Fixed Events
6640    General Purpose Events (GPEs)
6641    Global Lock
6642    ACPI PM timer
6643    FACS table (Waking vectors and Global Lock)
6644
6645Updated the unix tarball directory structure to match the ACPICA git
6646source
6647tree. This ensures that the generic unix makefiles work properly (in
6648generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
6649867.
6650
6651Updated the return value of the _REV predefined method to integer value 5
6652to
6653reflect ACPI 5.0 support.
6654
6655Moved the external ACPI PM timer interface prototypes to the public
6656acpixf.h
6657file where they belong.
6658
6659Example Code and Data Size: These are the sizes for the OS-independent
6660acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6661debug
6662version of the code includes the debug output trace mechanism and has a
6663much
6664larger code and data size.
6665
6666  Previous Release:
6667    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
6668    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
6669  Current Release:
6670    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
6671    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6672
6673
66742) iASL Compiler/Disassembler and Tools:
6675
6676Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
6677descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
6678incorrectly displayed.
6679
6680AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
6681specification.
6682
6683----------------------------------------
668411 January 2012. Summary of changes for version 20120111:
6685
6686
66871) ACPICA Core Subsystem:
6688
6689Implemented a new mechanism to allow host device drivers to check for
6690address
6691range conflicts with ACPI Operation Regions. Both SystemMemory and
6692SystemIO
6693address spaces are supported. A new external interface,
6694AcpiCheckAddressRange,
6695allows drivers to check an address range against the ACPI namespace. See
6696the
6697ACPICA reference for additional details. Adds one new file,
6698utilities/utaddress.c. Lin Ming, Bob Moore.
6699
6700Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
6701Control
6702and
6703Status registers, update the ACPI 5.0 flags, and update internal data
6704structures to handle an FADT larger than 256 bytes. The size of the ACPI
67055.0
6706FADT is 268 bytes.
6707
6708Updated all ACPICA copyrights and signons to 2012. Added the 2012
6709copyright to
6710all module headers and signons, including the standard Linux header. This
6711affects virtually every file in the ACPICA core subsystem, iASL compiler,
6712and
6713all ACPICA utilities.
6714
6715Example Code and Data Size: These are the sizes for the OS-independent
6716acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6717debug
6718version of the code includes the debug output trace mechanism and has a
6719much
6720larger code and data size.
6721
6722  Previous Release:
6723    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
6724    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
6725  Current Release:
6726    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
6727    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
6728
6729
67302) iASL Compiler/Disassembler and Tools:
6731
6732Disassembler: fixed a problem with the automatic resource tag generation
6733support. Fixes a problem where the resource tags are inadvertently not
6734constructed if the table being disassembled contains external references
6735to
6736control methods. Moved the actual construction of the tags to after the
6737final
6738namespace is constructed (after 2nd parse is invoked due to external
6739control
6740method references.) ACPICA BZ 941.
6741
6742Table Compiler: Make all "generic" operators caseless. These are the
6743operators
6744like UINT8, String, etc. Making these caseless improves ease-of-use.
6745ACPICA BZ
6746934.
6747
6748----------------------------------------
674923 November 2011. Summary of changes for version 20111123:
6750
67510) ACPI 5.0 Support:
6752
6753This release contains full support for the ACPI 5.0 specification, as
6754summarized below.
6755
6756Reduced Hardware Support:
6757-------------------------
6758
6759This support allows for ACPI systems without the usual ACPI hardware.
6760This
6761support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
6762will
6763not attempt to initialize or use any of the usual ACPI hardware. Note,
6764when
6765this flag is set, all of the following ACPI hardware is assumed to be not
6766present and is not initialized or accessed:
6767
6768    General Purpose Events (GPEs)
6769    Fixed Events (PM1a/PM1b and PM Control)
6770    Power Management Timer and Console Buttons (power/sleep)
6771    Real-time Clock Alarm
6772    Global Lock
6773    System Control Interrupt (SCI)
6774    The FACS is assumed to be non-existent
6775
6776ACPI Tables:
6777------------
6778
6779All new tables and updates to existing tables are fully supported in the
6780ACPICA headers (for use by device drivers), the disassembler, and the
6781iASL
6782Data Table Compiler. ACPI 5.0 defines these new tables:
6783
6784    BGRT        /* Boot Graphics Resource Table */
6785    DRTM        /* Dynamic Root of Trust for Measurement table */
6786    FPDT        /* Firmware Performance Data Table */
6787    GTDT        /* Generic Timer Description Table */
6788    MPST        /* Memory Power State Table */
6789    PCCT        /* Platform Communications Channel Table */
6790    PMTT        /* Platform Memory Topology Table */
6791    RASF        /* RAS Feature table */
6792
6793Operation Regions/SpaceIDs:
6794---------------------------
6795
6796All new operation regions are fully supported by the iASL compiler, the
6797disassembler, and the ACPICA runtime code (for dispatch to region
6798handlers.)
6799The new operation region Space IDs are:
6800
6801    GeneralPurposeIo
6802    GenericSerialBus
6803
6804Resource Descriptors:
6805---------------------
6806
6807All new ASL resource descriptors are fully supported by the iASL
6808compiler,
6809the
6810ASL/AML disassembler, and the ACPICA runtime Resource Manager code
6811(including
6812all new predefined resource tags). New descriptors are:
6813
6814    FixedDma
6815    GpioIo
6816    GpioInt
6817    I2cSerialBus
6818    SpiSerialBus
6819    UartSerialBus
6820
6821ASL/AML Operators, New and Modified:
6822------------------------------------
6823
6824One new operator is added, the Connection operator, which is used to
6825associate
6826a GeneralPurposeIo or GenericSerialBus resource descriptor with
6827individual
6828field objects within an operation region. Several new protocols are
6829associated
6830with the AccessAs operator. All are fully supported by the iASL compiler,
6831disassembler, and runtime ACPICA AML interpreter:
6832
6833    Connection                      // Declare Field Connection
6834attributes
6835    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
6836    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
6837Protocol
6838    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
6839    RawDataBuffer                       // Data type for Vendor Data
6840fields
6841
6842Predefined ASL/AML Objects:
6843---------------------------
6844
6845All new predefined objects/control-methods are supported by the iASL
6846compiler
6847and the ACPICA runtime validation/repair (arguments and return values.)
6848New
6849predefined names include the following:
6850
6851Standard Predefined Names (Objects or Control Methods):
6852    _AEI, _CLS, _CPC, _CWS, _DEP,
6853    _DLM, _EVT, _GCP, _CRT, _GWS,
6854    _HRV, _PRE, _PSE, _SRT, _SUB.
6855
6856Resource Tags (Names used to access individual fields within resource
6857descriptors):
6858    _DBT, _DPL, _DRS, _END, _FLC,
6859    _IOR, _LIN, _MOD, _PAR, _PHA,
6860    _PIN, _PPI, _POL, _RXL, _SLV,
6861    _SPE, _STB, _TXL, _VEN.
6862
6863ACPICA External Interfaces:
6864---------------------------
6865
6866Several new interfaces have been defined for use by ACPI-related device
6867drivers and other host OS services:
6868
6869AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
6870to
6871acquire and release AML mutexes that are defined in the DSDT/SSDT tables
6872provided by the BIOS. They are intended to be used in conjunction with
6873the
6874ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
6875mutual exclusion with the AML code/interpreter.
6876
6877AcpiGetEventResources: Returns the (formatted) resource descriptors as
6878defined
6879by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
6880provides
6881resource descriptors associated with hardware-reduced platform events,
6882similar
6883to the AcpiGetCurrentResources interface.
6884
6885Operation Region Handlers: For General Purpose IO and Generic Serial Bus
6886operation regions, information about the Connection() object and any
6887optional
6888length information is passed to the region handler within the Context
6889parameter.
6890
6891AcpiBufferToResource: This interface converts a raw AML buffer containing
6892a
6893resource template or resource descriptor to the ACPI_RESOURCE internal
6894format
6895suitable for use by device drivers. Can be used by an operation region
6896handler
6897to convert the Connection() buffer object into a ACPI_RESOURCE.
6898
6899Miscellaneous/Tools/TestSuites:
6900-------------------------------
6901
6902Support for extended _HID names (Four alpha characters instead of three).
6903Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
6904Support for ACPI 5.0 features in the ASLTS test suite.
6905Fully updated documentation (ACPICA and iASL reference documents.)
6906
6907ACPI Table Definition Language:
6908-------------------------------
6909
6910Support for this language was implemented and released as a subsystem of
6911the
6912iASL compiler in 2010. (See the iASL compiler User Guide.)
6913
6914
6915Non-ACPI 5.0 changes for this release:
6916--------------------------------------
6917
69181) ACPICA Core Subsystem:
6919
6920Fix a problem with operation region declarations where a failure can
6921occur
6922if
6923the region name and an argument that evaluates to an object (such as the
6924region address) are in different namespace scopes. Lin Ming, ACPICA BZ
6925937.
6926
6927Do not abort an ACPI table load if an invalid space ID is found within.
6928This
6929will be caught later if the offending method is executed. ACPICA BZ 925.
6930
6931Fixed an issue with the FFixedHW space ID where the ID was not always
6932recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
6933
6934Fixed a problem with the 32-bit generation of the unix-specific OSL
6935(osunixxf.c). Lin Ming, ACPICA BZ 936.
6936
6937Several changes made to enable generation with the GCC 4.6 compiler.
6938ACPICA BZ
6939935.
6940
6941New error messages: Unsupported I/O requests (not 8/16/32 bit), and
6942Index/Bank
6943field registers out-of-range.
6944
69452) iASL Compiler/Disassembler and Tools:
6946
6947iASL: Implemented the __PATH__ operator, which returns the full pathname
6948of
6949the current source file.
6950
6951AcpiHelp: Automatically display expanded keyword information for all ASL
6952operators.
6953
6954Debugger: Add "Template" command to disassemble/dump resource template
6955buffers.
6956
6957Added a new master script to generate and execute the ASLTS test suite.
6958Automatically handles 32- and 64-bit generation. See tests/aslts.sh
6959
6960iASL: Fix problem with listing generation during processing of the
6961Switch()
6962operator where AML listing was disabled until the entire Switch block was
6963completed.
6964
6965iASL: Improve support for semicolon statement terminators. Fix "invalid
6966character" message for some cases when the semicolon is used. Semicolons
6967are
6968now allowed after every <Term> grammar element. ACPICA BZ 927.
6969
6970iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
6971923.
6972
6973Disassembler: Fix problem with disassembly of the DataTableRegion
6974operator
6975where an inadvertent "Unhandled deferred opcode" message could be
6976generated.
6977
69783) Example Code and Data Size
6979
6980These are the sizes for the OS-independent acpica.lib produced by the
6981Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6982includes the debug output trace mechanism and has a much larger code and
6983data
6984size.
6985
6986  Previous Release:
6987    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6988    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6989  Current Release:
6990    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
6991    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
6992
6993----------------------------------------
699422 September 2011. Summary of changes for version 20110922:
6995
69960) ACPI 5.0 News:
6997
6998Support for ACPI 5.0 in ACPICA has been underway for several months and
6999will
7000be released at the same time that ACPI 5.0 is officially released.
7001
7002The ACPI 5.0 specification is on track for release in the next few
7003months.
7004
70051) ACPICA Core Subsystem:
7006
7007Fixed a problem where the maximum sleep time for the Sleep() operator was
7008intended to be limited to two seconds, but was inadvertently limited to
700920
7010seconds instead.
7011
7012Linux and Unix makefiles: Added header file dependencies to ensure
7013correct
7014generation of ACPICA core code and utilities. Also simplified the
7015makefiles
7016considerably through the use of the vpath variable to specify search
7017paths.
7018ACPICA BZ 924.
7019
70202) iASL Compiler/Disassembler and Tools:
7021
7022iASL: Implemented support to check the access length for all fields
7023created to
7024access named Resource Descriptor fields. For example, if a resource field
7025is
7026defined to be two bits, a warning is issued if a CreateXxxxField() is
7027used
7028with an incorrect bit length. This is implemented for all current
7029resource
7030descriptor names. ACPICA BZ 930.
7031
7032Disassembler: Fixed a byte ordering problem with the output of 24-bit and
703356-
7034bit integers.
7035
7036iASL: Fixed a couple of issues associated with variable-length package
7037objects. 1) properly handle constants like One, Ones, Zero -- do not make
7038a
7039VAR_PACKAGE when these are used as a package length. 2) Allow the
7040VAR_PACKAGE
7041opcode (in addition to PACKAGE) when validating object types for
7042predefined
7043names.
7044
7045iASL: Emit statistics for all output files (instead of just the ASL input
7046and
7047AML output). Includes listings, hex files, etc.
7048
7049iASL: Added -G option to the table compiler to allow the compilation of
7050custom
7051ACPI tables. The only part of a table that is required is the standard
705236-
7053byte
7054ACPI header.
7055
7056AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
7057headers),
7058which also adds correct 64-bit support. Also, now all output filenames
7059are
7060completely lower case.
7061
7062AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
7063loading table files. A warning is issued for any such tables. The only
7064exception is an FADT. This also fixes a possible fault when attempting to
7065load
7066non-AML tables. ACPICA BZ 932.
7067
7068AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
7069a
7070missing table terminator could cause a fault when using the -p option.
7071
7072AcpiSrc: Fixed a possible divide-by-zero fault when generating file
7073statistics.
7074
70753) Example Code and Data Size
7076
7077These are the sizes for the OS-independent acpica.lib produced by the
7078Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
7079includes the debug output trace mechanism and has a much larger code and
7080data
7081size.
7082
7083  Previous Release (VC 9.0):
7084    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7085    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7086  Current Release (VC 9.0):
7087    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7088    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7089
7090
7091----------------------------------------
709223 June 2011. Summary of changes for version 20110623:
7093
70941) ACPI CA Core Subsystem:
7095
7096Updated the predefined name repair mechanism to not attempt repair of a
7097_TSS
7098return object if a _PSS object is present. We can only sort the _TSS
7099return
7100package if there is no _PSS within the same scope. This is because if
7101_PSS
7102is
7103present, the ACPI specification dictates that the _TSS Power Dissipation
7104field
7105is to be ignored, and therefore some BIOSs leave garbage values in the
7106_TSS
7107Power field(s). In this case, it is best to just return the _TSS package
7108as-
7109is. Reported by, and fixed with assistance from Fenghua Yu.
7110
7111Added an option to globally disable the control method return value
7112validation
7113and repair. This runtime option can be used to disable return value
7114repair
7115if
7116this is causing a problem on a particular machine. Also added an option
7117to
7118AcpiExec (-dr) to set this disable flag.
7119
7120All makefiles and project files: Major changes to improve generation of
7121ACPICA
7122tools. ACPICA BZ 912:
7123    Reduce default optimization levels to improve compatibility
7124    For Linux, add strict-aliasing=0 for gcc 4
7125    Cleanup and simplify use of command line defines
7126    Cleanup multithread library support
7127    Improve usage messages
7128
7129Linux-specific header: update handling of THREAD_ID and pthread. For the
713032-
7131bit case, improve casting to eliminate possible warnings, especially with
7132the
7133acpica tools.
7134
7135Example Code and Data Size: These are the sizes for the OS-independent
7136acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7137debug
7138version of the code includes the debug output trace mechanism and has a
7139much
7140larger code and data size.
7141
7142  Previous Release (VC 9.0):
7143    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
7144    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7145  Current Release (VC 9.0):
7146    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7147    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7148
71492) iASL Compiler/Disassembler and Tools:
7150
7151With this release, a new utility named "acpihelp" has been added to the
7152ACPICA
7153package. This utility summarizes the ACPI specification chapters for the
7154ASL
7155and AML languages. It generates under Linux/Unix as well as Windows, and
7156provides the following functionality:
7157    Find/display ASL operator(s) -- with description and syntax.
7158    Find/display ASL keyword(s) -- with exact spelling and descriptions.
7159    Find/display ACPI predefined name(s) -- with description, number
7160        of arguments, and the return value data type.
7161    Find/display AML opcode name(s) -- with opcode, arguments, and
7162grammar.
7163    Decode/display AML opcode -- with opcode name, arguments, and
7164grammar.
7165
7166Service Layers: Make multi-thread support configurable. Conditionally
7167compile
7168the multi-thread support so that threading libraries will not be linked
7169if
7170not
7171necessary. The only tool that requires multi-thread support is AcpiExec.
7172
7173iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
7174of
7175Bison appear to want the interface to yyerror to be a const char * (or at
7176least this is a problem when generating iASL on some systems.) ACPICA BZ
7177923
7178Pierre Lejeune.
7179
7180Tools: Fix for systems where O_BINARY is not defined. Only used for
7181Windows
7182versions of the tools.
7183
7184----------------------------------------
718527 May 2011. Summary of changes for version 20110527:
7186
71871) ACPI CA Core Subsystem:
7188
7189ASL Load() operator: Reinstate most restrictions on the incoming ACPI
7190table
7191signature. Now, only allow SSDT, OEMx, and a null signature. History:
7192    1) Originally, we checked the table signature for "SSDT" or "PSDT".
7193       (PSDT is now obsolete.)
7194    2) We added support for OEMx tables, signature "OEM" plus a fourth
7195       "don't care" character.
7196    3) Valid tables were encountered with a null signature, so we just
7197       gave up on validating the signature, (05/2008).
7198    4) We encountered non-AML tables such as the MADT, which caused
7199       interpreter errors and kernel faults. So now, we once again allow
7200       only SSDT, OEMx, and now, also a null signature. (05/2011).
7201
7202Added the missing _TDL predefined name to the global name list in order
7203to
7204enable validation. Affects both the core ACPICA code and the iASL
7205compiler.
7206
7207Example Code and Data Size: These are the sizes for the OS-independent
7208acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7209debug
7210version of the code includes the debug output trace mechanism and has a
7211much
7212larger code and data size.
7213
7214  Previous Release (VC 9.0):
7215    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
7216    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
7217  Current Release (VC 9.0):
7218    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
7219    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7220
72212) iASL Compiler/Disassembler and Tools:
7222
7223Debugger/AcpiExec: Implemented support for "complex" method arguments on
7224the
7225debugger command line. This adds support beyond simple integers --
7226including
7227Strings, Buffers, and Packages. Includes support for nested packages.
7228Increased the default command line buffer size to accommodate these
7229arguments.
7230See the ACPICA reference for details and syntax. ACPICA BZ 917.
7231
7232Debugger/AcpiExec: Implemented support for "default" method arguments for
7233the
7234Execute/Debug command. Now, the debugger will always invoke a control
7235method
7236with the required number of arguments -- even if the command line
7237specifies
7238none or insufficient arguments. It uses default integer values for any
7239missing
7240arguments. Also fixes a bug where only six method arguments maximum were
7241supported instead of the required seven.
7242
7243Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
7244and
7245also return status in order to prevent buffer overruns. See the ACPICA
7246reference for details and syntax. ACPICA BZ 921
7247
7248iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
7249makefiles to simplify support for the two different but similar parser
7250generators, bison and yacc.
7251
7252Updated the generic unix makefile for gcc 4. The default gcc version is
7253now
7254expected to be 4 or greater, since options specific to gcc 4 are used.
7255
7256----------------------------------------
725713 April 2011. Summary of changes for version 20110413:
7258
72591) ACPI CA Core Subsystem:
7260
7261Implemented support to execute a so-called "orphan" _REG method under the
7262EC
7263device. This change will force the execution of a _REG method underneath
7264the
7265EC
7266device even if there is no corresponding operation region of type
7267EmbeddedControl. Fixes a problem seen on some machines and apparently is
7268compatible with Windows behavior. ACPICA BZ 875.
7269
7270Added more predefined methods that are eligible for automatic NULL
7271package
7272element removal. This change adds another group of predefined names to
7273the
7274list
7275of names that can be repaired by having NULL package elements dynamically
7276removed. This group are those methods that return a single variable-
7277length
7278package containing simple data types such as integers, buffers, strings.
7279This
7280includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
7281_PSL,
7282_Sx,
7283and _TZD. ACPICA BZ 914.
7284
7285Split and segregated all internal global lock functions to a new file,
7286evglock.c.
7287
7288Updated internal address SpaceID for DataTable regions. Moved this
7289internal
7290space
7291id in preparation for ACPI 5.0 changes that will include some new space
7292IDs.
7293This
7294change should not affect user/host code.
7295
7296Example Code and Data Size: These are the sizes for the OS-independent
7297acpica.lib
7298produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
7299version of
7300the code includes the debug output trace mechanism and has a much larger
7301code
7302and
7303data size.
7304
7305  Previous Release (VC 9.0):
7306    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
7307    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
7308  Current Release (VC 9.0):
7309    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
7310    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
7311
73122) iASL Compiler/Disassembler and Tools:
7313
7314iASL/DTC: Major update for new grammar features. Allow generic data types
7315in
7316custom ACPI tables. Field names are now optional. Any line can be split
7317to
7318multiple lines using the continuation char (\). Large buffers now use
7319line-
7320continuation character(s) and no colon on the continuation lines. See the
7321grammar
7322update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
7323Moore.
7324
7325iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
7326statements.
7327Since the parser stuffs a "zero" as the return value for these statements
7328(due
7329to
7330the underlying AML grammar), they were seen as "return with value" by the
7331iASL
7332semantic checking. They are now seen correctly as "null" return
7333statements.
7334
7335iASL: Check if a_REG declaration has a corresponding Operation Region.
7336Adds a
7337check for each _REG to ensure that there is in fact a corresponding
7338operation
7339region declaration in the same scope. If not, the _REG method is not very
7340useful
7341since it probably won't be executed. ACPICA BZ 915.
7342
7343iASL/DTC: Finish support for expression evaluation. Added a new
7344expression
7345parser
7346that implements c-style operator precedence and parenthesization. ACPICA
7347bugzilla
7348908.
7349
7350Disassembler/DTC: Remove support for () and <> style comments in data
7351tables.
7352Now
7353that DTC has full expression support, we don't want to have comment
7354strings
7355that
7356start with a parentheses or a less-than symbol. Now, only the standard /*
7357and
7358//
7359comments are supported, as well as the bracket [] comments.
7360
7361AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
7362"unusual"
7363headers in the acpidump file. Update the header validation to support
7364these
7365tables. Problem introduced in previous AcpiXtract version in the change
7366to
7367support "wrong checksum" error messages emitted by acpidump utility.
7368
7369iASL: Add a * option to generate all template files (as a synonym for
7370ALL)
7371as
7372in
7373"iasl -T *" or "iasl -T ALL".
7374
7375iASL/DTC: Do not abort compiler on fatal errors. We do not want to
7376completely
7377abort the compiler on "fatal" errors, simply should abort the current
7378compile.
7379This allows multiple compiles with a single (possibly wildcard) compiler
7380invocation.
7381
7382----------------------------------------
738316 March 2011. Summary of changes for version 20110316:
7384
73851) ACPI CA Core Subsystem:
7386
7387Fixed a problem caused by a _PRW method appearing at the namespace root
7388scope
7389during the setup of wake GPEs. A fault could occur if a _PRW directly
7390under
7391the
7392root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
7393
7394Implemented support for "spurious" Global Lock interrupts. On some
7395systems, a
7396global lock interrupt can occur without the pending flag being set. Upon
7397a
7398GL
7399interrupt, we now ensure that a thread is actually waiting for the lock
7400before
7401signaling GL availability. Rafael Wysocki, Bob Moore.
7402
7403Example Code and Data Size: These are the sizes for the OS-independent
7404acpica.lib
7405produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
7406version of
7407the code includes the debug output trace mechanism and has a much larger
7408code
7409and
7410data size.
7411
7412  Previous Release (VC 9.0):
7413    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7414    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7415  Current Release (VC 9.0):
7416    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
7417    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
7418
74192) iASL Compiler/Disassembler and Tools:
7420
7421Implemented full support for the "SLIC" ACPI table. Includes support in
7422the
7423header files, disassembler, table compiler, and template generator. Bob
7424Moore,
7425Lin Ming.
7426
7427AcpiXtract: Correctly handle embedded comments and messages from
7428AcpiDump.
7429Apparently some or all versions of acpidump will occasionally emit a
7430comment
7431like
7432"Wrong checksum", etc., into the dump file. This was causing problems for
7433AcpiXtract. ACPICA BZ 905.
7434
7435iASL: Fix the Linux makefile by removing an inadvertent double file
7436inclusion.
7437ACPICA BZ 913.
7438
7439AcpiExec: Update installation of operation region handlers. Install one
7440handler
7441for a user-defined address space. This is used by the ASL test suite
7442(ASLTS).
7443
7444----------------------------------------
744511 February 2011. Summary of changes for version 20110211:
7446
74471) ACPI CA Core Subsystem:
7448
7449Added a mechanism to defer _REG methods for some early-installed
7450handlers.
7451Most user handlers should be installed before call to
7452AcpiEnableSubsystem.
7453However, Event handlers and region handlers should be installed after
7454AcpiInitializeObjects. Override handlers for the "default" regions should
7455be
7456installed early, however. This change executes all _REG methods for the
7457default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
7458chicken/egg issues between them. ACPICA BZ 848.
7459
7460Implemented an optimization for GPE detection. This optimization will
7461simply
7462ignore GPE registers that contain no enabled GPEs -- there is no need to
7463read the register since this information is available internally. This
7464becomes more important on machines with a large GPE space. ACPICA
7465bugzilla
7466884. Lin Ming. Suggestion from Joe Liu.
7467
7468Removed all use of the highly unreliable FADT revision field. The
7469revision
7470number in the FADT has been found to be completely unreliable and cannot
7471be
7472trusted. Only the actual table length can be used to infer the version.
7473This
7474change updates the ACPICA core and the disassembler so that both no
7475longer
7476even look at the FADT version and instead depend solely upon the FADT
7477length.
7478
7479Fix an unresolved name issue for the no-debug and no-error-message source
7480generation cases. The _AcpiModuleName was left undefined in these cases,
7481but
7482it is actually needed as a parameter to some interfaces. Define
7483_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
7484
7485Split several large files (makefiles and project files updated)
7486  utglobal.c   -> utdecode.c
7487  dbcomds.c    -> dbmethod.c dbnames.c
7488  dsopcode.c   -> dsargs.c dscontrol.c
7489  dsload.c     -> dsload2.c
7490  aslanalyze.c -> aslbtypes.c aslwalks.c
7491
7492Example Code and Data Size: These are the sizes for the OS-independent
7493acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7494debug version of the code includes the debug output trace mechanism and
7495has
7496a much larger code and data size.
7497
7498  Previous Release (VC 9.0):
7499    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7500    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7501  Current Release (VC 9.0):
7502    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7503    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7504
75052) iASL Compiler/Disassembler and Tools:
7506
7507iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
7508These are useful C-style macros with the standard definitions. ACPICA
7509bugzilla 898.
7510
7511iASL/DTC: Added support for integer expressions and labels. Support for
7512full
7513expressions for all integer fields in all ACPI tables. Support for labels
7514in
7515"generic" portions of tables such as UEFI. See the iASL reference manual.
7516
7517Debugger: Added a command to display the status of global handlers. The
7518"handlers" command will display op region, fixed event, and miscellaneous
7519global handlers. installation status -- and for op regions, whether
7520default
7521or user-installed handler will be used.
7522
7523iASL: Warn if reserved method incorrectly returns a value. Many
7524predefined
7525names are defined such that they do not return a value. If implemented as
7526a
7527method, issue a warning if such a name explicitly returns a value. ACPICA
7528Bugzilla 855.
7529
7530iASL: Added detection of GPE method name conflicts. Detects a conflict
7531where
7532there are two GPE methods of the form _Lxy and _Exy in the same scope.
7533(For
7534example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
7535
7536iASL/DTC: Fixed a couple input scanner issues with comments and line
7537numbers. Comment remover could get confused and miss a comment ending.
7538Fixed
7539a problem with line counter maintenance.
7540
7541iASL/DTC: Reduced the severity of some errors from fatal to error. There
7542is
7543no need to abort on simple errors within a field definition.
7544
7545Debugger: Simplified the output of the help command. All help output now
7546in
7547a single screen, instead of help subcommands. ACPICA Bugzilla 897.
7548
7549----------------------------------------
755012 January 2011. Summary of changes for version 20110112:
7551
75521) ACPI CA Core Subsystem:
7553
7554Fixed a race condition between method execution and namespace walks that
7555can
7556possibly cause a fault. The problem was apparently introduced in version
755720100528 as a result of a performance optimization that reduces the
7558number
7559of
7560namespace walks upon method exit by using the delete_namespace_subtree
7561function instead of the delete_namespace_by_owner function used
7562previously.
7563Bug is a missing namespace lock in the delete_namespace_subtree function.
7564dana.myers@oracle.com
7565
7566Fixed several issues and a possible fault with the automatic "serialized"
7567method support. History: This support changes a method to "serialized" on
7568the
7569fly if the method generates an AE_ALREADY_EXISTS error, indicating the
7570possibility that it cannot handle reentrancy. This fix repairs a couple
7571of
7572issues seen in the field, especially on machines with many cores:
7573
7574    1) Delete method children only upon the exit of the last thread,
7575       so as to not delete objects out from under other running threads
7576      (and possibly causing a fault.)
7577    2) Set the "serialized" bit for the method only upon the exit of the
7578       Last thread, so as to not cause deadlock when running threads
7579       attempt to exit.
7580    3) Cleanup the use of the AML "MethodFlags" and internal method flags
7581       so that there is no longer any confusion between the two.
7582
7583    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
7584
7585Debugger: Now lock the namespace for duration of a namespace dump.
7586Prevents
7587issues if the namespace is changing dynamically underneath the debugger.
7588Especially affects temporary namespace nodes, since the debugger displays
7589these also.
7590
7591Updated the ordering of include files. The ACPICA headers should appear
7592before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
7593set
7594any necessary compiler-specific defines, etc. Affects the ACPI-related
7595tools
7596and utilities.
7597
7598Updated all ACPICA copyrights and signons to 2011. Added the 2011
7599copyright
7600to all module headers and signons, including the Linux header. This
7601affects
7602virtually every file in the ACPICA core subsystem, iASL compiler, and all
7603utilities.
7604
7605Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
7606project files for VC++ 6.0 are now obsolete. New project files can be
7607found
7608under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
7609details.
7610
7611Example Code and Data Size: These are the sizes for the OS-independent
7612acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7613debug version of the code includes the debug output trace mechanism and
7614has a
7615much larger code and data size.
7616
7617  Previous Release (VC 6.0):
7618    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
7619    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
7620  Current Release (VC 9.0):
7621    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7622    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7623
76242) iASL Compiler/Disassembler and Tools:
7625
7626iASL: Added generic data types to the Data Table compiler. Add "generic"
7627data
7628types such as UINT32, String, Unicode, etc., to simplify the generation
7629of
7630platform-defined tables such as UEFI. Lin Ming.
7631
7632iASL: Added listing support for the Data Table Compiler. Adds listing
7633support
7634(-l) to display actual binary output for each line of input code.
7635
7636----------------------------------------
763709 December 2010. Summary of changes for version 20101209:
7638
76391) ACPI CA Core Subsystem:
7640
7641Completed the major overhaul of the GPE support code that was begun in
7642July
76432010. Major features include: removal of _PRW execution in ACPICA (host
7644executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
7645changes to existing interfaces, simplification of GPE handler operation,
7646and
7647a handful of new interfaces:
7648
7649    AcpiUpdateAllGpes
7650    AcpiFinishGpe
7651    AcpiSetupGpeForWake
7652    AcpiSetGpeWakeMask
7653    One new file, evxfgpe.c to consolidate all external GPE interfaces.
7654
7655See the ACPICA Programmer Reference for full details and programming
7656information. See the new section 4.4 "General Purpose Event (GPE)
7657Support"
7658for a full overview, and section 8.7 "ACPI General Purpose Event
7659Management"
7660for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
7661Ming,
7662Bob Moore, Rafael Wysocki.
7663
7664Implemented a new GPE feature for Windows compatibility, the "Implicit
7665Wake
7666GPE Notify". This feature will automatically issue a Notify(2) on a
7667device
7668when a Wake GPE is received if there is no corresponding GPE method or
7669handler. ACPICA BZ 870.
7670
7671Fixed a problem with the Scope() operator during table parse and load
7672phase.
7673During load phase (table load or method execution), the scope operator
7674should
7675not enter the target into the namespace. Instead, it should open a new
7676scope
7677at the target location. Linux BZ 19462, ACPICA BZ 882.
7678
7679Example Code and Data Size: These are the sizes for the OS-independent
7680acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7681debug version of the code includes the debug output trace mechanism and
7682has a
7683much larger code and data size.
7684
7685  Previous Release:
7686    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
7687    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
7688  Current Release:
7689    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7690    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7691
76922) iASL Compiler/Disassembler and Tools:
7693
7694iASL: Relax the alphanumeric restriction on _CID strings. These strings
7695are
7696"bus-specific" per the ACPI specification, and therefore any characters
7697are
7698acceptable. The only checks that can be performed are for a null string
7699and
7700perhaps for a leading asterisk. ACPICA BZ 886.
7701
7702iASL: Fixed a problem where a syntax error that caused a premature EOF
7703condition on the source file emitted a very confusing error message. The
7704premature EOF is now detected correctly. ACPICA BZ 891.
7705
7706Disassembler: Decode the AccessSize within a Generic Address Structure
7707(byte
7708access, word access, etc.) Note, this field does not allow arbitrary bit
7709access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
7710
7711New: AcpiNames utility - Example namespace dump utility. Shows an example
7712of
7713ACPICA configuration for a minimal namespace dump utility. Uses table and
7714namespace managers, but no AML interpreter. Does not add any
7715functionality
7716over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
7717partition and configure ACPICA. ACPICA BZ 883.
7718
7719AML Debugger: Increased the debugger buffer size for method return
7720objects.
7721Was 4K, increased to 16K. Also enhanced error messages for debugger
7722method
7723execution, including the buffer overflow case.
7724
7725----------------------------------------
772613 October 2010. Summary of changes for version 20101013:
7727
77281) ACPI CA Core Subsystem:
7729
7730Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
7731now
7732clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
7733HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
7734
7735Changed the type of the predefined namespace object _TZ from ThermalZone
7736to
7737Device. This was found to be confusing to the host software that
7738processes
7739the various thermal zones, since _TZ is not really a ThermalZone.
7740However,
7741a
7742Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
7743Zhang.
7744
7745Added Windows Vista SP2 to the list of supported _OSI strings. The actual
7746string is "Windows 2006 SP2".
7747
7748Eliminated duplicate code in AcpiUtExecute* functions. Now that the
7749nsrepair
7750code automatically repairs _HID-related strings, this type of code is no
7751longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
7752878.
7753
7754Example Code and Data Size: These are the sizes for the OS-independent
7755acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7756debug version of the code includes the debug output trace mechanism and
7757has a
7758much larger code and data size.
7759
7760  Previous Release:
7761    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7762    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7763  Current Release:
7764    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7765    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7766
77672) iASL Compiler/Disassembler and Tools:
7768
7769iASL: Implemented additional compile-time validation for _HID strings.
7770The
7771non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
7772length
7773of
7774the string must be exactly seven or eight characters. For both _HID and
7775_CID
7776strings, all characters must be alphanumeric. ACPICA BZ 874.
7777
7778iASL: Allow certain "null" resource descriptors. Some BIOS code creates
7779descriptors that are mostly or all zeros, with the expectation that they
7780will
7781be filled in at runtime. iASL now allows this as long as there is a
7782"resource
7783tag" (name) associated with the descriptor, which gives the ASL a handle
7784needed to modify the descriptor. ACPICA BZ 873.
7785
7786Added single-thread support to the generic Unix application OSL.
7787Primarily
7788for iASL support, this change removes the use of semaphores in the
7789single-
7790threaded ACPICA tools/applications - increasing performance. The
7791_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
7792option. ACPICA BZ 879.
7793
7794AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
7795support
7796for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
7797
7798iASL: Moved all compiler messages to a new file, aslmessages.h.
7799
7800----------------------------------------
780115 September 2010. Summary of changes for version 20100915:
7802
78031) ACPI CA Core Subsystem:
7804
7805Removed the AcpiOsDerivePciId OSL interface. The various host
7806implementations
7807of this function were not OS-dependent and are now obsolete and can be
7808removed from all host OSLs. This function has been replaced by
7809AcpiHwDerivePciId, which is now part of the ACPICA core code.
7810AcpiHwDerivePciId has been implemented without recursion. Adds one new
7811module, hwpci.c. ACPICA BZ 857.
7812
7813Implemented a dynamic repair for _HID and _CID strings. The following
7814problems are now repaired at runtime: 1) Remove a leading asterisk in the
7815string, and 2) the entire string is uppercased. Both repairs are in
7816accordance with the ACPI specification and will simplify host driver
7817code.
7818ACPICA BZ 871.
7819
7820The ACPI_THREAD_ID type is no longer configurable, internally it is now
7821always UINT64. This simplifies the ACPICA code, especially any printf
7822output.
7823UINT64 is the only common data type for all thread_id types across all
7824operating systems. It is now up to the host OSL to cast the native
7825thread_id
7826type to UINT64 before returning the value to ACPICA (via
7827AcpiOsGetThreadId).
7828Lin Ming, Bob Moore.
7829
7830Added the ACPI_INLINE type to enhance the ACPICA configuration. The
7831"inline"
7832keyword is not standard across compilers, and this type allows inline to
7833be
7834configured on a per-compiler basis. Lin Ming.
7835
7836Made the system global AcpiGbl_SystemAwakeAndRunning publicly
7837available.
7838Added an extern for this boolean in acpixf.h. Some hosts utilize this
7839value
7840during suspend/restore operations. ACPICA BZ 869.
7841
7842All code that implements error/warning messages with the "ACPI:" prefix
7843has
7844been moved to a new module, utxferror.c.
7845
7846The UINT64_OVERLAY was moved to utmath.c, which is the only module where
7847it
7848is used. ACPICA BZ 829. Lin Ming, Bob Moore.
7849
7850Example Code and Data Size: These are the sizes for the OS-independent
7851acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7852debug version of the code includes the debug output trace mechanism and
7853has a
7854much larger code and data size.
7855
7856  Previous Release:
7857    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
7858    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
7859  Current Release:
7860    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7861    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7862
78632) iASL Compiler/Disassembler and Tools:
7864
7865iASL/Disassembler: Write ACPI errors to stderr instead of the output
7866file.
7867This keeps the output files free of random error messages that may
7868originate
7869from within the namespace/interpreter code. Used this opportunity to
7870merge
7871all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
7872866. Lin Ming, Bob Moore.
7873
7874Tools: update some printfs for ansi warnings on size_t. Handle width
7875change
7876of size_t on 32-bit versus 64-bit generations. Lin Ming.
7877
7878----------------------------------------
787906 August 2010. Summary of changes for version 20100806:
7880
78811) ACPI CA Core Subsystem:
7882
7883Designed and implemented a new host interface to the _OSI support code.
7884This
7885will allow the host to dynamically add or remove multiple _OSI strings,
7886as
7887well as install an optional handler that is called for each _OSI
7888invocation.
7889Also added a new AML debugger command, 'osi' to display and modify the
7890global
7891_OSI string table, and test support in the AcpiExec utility. See the
7892ACPICA
7893reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
7894New Functions:
7895    AcpiInstallInterface - Add an _OSI string.
7896    AcpiRemoveInterface - Delete an _OSI string.
7897    AcpiInstallInterfaceHandler - Install optional _OSI handler.
7898Obsolete Functions:
7899    AcpiOsValidateInterface - no longer used.
7900New Files:
7901    source/components/utilities/utosi.c
7902
7903Re-introduced the support to enable multi-byte transfers for Embedded
7904Controller (EC) operation regions. A reported problem was found to be a
7905bug
7906in the host OS, not in the multi-byte support. Previously, the maximum
7907data
7908size passed to the EC operation region handler was a single byte. There
7909are
7910often EC Fields larger than one byte that need to be transferred, and it
7911is
7912useful for the EC driver to lock these as a single transaction. This
7913change
7914enables single transfers larger than 8 bits. This effectively changes the
7915access to the EC space from ByteAcc to AnyAcc, and will probably require
7916changes to the host OS Embedded Controller driver to enable 16/32/64/256-
7917bit
7918transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
7919
7920Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
7921prototype in acpiosxf.h had the output value pointer as a (void *).
7922It should be a (UINT64 *). This may affect some host OSL code.
7923
7924Fixed a couple problems with the recently modified Linux makefiles for
7925iASL
7926and AcpiExec. These new makefiles place the generated object files in the
7927local directory so that there can be no collisions between the files that
7928are
7929shared between them that are compiled with different options.
7930
7931Example Code and Data Size: These are the sizes for the OS-independent
7932acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7933debug version of the code includes the debug output trace mechanism and
7934has a
7935much larger code and data size.
7936
7937  Previous Release:
7938    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7939    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
7940  Current Release:
7941    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
7942    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
7943
79442) iASL Compiler/Disassembler and Tools:
7945
7946iASL/Disassembler: Added a new option (-da, "disassemble all") to load
7947the
7948namespace from and disassemble an entire group of AML files. Useful for
7949loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
7950and
7951disassembling with one simple command. ACPICA BZ 865. Lin Ming.
7952
7953iASL: Allow multiple invocations of -e option. This change allows
7954multiple
7955uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
7956834.
7957Lin Ming.
7958
7959----------------------------------------
796002 July 2010. Summary of changes for version 20100702:
7961
79621) ACPI CA Core Subsystem:
7963
7964Implemented several updates to the recently added GPE reference count
7965support. The model for "wake" GPEs is changing to give the host OS
7966complete
7967control of these GPEs. Eventually, the ACPICA core will not execute any
7968_PRW
7969methods, since the host already must execute them. Also, additional
7970changes
7971were made to help ensure that the reference counts are kept in proper
7972synchronization with reality. Rafael J. Wysocki.
7973
79741) Ensure that GPEs are not enabled twice during initialization.
79752) Ensure that GPE enable masks stay in sync with the reference count.
79763) Do not inadvertently enable GPEs when writing GPE registers.
79774) Remove the internal wake reference counter and add new AcpiGpeWakeup
7978interface. This interface will set or clear individual GPEs for wakeup.
79795) Remove GpeType argument from AcpiEnable and AcpiDisable. These
7980interfaces
7981are now used for "runtime" GPEs only.
7982
7983Changed the behavior of the GPE install/remove handler interfaces. The
7984GPE
7985is
7986no longer disabled during this process, as it was found to cause problems
7987on
7988some machines. Rafael J. Wysocki.
7989
7990Reverted a change introduced in version 20100528 to enable Embedded
7991Controller multi-byte transfers. This change was found to cause problems
7992with
7993Index Fields and possibly Bank Fields. It will be reintroduced when these
7994problems have been resolved.
7995
7996Fixed a problem with references to Alias objects within Package Objects.
7997A
7998reference to an Alias within the definition of a Package was not always
7999resolved properly. Aliases to objects like Processors, Thermal zones,
8000etc.
8001were resolved to the actual object instead of a reference to the object
8002as
8003it
8004should be. Package objects are only allowed to contain integer, string,
8005buffer, package, and reference objects. Redhat bugzilla 608648.
8006
8007Example Code and Data Size: These are the sizes for the OS-independent
8008acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8009debug version of the code includes the debug output trace mechanism and
8010has a
8011much larger code and data size.
8012
8013  Previous Release:
8014    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8015    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
8016  Current Release:
8017    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8018    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
8019
80202) iASL Compiler/Disassembler and Tools:
8021
8022iASL: Implemented a new compiler subsystem to allow definition and
8023compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
8024These
8025are called "ACPI Data Tables", and the new compiler is the "Data Table
8026Compiler". This compiler is intended to simplify the existing error-prone
8027process of creating these tables for the BIOS, as well as allowing the
8028disassembly, modification, recompilation, and override of existing ACPI
8029data
8030tables. See the iASL User Guide for detailed information.
8031
8032iASL: Implemented a new Template Generator option in support of the new
8033Data
8034Table Compiler. This option will create examples of all known ACPI tables
8035that can be used as the basis for table development. See the iASL
8036documentation and the -T option.
8037
8038Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
8039Descriptor Table).
8040
8041Updated the Linux makefiles for iASL and AcpiExec to place the generated
8042object files in the local directory so that there can be no collisions
8043between the shared files between them that are generated with different
8044options.
8045
8046Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
8047Use
8048the #define __APPLE__ to enable this support.
8049
8050----------------------------------------
805128 May 2010. Summary of changes for version 20100528:
8052
8053Note: The ACPI 4.0a specification was released on April 5, 2010 and is
8054available at www.acpi.info. This is primarily an errata release.
8055
80561) ACPI CA Core Subsystem:
8057
8058Undefined ACPI tables: We are looking for the definitions for the
8059following
8060ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
8061
8062Implemented support to enable multi-byte transfers for Embedded
8063Controller
8064(EC) operation regions. Previously, the maximum data size passed to the
8065EC
8066operation region handler was a single byte. There are often EC Fields
8067larger
8068than one byte that need to be transferred, and it is useful for the EC
8069driver
8070to lock these as a single transaction. This change enables single
8071transfers
8072larger than 8 bits. This effectively changes the access to the EC space
8073from
8074ByteAcc to AnyAcc, and will probably require changes to the host OS
8075Embedded
8076Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
8077bit
8078transfers. Alexey Starikovskiy, Lin Ming
8079
8080Implemented a performance enhancement for namespace search and access.
8081This
8082change enhances the performance of namespace searches and walks by adding
8083a
8084backpointer to the parent in each namespace node. On large namespaces,
8085this
8086change can improve overall ACPI performance by up to 9X. Adding a pointer
8087to
8088each namespace node increases the overall size of the internal namespace
8089by
8090about 5%, since each namespace entry usually consists of both a namespace
8091node and an ACPI operand object. However, this is the first growth of the
8092namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
8093
8094Implemented a performance optimization that reduces the number of
8095namespace
8096walks. On control method exit, only walk the namespace if the method is
8097known
8098to have created namespace objects outside of its local scope. Previously,
8099the
8100entire namespace was traversed on each control method exit. This change
8101can
8102improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
8103Moore.
8104
8105Added support to truncate I/O addresses to 16 bits for Windows
8106compatibility.
8107Some ASL code has been seen in the field that inadvertently has bits set
8108above bit 15. This feature is optional and is enabled if the BIOS
8109requests
8110any Windows OSI strings. It can also be enabled by the host OS. Matthew
8111Garrett, Bob Moore.
8112
8113Added support to limit the maximum time for the ASL Sleep() operator. To
8114prevent accidental deep sleeps, limit the maximum time that Sleep() will
8115actually sleep. Configurable, the default maximum is two seconds. ACPICA
8116bugzilla 854.
8117
8118Added run-time validation support for the _WDG and_WED Microsoft
8119predefined
8120methods. These objects are defined by "Windows Instrumentation", and are
8121not
8122part of the ACPI spec. ACPICA BZ 860.
8123
8124Expanded all statistic counters used during namespace and device
8125initialization from 16 to 32 bits in order to support very large
8126namespaces.
8127
8128Replaced all instances of %d in printf format specifiers with %u since
8129nearly
8130all integers in ACPICA are unsigned.
8131
8132Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
8133returned
8134as AE_NO_HANDLER.
8135
8136Example Code and Data Size: These are the sizes for the OS-independent
8137acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8138debug version of the code includes the debug output trace mechanism and
8139has a
8140much larger code and data size.
8141
8142  Previous Release:
8143    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
8144    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
8145  Current Release:
8146    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8147    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
8148
81492) iASL Compiler/Disassembler and Tools:
8150
8151iASL: Added compiler support for the _WDG and_WED Microsoft predefined
8152methods. These objects are defined by "Windows Instrumentation", and are
8153not
8154part of the ACPI spec. ACPICA BZ 860.
8155
8156AcpiExec: added option to disable the memory tracking mechanism. The -dt
8157option will disable the tracking mechanism, which improves performance
8158considerably.
8159
8160AcpiExec: Restructured the command line options into -d (disable) and -e
8161(enable) options.
8162
8163----------------------------------------
816428 April 2010. Summary of changes for version 20100428:
8165
81661) ACPI CA Core Subsystem:
8167
8168Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
8169including FADT-based and GPE Block Devices, execute any _PRW methods in
8170the
8171new table, and process any _Lxx/_Exx GPE methods in the new table. Any
8172runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
8173immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
8174Devices. Provides compatibility with other ACPI implementations. Two new
8175files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
8176Moore.
8177
8178Fixed a regression introduced in version 20100331 within the table
8179manager
8180where initial table loading could fail. This was introduced in the fix
8181for
8182AcpiReallocateRootTable. Also, renamed some of fields in the table
8183manager
8184data structures to clarify their meaning and use.
8185
8186Fixed a possible allocation overrun during internal object copy in
8187AcpiUtCopySimpleObject. The original code did not correctly handle the
8188case
8189where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
8190847.
8191
8192Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
8193possible access beyond end-of-allocation. Also, now fully validate
8194descriptor
8195(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
8196
8197Example Code and Data Size: These are the sizes for the OS-independent
8198acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8199debug version of the code includes the debug output trace mechanism and
8200has a
8201much larger code and data size.
8202
8203  Previous Release:
8204    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
8205    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
8206  Current Release:
8207    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
8208    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
8209
82102) iASL Compiler/Disassembler and Tools:
8211
8212iASL: Implemented Min/Max/Len/Gran validation for address resource
8213descriptors. This change implements validation for the address fields
8214that
8215are common to all address-type resource descriptors. These checks are
8216implemented: Checks for valid Min/Max, length within the Min/Max window,
8217valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
8218per
8219table 6-40 in the ACPI 4.0a specification. Also split the large
8220aslrestype1.c
8221and aslrestype2.c files into five new files. ACPICA BZ 840.
8222
8223iASL: Added support for the _Wxx predefined names. This support was
8224missing
8225and these names were not recognized by the compiler as valid predefined
8226names. ACPICA BZ 851.
8227
8228iASL: Added an error for all predefined names that are defined to return
8229no
8230value and thus must be implemented as Control Methods. These include all
8231of
8232the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
8233names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
8234
8235iASL: Implemented the -ts option to emit hex AML data in ASL format, as
8236an
8237ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
8238be
8239dynamically loaded via the Load() operator. Also cleaned up output for
8240the
8241-
8242ta and -tc options. ACPICA BZ 853.
8243
8244Tests: Added a new file with examples of extended iASL error checking.
8245Demonstrates the advanced error checking ability of the iASL compiler.
8246Available at tests/misc/badcode.asl.
8247
8248----------------------------------------
824931 March 2010. Summary of changes for version 20100331:
8250
82511) ACPI CA Core Subsystem:
8252
8253Completed a major update for the GPE support in order to improve support
8254for
8255shared GPEs and to simplify both host OS and ACPICA code. Added a
8256reference
8257count mechanism to support shared GPEs that require multiple device
8258drivers.
8259Several external interfaces have changed. One external interface has been
8260removed. One new external interface was added. Most of the GPE external
8261interfaces now use the GPE spinlock instead of the events mutex (and the
8262Flags parameter for many GPE interfaces has been removed.) See the
8263updated
8264ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
8265Rafael
8266Wysocki. ACPICA BZ 831.
8267
8268Changed:
8269    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
8270Removed:
8271    AcpiSetGpeType
8272New:
8273    AcpiSetGpe
8274
8275Implemented write support for DataTable operation regions. These regions
8276are
8277defined via the DataTableRegion() operator. Previously, only read support
8278was
8279implemented. The ACPI specification allows DataTableRegions to be
8280read/write,
8281however.
8282
8283Implemented a new subsystem option to force a copy of the DSDT to local
8284memory. Optionally copy the entire DSDT to local memory (instead of
8285simply
8286mapping it.) There are some (albeit very rare) BIOSs that corrupt or
8287replace
8288the original DSDT, creating the need for this option. Default is FALSE,
8289do
8290not copy the DSDT.
8291
8292Implemented detection of a corrupted or replaced DSDT. This change adds
8293support to detect a DSDT that has been corrupted and/or replaced from
8294outside
8295the OS (by firmware). This is typically catastrophic for the system, but
8296has
8297been seen on some machines. Once this problem has been detected, the DSDT
8298copy option can be enabled via system configuration. Lin Ming, Bob Moore.
8299
8300Fixed two problems with AcpiReallocateRootTable during the root table
8301copy.
8302When copying the root table to the new allocation, the length used was
8303incorrect. The new size was used instead of the current table size,
8304meaning
8305too much data was copied. Also, the count of available slots for ACPI
8306tables
8307was not set correctly. Alexey Starikovskiy, Bob Moore.
8308
8309Example Code and Data Size: These are the sizes for the OS-independent
8310acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8311debug version of the code includes the debug output trace mechanism and
8312has a
8313much larger code and data size.
8314
8315  Previous Release:
8316    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
8317    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
8318  Current Release:
8319    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
8320    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
8321
83222) iASL Compiler/Disassembler and Tools:
8323
8324iASL: Implement limited typechecking for values returned from predefined
8325control methods. The type of any returned static (unnamed) object is now
8326validated. For example, Return(1). ACPICA BZ 786.
8327
8328iASL: Fixed a predefined name object verification regression. Fixes a
8329problem
8330introduced in version 20100304. An error is incorrectly generated if a
8331predefined name is declared as a static named object with a value defined
8332using the keywords "Zero", "One", or "Ones". Lin Ming.
8333
8334iASL: Added Windows 7 support for the -g option (get local ACPI tables)
8335by
8336reducing the requested registry access rights. ACPICA BZ 842.
8337
8338Disassembler: fixed a possible fault when generating External()
8339statements.
8340Introduced in commit ae7d6fd: Properly handle externals with parent-
8341prefix
8342(carat). Fixes a string length allocation calculation. Lin Ming.
8343
8344----------------------------------------
834504 March 2010. Summary of changes for version 20100304:
8346
83471) ACPI CA Core Subsystem:
8348
8349Fixed a possible problem with the AML Mutex handling function
8350AcpiExReleaseMutex where the function could fault under the very rare
8351condition when the interpreter has blocked, the interpreter lock is
8352released,
8353the interpreter is then reentered via the same thread, and attempts to
8354acquire an AML mutex that was previously acquired. FreeBSD report 140979.
8355Lin
8356Ming.
8357
8358Implemented additional configuration support for the AML "Debug Object".
8359Output from the debug object can now be enabled via a global variable,
8360AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
8361debugging.
8362This debug output is now available in the release version of ACPICA
8363instead
8364of just the debug version. Also, the entire debug output module can now
8365be
8366configured out of the ACPICA build if desired. One new file added,
8367executer/exdebug.c. Lin Ming, Bob Moore.
8368
8369Added header support for the ACPI MCHI table (Management Controller Host
8370Interface Table). This table was added in ACPI 4.0, but the defining
8371document
8372has only recently become available.
8373
8374Standardized output of integer values for ACPICA warnings/errors. Always
8375use
83760x prefix for hex output, always use %u for unsigned integer decimal
8377output.
8378Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
8379400
8380invocations.) These invocations were converted from the original
8381ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
8382
8383Example Code and Data Size: These are the sizes for the OS-independent
8384acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8385debug version of the code includes the debug output trace mechanism and
8386has a
8387much larger code and data size.
8388
8389  Previous Release:
8390    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
8391    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
8392  Current Release:
8393    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
8394    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
8395
83962) iASL Compiler/Disassembler and Tools:
8397
8398iASL: Implemented typechecking support for static (non-control method)
8399predefined named objects that are declared with the Name() operator. For
8400example, the type of this object is now validated to be of type Integer:
8401Name(_BBN, 1). This change migrates the compiler to using the core
8402predefined
8403name table instead of maintaining a local version. Added a new file,
8404aslpredef.c. ACPICA BZ 832.
8405
8406Disassembler: Added support for the ACPI 4.0 MCHI table.
8407
8408----------------------------------------
840921 January 2010. Summary of changes for version 20100121:
8410
84111) ACPI CA Core Subsystem:
8412
8413Added the 2010 copyright to all module headers and signons. This affects
8414virtually every file in the ACPICA core subsystem, the iASL compiler, the
8415tools/utilities, and the test suites.
8416
8417Implemented a change to the AcpiGetDevices interface to eliminate
8418unnecessary
8419invocations of the _STA method. In the case where a specific _HID is
8420requested, do not run _STA until a _HID match is found. This eliminates
8421potentially dozens of _STA calls during a search for a particular
8422device/HID,
8423which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
8424
8425Implemented an additional repair for predefined method return values.
8426Attempt
8427to repair unexpected NULL elements within returned Package objects.
8428Create
8429an
8430Integer of value zero, a NULL String, or a zero-length Buffer as
8431appropriate.
8432ACPICA BZ 818. Lin Ming, Bob Moore.
8433
8434Removed the obsolete ACPI_INTEGER data type. This type was introduced as
8435the
8436code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
8437(with
843864-bit AML integers). It is now obsolete and this change removes it from
8439the
8440ACPICA code base, replaced by UINT64. The original typedef has been
8441retained
8442for now for compatibility with existing device driver code. ACPICA BZ
8443824.
8444
8445Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
8446in
8447the parse tree object.
8448
8449Added additional warning options for the gcc-4 generation. Updated the
8450source
8451accordingly. This includes some code restructuring to eliminate
8452unreachable
8453code, elimination of some gotos, elimination of unused return values,
8454some
8455additional casting, and removal of redundant declarations.
8456
8457Example Code and Data Size: These are the sizes for the OS-independent
8458acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8459debug version of the code includes the debug output trace mechanism and
8460has a
8461much larger code and data size.
8462
8463  Previous Release:
8464    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
8465    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
8466  Current Release:
8467    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
8468    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
8469
84702) iASL Compiler/Disassembler and Tools:
8471
8472No functional changes for this release.
8473
8474----------------------------------------
847514 December 2009. Summary of changes for version 20091214:
8476
84771) ACPI CA Core Subsystem:
8478
8479Enhanced automatic data type conversions for predefined name repairs.
8480This
8481change expands the automatic repairs/conversions for predefined name
8482return
8483values to make Integers, Strings, and Buffers fully interchangeable.
8484Also,
8485a
8486Buffer can be converted to a Package of Integers if necessary. The
8487nsrepair.c
8488module was completely restructured. Lin Ming, Bob Moore.
8489
8490Implemented automatic removal of null package elements during predefined
8491name
8492repairs. This change will automatically remove embedded and trailing NULL
8493package elements from returned package objects that are defined to
8494contain
8495a
8496variable number of sub-packages. The driver is then presented with a
8497package
8498with no null elements to deal with. ACPICA BZ 819.
8499
8500Implemented a repair for the predefined _FDE and _GTM names. The expected
8501return value for both names is a Buffer of 5 DWORDs. This repair fixes
8502two
8503possible problems (both seen in the field), where a package of integers
8504is
8505returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
8506Kim.
8507
8508Implemented additional module-level code support. This change will
8509properly
8510execute module-level code that is not at the root of the namespace (under
8511a
8512Device object, etc.). Now executes the code within the current scope
8513instead
8514of the root. ACPICA BZ 762. Lin Ming.
8515
8516Fixed possible mutex acquisition errors when running _REG methods. Fixes
8517a
8518problem where mutex errors can occur when running a _REG method that is
8519in
8520the same scope as a method-defined operation region or an operation
8521region
8522under a module-level IF block. This type of code is rare, so the problem
8523has
8524not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
8525
8526Fixed a possible memory leak during module-level code execution. An
8527object
8528could be leaked for each block of executed module-level code if the
8529interpreter slack mode is enabled This change deletes any implicitly
8530returned
8531object from the module-level code block. Lin Ming.
8532
8533Removed messages for successful predefined repair(s). The repair
8534mechanism
8535was considered too wordy. Now, messages are only unconditionally emitted
8536if
8537the return object cannot be repaired. Existing messages for successful
8538repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
8539827.
8540
8541Example Code and Data Size: These are the sizes for the OS-independent
8542acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8543debug version of the code includes the debug output trace mechanism and
8544has a
8545much larger code and data size.
8546
8547  Previous Release:
8548    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
8549    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
8550  Current Release:
8551    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
8552    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
8553
85542) iASL Compiler/Disassembler and Tools:
8555
8556iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
8557files
8558were no longer automatically removed at the termination of the compile.
8559
8560acpiexec: Implemented the -f option to specify default region fill value.
8561This option specifies the value used to initialize buffers that simulate
8562operation regions. Default value is zero. Useful for debugging problems
8563that
8564depend on a specific initial value for a region or field.
8565
8566----------------------------------------
856712 November 2009. Summary of changes for version 20091112:
8568
85691) ACPI CA Core Subsystem:
8570
8571Implemented a post-order callback to AcpiWalkNamespace. The existing
8572interface only has a pre-order callback. This change adds an additional
8573parameter for a post-order callback which will be more useful for bus
8574scans.
8575ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
8576
8577Modified the behavior of the operation region memory mapping cache for
8578SystemMemory. Ensure that the memory mappings created for operation
8579regions
8580do not cross 4K page boundaries. Crossing a page boundary while mapping
8581regions can cause kernel warnings on some hosts if the pages have
8582different
8583attributes. Such regions are probably BIOS bugs, and this is the
8584workaround.
8585Linux BZ 14445. Lin Ming.
8586
8587Implemented an automatic repair for predefined methods that must return
8588sorted lists. This change will repair (by sorting) packages returned by
8589_ALR,
8590_PSS, and _TSS. Drivers can now assume that the packages are correctly
8591sorted
8592and do not contain NULL package elements. Adds one new file,
8593namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
8594
8595Fixed a possible fault during predefined name validation if a return
8596Package
8597object contains NULL elements. Also adds a warning if a NULL element is
8598followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
8599may
8600include repair or removal of all such NULL elements where possible.
8601
8602Implemented additional module-level executable AML code support. This
8603change
8604will execute module-level code that is not at the root of the namespace
8605(under a Device object, etc.) at table load time. Module-level executable
8606AML
8607code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
8608
8609Implemented a new internal function to create Integer objects. This
8610function
8611simplifies miscellaneous object creation code. ACPICA BZ 823.
8612
8613Reduced the severity of predefined repair messages, Warning to Info.
8614Since
8615the object was successfully repaired, a warning is too severe. Reduced to
8616an
8617info message for now. These messages may eventually be changed to debug-
8618only.
8619ACPICA BZ 812.
8620
8621Example Code and Data Size: These are the sizes for the OS-independent
8622acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8623debug version of the code includes the debug output trace mechanism and
8624has a
8625much larger code and data size.
8626
8627  Previous Release:
8628    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
8629    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
8630  Current Release:
8631    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
8632    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
8633
86342) iASL Compiler/Disassembler and Tools:
8635
8636iASL: Implemented Switch() with While(1) so that Break works correctly.
8637This
8638change correctly implements the Switch operator with a surrounding
8639While(1)
8640so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
8641
8642iASL: Added a message if a package initializer list is shorter than
8643package
8644length. Adds a new remark for a Package() declaration if an initializer
8645list
8646exists, but is shorter than the declared length of the package. Although
8647technically legal, this is probably a coding error and it is seen in the
8648field. ACPICA BZ 815. Lin Ming, Bob Moore.
8649
8650iASL: Fixed a problem where the compiler could fault after the maximum
8651number
8652of errors was reached (200).
8653
8654acpixtract: Fixed a possible warning for pointer cast if the compiler
8655warning
8656level set very high.
8657
8658----------------------------------------
865913 October 2009. Summary of changes for version 20091013:
8660
86611) ACPI CA Core Subsystem:
8662
8663Fixed a problem where an Operation Region _REG method could be executed
8664more
8665than once. If a custom address space handler is installed by the host
8666before
8667the "initialize operation regions" phase of the ACPICA initialization,
8668any
8669_REG methods for that address space could be executed twice. This change
8670fixes the problem. ACPICA BZ 427. Lin Ming.
8671
8672Fixed a possible memory leak for the Scope() ASL operator. When the exact
8673invocation of "Scope(\)" is executed (change scope to root), one internal
8674operand object was leaked. Lin Ming.
8675
8676Implemented a run-time repair for the _MAT predefined method. If the _MAT
8677return value is defined as a Field object in the AML, and the field
8678size is less than or equal to the default width of an integer (32 or
867964),_MAT
8680can incorrectly return an Integer instead of a Buffer. ACPICA now
8681automatically repairs this problem. ACPICA BZ 810.
8682
8683Implemented a run-time repair for the _BIF and _BIX predefined methods.
8684The
8685"OEM Information" field is often incorrectly returned as an Integer with
8686value zero if the field is not supported by the platform. This is due to
8687an
8688ambiguity in the ACPI specification. The field should always be a string.
8689ACPICA now automatically repairs this problem by returning a NULL string
8690within the returned Package. ACPICA BZ 807.
8691
8692Example Code and Data Size: These are the sizes for the OS-independent
8693acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8694debug version of the code includes the debug output trace mechanism and
8695has a
8696much larger code and data size.
8697
8698  Previous Release:
8699    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
8700    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
8701  Current Release:
8702    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
8703    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
8704
87052) iASL Compiler/Disassembler and Tools:
8706
8707Disassembler: Fixed a problem where references to external symbols that
8708contained one or more parent-prefixes (carats) were not handled
8709correctly,
8710possibly causing a fault. ACPICA BZ 806. Lin Ming.
8711
8712Disassembler: Restructured the code so that all functions that handle
8713external symbols are in a single module. One new file is added,
8714common/dmextern.c.
8715
8716AML Debugger: Added a max count argument for the Batch command (which
8717executes multiple predefined methods within the namespace.)
8718
8719iASL: Updated the compiler documentation (User Reference.) Available at
8720http://www.acpica.org/documentation/. ACPICA BZ 750.
8721
8722AcpiXtract: Updated for Lint and other formatting changes. Close all open
8723files.
8724
8725----------------------------------------
872603 September 2009. Summary of changes for version 20090903:
8727
87281) ACPI CA Core Subsystem:
8729
8730For Windows Vista compatibility, added the automatic execution of an _INI
8731method located at the namespace root (\_INI). This method is executed at
8732table load time. This support is in addition to the automatic execution
8733of
8734\_SB._INI. Lin Ming.
8735
8736Fixed a possible memory leak in the interpreter for AML package objects
8737if
8738the package initializer list is longer than the defined size of the
8739package.
8740This apparently can only happen if the BIOS changes the package size on
8741the
8742fly (seen in a _PSS object), as ASL compilers do not allow this. The
8743interpreter will truncate the package to the defined size (and issue an
8744error
8745message), but previously could leave the extra objects undeleted if they
8746were
8747pre-created during the argument processing (such is the case if the
8748package
8749consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
8750
8751Fixed a problem seen when a Buffer or String is stored to itself via ASL.
8752This has been reported in the field. Previously, ACPICA would zero out
8753the
8754buffer/string. Now, the operation is treated as a noop. Provides Windows
8755compatibility. ACPICA BZ 803. Lin Ming.
8756
8757Removed an extraneous error message for ASL constructs of the form
8758Store(LocalX,LocalX) when LocalX is uninitialized. These curious
8759statements
8760are seen in many BIOSs and are once again treated as NOOPs and no error
8761is
8762emitted when they are encountered. ACPICA BZ 785.
8763
8764Fixed an extraneous warning message if a _DSM reserved method returns a
8765Package object. _DSM can return any type of object, so validation on the
8766return type cannot be performed. ACPICA BZ 802.
8767
8768Example Code and Data Size: These are the sizes for the OS-independent
8769acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8770debug version of the code includes the debug output trace mechanism and
8771has a
8772much larger code and data size.
8773
8774  Previous Release:
8775    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
8776    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
8777  Current Release:
8778    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
8779    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
8780
87812) iASL Compiler/Disassembler and Tools:
8782
8783iASL: Fixed a problem with the use of the Alias operator and Resource
8784Templates. The correct alias is now constructed and no error is emitted.
8785ACPICA BZ 738.
8786
8787iASL: Implemented the -I option to specify additional search directories
8788for
8789include files. Allows multiple additional search paths for include files.
8790Directories are searched in the order specified on the command line
8791(after
8792the local directory is searched.) ACPICA BZ 800.
8793
8794iASL: Fixed a problem where the full pathname for include files was not
8795emitted for warnings/errors. This caused the IDE support to not work
8796properly. ACPICA BZ 765.
8797
8798iASL: Implemented the -@ option to specify a Windows-style response file
8799containing additional command line options. ACPICA BZ 801.
8800
8801AcpiExec: Added support to load multiple AML files simultaneously (such
8802as
8803a
8804DSDT and multiple SSDTs). Also added support for wildcards within the AML
8805pathname. These features allow all machine tables to be easily loaded and
8806debugged together. ACPICA BZ 804.
8807
8808Disassembler: Added missing support for disassembly of HEST table Error
8809Bank
8810subtables.
8811
8812----------------------------------------
881330 July 2009. Summary of changes for version 20090730:
8814
8815The ACPI 4.0 implementation for ACPICA is complete with this release.
8816
88171) ACPI CA Core Subsystem:
8818
8819ACPI 4.0: Added header file support for all new and changed ACPI tables.
8820Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
8821new
8822for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
8823BERT,
8824EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
8825There
8826have been some ACPI 4.0 changes to other existing tables. Split the large
8827actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
8828
8829ACPI 4.0: Implemented predefined name validation for all new names. There
8830are
883131 new names in ACPI 4.0. The predefined validation module was split into
8832two
8833files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
8834
8835Implemented support for so-called "module-level executable code". This is
8836executable AML code that exists outside of any control method and is
8837intended
8838to be executed at table load time. Although illegal since ACPI 2.0, this
8839type
8840of code still exists and is apparently still being created. Blocks of
8841this
8842code are now detected and executed as intended. Currently, the code
8843blocks
8844must exist under either an If, Else, or While construct; these are the
8845typical cases seen in the field. ACPICA BZ 762. Lin Ming.
8846
8847Implemented an automatic dynamic repair for predefined names that return
8848nested Package objects. This applies to predefined names that are defined
8849to
8850return a variable-length Package of sub-packages. If the number of sub-
8851packages is one, BIOS code is occasionally seen that creates a simple
8852single
8853package with no sub-packages. This code attempts to fix the problem by
8854wrapping a new package object around the existing package. These methods
8855can
8856be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
8857BZ
8858790.
8859
8860Fixed a regression introduced in 20090625 for the AcpiGetDevices
8861interface.
8862The _HID/_CID matching was broken and no longer matched IDs correctly.
8863ACPICA
8864BZ 793.
8865
8866Fixed a problem with AcpiReset where the reset would silently fail if the
8867register was one of the protected I/O ports. AcpiReset now bypasses the
8868port
8869validation mechanism. This may eventually be driven into the
8870AcpiRead/Write
8871interfaces.
8872
8873Fixed a regression related to the recent update of the AcpiRead/Write
8874interfaces. A sleep/suspend could fail if the optional PM2 Control
8875register
8876does not exist during an attempt to write the Bus Master Arbitration bit.
8877(However, some hosts already delete the code that writes this bit, and
8878the
8879code may in fact be obsolete at this date.) ACPICA BZ 799.
8880
8881Fixed a problem where AcpiTerminate could fault if inadvertently called
8882twice
8883in succession. ACPICA BZ 795.
8884
8885Example Code and Data Size: These are the sizes for the OS-independent
8886acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8887debug version of the code includes the debug output trace mechanism and
8888has a
8889much larger code and data size.
8890
8891  Previous Release:
8892    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
8893    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
8894  Current Release:
8895    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
8896    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
8897
88982) iASL Compiler/Disassembler and Tools:
8899
8900ACPI 4.0: Implemented disassembler support for all new ACPI tables and
8901changes to existing tables. ACPICA BZ 775.
8902
8903----------------------------------------
890425 June 2009. Summary of changes for version 20090625:
8905
8906The ACPI 4.0 Specification was released on June 16 and is available at
8907www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
8908continue for the next few releases.
8909
89101) ACPI CA Core Subsystem:
8911
8912ACPI 4.0: Implemented interpreter support for the IPMI operation region
8913address space. Includes support for bi-directional data buffers and an
8914IPMI
8915address space handler (to be installed by an IPMI device driver.) ACPICA
8916BZ
8917773. Lin Ming.
8918
8919ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
8920Includes
8921support in both the header files and the disassembler.
8922
8923Completed a major update for the AcpiGetObjectInfo external interface.
8924Changes include:
8925 - Support for variable, unlimited length HID, UID, and CID strings.
8926 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
8927etc.)
8928 - Call the _SxW power methods on behalf of a device object.
8929 - Determine if a device is a PCI root bridge.
8930 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
8931These changes will require an update to all callers of this interface.
8932See
8933the updated ACPICA Programmer Reference for details. One new source file
8934has
8935been added - utilities/utids.c. ACPICA BZ 368, 780.
8936
8937Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
8938transfers. The Value parameter has been extended from 32 bits to 64 bits
8939in
8940order to support new ACPI 4.0 tables. These changes will require an
8941update
8942to
8943all callers of these interfaces. See the ACPICA Programmer Reference for
8944details. ACPICA BZ 768.
8945
8946Fixed several problems with AcpiAttachData. The handler was not invoked
8947when
8948the host node was deleted. The data sub-object was not automatically
8949deleted
8950when the host node was deleted. The interface to the handler had an
8951unused
8952parameter, this was removed. ACPICA BZ 778.
8953
8954Enhanced the function that dumps ACPI table headers. All non-printable
8955characters in the string fields are now replaced with '?' (Signature,
8956OemId,
8957OemTableId, and CompilerId.) ACPI tables with non-printable characters in
8958these fields are occasionally seen in the field. ACPICA BZ 788.
8959
8960Fixed a problem with predefined method repair code where the code that
8961attempts to repair/convert an object of incorrect type is only executed
8962on
8963the first time the predefined method is called. The mechanism that
8964disables
8965warnings on subsequent calls was interfering with the repair mechanism.
8966ACPICA BZ 781.
8967
8968Fixed a possible memory leak in the predefined validation/repair code
8969when
8970a
8971buffer is automatically converted to an expected string object.
8972
8973Removed obsolete 16-bit files from the distribution and from the current
8974git
8975tree head. ACPICA BZ 776.
8976
8977Example Code and Data Size: These are the sizes for the OS-independent
8978acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8979debug version of the code includes the debug output trace mechanism and
8980has a
8981much larger code and data size.
8982
8983  Previous Release:
8984    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
8985    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
8986  Current Release:
8987    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
8988    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
8989
89902) iASL Compiler/Disassembler and Tools:
8991
8992ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
8993operation region keyword. ACPICA BZ 771, 772. Lin Ming.
8994
8995ACPI 4.0: iASL - implemented compile-time validation support for all new
8996predefined names and control methods (31 total). ACPICA BZ 769.
8997
8998----------------------------------------
899921 May 2009. Summary of changes for version 20090521:
9000
90011) ACPI CA Core Subsystem:
9002
9003Disabled the preservation of the SCI enable bit in the PM1 control
9004register.
9005The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
9006to
9007be
9008a "preserved" bit - "OSPM always preserves this bit position", section
90094.7.3.2.1. However, some machines fail if this bit is in fact preserved
9010because the bit needs to be explicitly set by the OS as a workaround. No
9011machines fail if the bit is not preserved. Therefore, ACPICA no longer
9012attempts to preserve this bit.
9013
9014Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
9015incorrectly formed _PRT package could cause a fault. Added validation to
9016ensure that each package element is actually a sub-package.
9017
9018Implemented a new interface to install or override a single control
9019method,
9020AcpiInstallMethod. This interface is useful when debugging in order to
9021repair
9022an existing method or to install a missing method without having to
9023override
9024the entire ACPI table. See the ACPICA Programmer Reference for use and
9025examples. Lin Ming, Bob Moore.
9026
9027Fixed several reference count issues with the DdbHandle object that is
9028created from a Load or LoadTable operator. Prevent premature deletion of
9029the
9030object. Also, mark the object as invalid once the table has been
9031unloaded.
9032This is needed because the handle itself may not be deleted after the
9033table
9034unload, depending on whether it has been stored in a named object by the
9035caller. Lin Ming.
9036
9037Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
9038mutexes of the same sync level are acquired but then not released in
9039strict
9040opposite order, the internally maintained Current Sync Level becomes
9041confused
9042and can cause subsequent execution errors. ACPICA BZ 471.
9043
9044Changed the allowable release order for ASL mutex objects. The ACPI 4.0
9045specification has been changed to make the SyncLevel for mutex objects
9046more
9047useful. When releasing a mutex, the SyncLevel of the mutex must now be
9048the
9049same as the current sync level. This makes more sense than the previous
9050rule
9051(SyncLevel less than or equal). This change updates the code to match the
9052specification.
9053
9054Fixed a problem with the local version of the AcpiOsPurgeCache function.
9055The
9056(local) cache must be locked during all cache object deletions. Andrew
9057Baumann.
9058
9059Updated the Load operator to use operation region interfaces. This
9060replaces
9061direct memory mapping with region access calls. Now, all region accesses
9062go
9063through the installed region handler as they should.
9064
9065Simplified and optimized the NsGetNextNode function. Reduced parameter
9066count
9067and reduced code for this frequently used function.
9068
9069Example Code and Data Size: These are the sizes for the OS-independent
9070acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9071debug version of the code includes the debug output trace mechanism and
9072has a
9073much larger code and data size.
9074
9075  Previous Release:
9076    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
9077    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
9078  Current Release:
9079    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
9080    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
9081
90822) iASL Compiler/Disassembler and Tools:
9083
9084Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
9085problems
9086with sub-table disassembly and handling invalid sub-tables. Attempt
9087recovery
9088after an invalid sub-table ID.
9089
9090----------------------------------------
909122 April 2009. Summary of changes for version 20090422:
9092
90931) ACPI CA Core Subsystem:
9094
9095Fixed a compatibility issue with the recently released I/O port
9096protection
9097mechanism. For windows compatibility, 1) On a port protection violation,
9098simply ignore the request and do not return an exception (allow the
9099control
9100method to continue execution.) 2) If only part of the request overlaps a
9101protected port, read/write the individual ports that are not protected.
9102Linux
9103BZ 13036. Lin Ming
9104
9105Enhanced the execution of the ASL/AML BreakPoint operator so that it
9106actually
9107breaks into the AML debugger if the debugger is present. This matches the
9108ACPI-defined behavior.
9109
9110Fixed several possible warnings related to the use of the configurable
9111ACPI_THREAD_ID. This type can now be configured as either an integer or a
9112pointer with no warnings. Also fixes several warnings in printf-like
9113statements for the 64-bit build when the type is configured as a pointer.
9114ACPICA BZ 766, 767.
9115
9116Fixed a number of possible warnings when compiling with gcc 4+ (depending
9117on
9118warning options.) Examples include printf formats, aliasing, unused
9119globals,
9120missing prototypes, missing switch default statements, use of non-ANSI
9121library functions, use of non-ANSI constructs. See generate/unix/Makefile
9122for
9123a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
9124
9125Example Code and Data Size: These are the sizes for the OS-independent
9126acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9127debug version of the code includes the debug output trace mechanism and
9128has a
9129much larger code and data size.
9130
9131  Previous Release:
9132    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
9133    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
9134  Current Release:
9135    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
9136    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
9137
91382) iASL Compiler/Disassembler and Tools:
9139
9140iASL: Fixed a generation warning from Bison 2.3 and fixed several
9141warnings
9142on
9143the 64-bit build.
9144
9145iASL: Fixed a problem where the Unix/Linux versions of the compiler could
9146not
9147correctly digest Windows/DOS formatted files (with CR/LF).
9148
9149iASL: Added a new option for "quiet mode" (-va) that produces only the
9150compilation summary, not individual errors and warnings. Useful for large
9151batch compilations.
9152
9153AcpiExec: Implemented a new option (-z) to enable a forced
9154semaphore/mutex
9155timeout that can be used to detect hang conditions during execution of
9156AML
9157code (includes both internal semaphores and AML-defined mutexes and
9158events.)
9159
9160Added new makefiles for the generation of acpica in a generic unix-like
9161environment. These makefiles are intended to generate the acpica tools
9162and
9163utilities from the original acpica git source tree structure.
9164
9165Test Suites: Updated and cleaned up the documentation files. Updated the
9166copyrights to 2009, affecting all source files. Use the new version of
9167iASL
9168with quiet mode. Increased the number of available semaphores in the
9169Windows
9170OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
9171added
9172an alternate implementation of the semaphore timeout to allow aslts to
9173execute fully on Cygwin.
9174
9175----------------------------------------
917620 March 2009. Summary of changes for version 20090320:
9177
91781) ACPI CA Core Subsystem:
9179
9180Fixed a possible race condition between AcpiWalkNamespace and dynamic
9181table
9182unloads. Added a reader/writer locking mechanism to allow multiple
9183concurrent
9184namespace walks (readers), but block a dynamic table unload until it can
9185gain
9186exclusive write access to the namespace. This fixes a problem where a
9187table
9188unload could (possibly catastrophically) delete the portion of the
9189namespace
9190that is currently being examined by a walk. Adds a new file, utlock.c,
9191that
9192implements the reader/writer lock mechanism. ACPICA BZ 749.
9193
9194Fixed a regression introduced in version 20090220 where a change to the
9195FADT
9196handling could cause the ACPICA subsystem to access non-existent I/O
9197ports.
9198
9199Modified the handling of FADT register and table (FACS/DSDT) addresses.
9200The
9201FADT can contain both 32-bit and 64-bit versions of these addresses.
9202Previously, the 64-bit versions were favored, meaning that if both 32 and
920364
9204versions were valid, but not equal, the 64-bit version was used. This was
9205found to cause some machines to fail. Now, in this case, the 32-bit
9206version
9207is used instead. This now matches the Windows behavior.
9208
9209Implemented a new mechanism to protect certain I/O ports. Provides
9210Microsoft
9211compatibility and protects the standard PC I/O ports from access via AML
9212code. Adds a new file, hwvalid.c
9213
9214Fixed a possible extraneous warning message from the FADT support. The
9215message warns of a 32/64 length mismatch between the legacy and GAS
9216definitions for a register.
9217
9218Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
9219is
9220made obsolete by the port protection mechanism above. It was previously
9221used
9222to validate the entire address range of an operation region, which could
9223be
9224incorrect if the range included illegal ports, but fields within the
9225operation region did not actually access those ports. Validation is now
9226performed on a per-field basis instead of the entire region.
9227
9228Modified the handling of the PM1 Status Register ignored bit (bit 11.)
9229Ignored bits must be "preserved" according to the ACPI spec. Usually,
9230this
9231means a read/modify/write when writing to the register. However, for
9232status
9233registers, writing a one means clear the event. Writing a zero means
9234preserve
9235the event (do not clear.) This behavior is clarified in the ACPI 4.0
9236spec,
9237and the ACPICA code now simply always writes a zero to the ignored bit.
9238
9239Modified the handling of ignored bits for the PM1 A/B Control Registers.
9240As
9241per the ACPI specification, for the control registers, preserve
9242(read/modify/write) all bits that are defined as either reserved or
9243ignored.
9244
9245Updated the handling of write-only bits in the PM1 A/B Control Registers.
9246When reading the register, zero the write-only bits as per the ACPI spec.
9247ACPICA BZ 443. Lin Ming.
9248
9249Removed "Linux" from the list of supported _OSI strings. Linux no longer
9250wants to reply true to this request. The Windows strings are the only
9251paths
9252through the AML that are tested and known to work properly.
9253
9254  Previous Release:
9255    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
9256    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
9257  Current Release:
9258    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
9259    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
9260
92612) iASL Compiler/Disassembler and Tools:
9262
9263Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
9264and
9265aetables.c
9266
9267----------------------------------------
926820 February 2009. Summary of changes for version 20090220:
9269
92701) ACPI CA Core Subsystem:
9271
9272Optimized the ACPI register locking. Removed locking for reads from the
9273ACPI
9274bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
9275is
9276not required when reading the single-bit registers. The
9277AcpiGetRegisterUnlocked function is no longer needed and has been
9278removed.
9279This will improve performance for reads on these registers. ACPICA BZ
9280760.
9281
9282Fixed the parameter validation for AcpiRead/Write. Now return
9283AE_BAD_PARAMETER if the input register pointer is null, and
9284AE_BAD_ADDRESS
9285if
9286the register has an address of zero. Previously, these cases simply
9287returned
9288AE_OK. For optional registers such as PM1B status/enable/control, the
9289caller
9290should check for a valid register address before calling. ACPICA BZ 748.
9291
9292Renamed the external ACPI bit register access functions. Renamed
9293AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
9294functions. The new names are AcpiReadBitRegister and
9295AcpiWriteBitRegister.
9296Also, restructured the code for these functions by simplifying the code
9297path
9298and condensing duplicate code to reduce code size.
9299
9300Added new functions to transparently handle the possibly split PM1 A/B
9301registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
9302functions
9303now handle the split registers for PM1 Status, Enable, and Control.
9304ACPICA
9305BZ
9306746.
9307
9308Added a function to handle the PM1 control registers,
9309AcpiHwWritePm1Control.
9310This function writes both of the PM1 control registers (A/B). These
9311registers
9312are different than the PM1 A/B status and enable registers in that
9313different
9314values can be written to the A/B registers. Most notably, the SLP_TYP
9315bits
9316can be different, as per the values returned from the _Sx predefined
9317methods.
9318
9319Removed an extra register write within AcpiHwClearAcpiStatus. This
9320function
9321was writing an optional PM1B status register twice. The existing call to
9322the
9323low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
9324A/B
9325register. ACPICA BZ 751.
9326
9327Split out the PM1 Status registers from the FADT. Added new globals for
9328these
9329registers (A/B), similar to the way the PM1 Enable registers are handled.
9330Instead of overloading the FADT Event Register blocks. This makes the
9331code
9332clearer and less prone to error.
9333
9334Fixed the warning message for when the platform contains too many ACPI
9335tables
9336for the default size of the global root table data structure. The
9337calculation
9338for the truncation value was incorrect.
9339
9340Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
9341obsolete macro, since it is now a simple reference to ->common.type.
9342There
9343were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
9344
9345Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
9346TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
9347simply SLEEP_TYPE. ACPICA BZ 754.
9348
9349Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
9350function is only needed on 64-bit host operating systems and is thus not
9351included for 32-bit hosts.
9352
9353Debug output: print the input and result for invocations of the _OSI
9354reserved
9355control method via the ACPI_LV_INFO debug level. Also, reduced some of
9356the
9357verbosity of this debug level. Len Brown.
9358
9359Example Code and Data Size: These are the sizes for the OS-independent
9360acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9361debug version of the code includes the debug output trace mechanism and
9362has a
9363much larger code and data size.
9364
9365  Previous Release:
9366    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
9367    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
9368  Current Release:
9369    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
9370    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
9371
93722) iASL Compiler/Disassembler and Tools:
9373
9374Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
9375various legal performance profiles.
9376
9377----------------------------------------
937823 January 2009. Summary of changes for version 20090123:
9379
93801) ACPI CA Core Subsystem:
9381
9382Added the 2009 copyright to all module headers and signons. This affects
9383virtually every file in the ACPICA core subsystem, the iASL compiler, and
9384the tools/utilities.
9385
9386Implemented a change to allow the host to override any ACPI table,
9387including
9388dynamically loaded tables. Previously, only the DSDT could be replaced by
9389the
9390host. With this change, the AcpiOsTableOverride interface is called for
9391each
9392table found in the RSDT/XSDT during ACPICA initialization, and also
9393whenever
9394a table is dynamically loaded via the AML Load operator.
9395
9396Updated FADT flag definitions, especially the Boot Architecture flags.
9397
9398Debugger: For the Find command, automatically pad the input ACPI name
9399with
9400underscores if the name is shorter than 4 characters. This enables a
9401match
9402with the actual namespace entry which is itself padded with underscores.
9403
9404Example Code and Data Size: These are the sizes for the OS-independent
9405acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9406debug version of the code includes the debug output trace mechanism and
9407has a
9408much larger code and data size.
9409
9410  Previous Release:
9411    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
9412    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
9413  Current Release:
9414    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
9415    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
9416
94172) iASL Compiler/Disassembler and Tools:
9418
9419Fix build error under Bison-2.4.
9420
9421Disassembler: Enhanced FADT support. Added decoding of the Boot
9422Architecture
9423flags. Now decode all flags, regardless of the FADT version. Flag output
9424includes the FADT version which first defined each flag.
9425
9426The iASL -g option now dumps the RSDT to a file (in addition to the FADT
9427and
9428DSDT). Windows only.
9429
9430----------------------------------------
943104 December 2008. Summary of changes for version 20081204:
9432
94331) ACPI CA Core Subsystem:
9434
9435The ACPICA Programmer Reference has been completely updated and revamped
9436for
9437this release. This includes updates to the external interfaces, OSL
9438interfaces, the overview sections, and the debugger reference.
9439
9440Several new ACPICA interfaces have been implemented and documented in the
9441programmer reference:
9442AcpiReset - Writes the reset value to the FADT-defined reset register.
9443AcpiDisableAllGpes - Disable all available GPEs.
9444AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
9445AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
9446AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
9447AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
9448AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
9449
9450Most of the public ACPI hardware-related interfaces have been moved to a
9451new
9452file, components/hardware/hwxface.c
9453
9454Enhanced the FADT parsing and low-level ACPI register access: The ACPI
9455register lengths within the FADT are now used, and the low level ACPI
9456register access no longer hardcodes the ACPI register lengths. Given that
9457there may be some risk in actually trusting the FADT register lengths, a
9458run-
9459time option was added to fall back to the default hardcoded lengths if
9460the
9461FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
9462option is set to true for now, and a warning is issued if a suspicious
9463FADT
9464register length is overridden with the default value.
9465
9466Fixed a reference count issue in NsRepairObject. This problem was
9467introduced
9468in version 20081031 as part of a fix to repair Buffer objects within
9469Packages. Lin Ming.
9470
9471Added semaphore support to the Linux/Unix application OS-services layer
9472(OSL). ACPICA BZ 448. Lin Ming.
9473
9474Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
9475will
9476be implemented in the OSL, or will binary semaphores be used instead.
9477
9478Example Code and Data Size: These are the sizes for the OS-independent
9479acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9480debug version of the code includes the debug output trace mechanism and
9481has a
9482much larger code and data size.
9483
9484  Previous Release:
9485    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
9486    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
9487  Current Release:
9488    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
9489    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
9490
94912) iASL Compiler/Disassembler and Tools:
9492
9493iASL: Completed the '-e' option to include additional ACPI tables in
9494order
9495to
9496aid with disassembly and External statement generation. ACPICA BZ 742.
9497Lin
9498Ming.
9499
9500iASL: Removed the "named object in while loop" error. The compiler cannot
9501determine how many times a loop will execute. ACPICA BZ 730.
9502
9503Disassembler: Implemented support for FADT revision 2 (MS extension).
9504ACPICA
9505BZ 743.
9506
9507Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
9508MCFG).
9509
9510----------------------------------------
951131 October 2008. Summary of changes for version 20081031:
9512
95131) ACPI CA Core Subsystem:
9514
9515Restructured the ACPICA header files into public/private. acpi.h now
9516includes
9517only the "public" acpica headers. All other acpica headers are "private"
9518and
9519should not be included by acpica users. One new file, accommon.h is used
9520to
9521include the commonly used private headers for acpica code generation.
9522Future
9523plans include moving all private headers to a new subdirectory.
9524
9525Implemented an automatic Buffer->String return value conversion for
9526predefined ACPI methods. For these methods (such as _BIF), added
9527automatic
9528conversion for return objects that are required to be a String, but a
9529Buffer
9530was found instead. This can happen when reading string battery data from
9531an
9532operation region, because it used to be difficult to convert the data
9533from
9534buffer to string from within the ASL. Ensures that the host OS is
9535provided
9536with a valid null-terminated string. Linux BZ 11822.
9537
9538Updated the FACS waking vector interfaces. Split
9539AcpiSetFirmwareWakingVector
9540into two: one for the 32-bit vector, another for the 64-bit vector. This
9541is
9542required because the host OS must setup the wake much differently for
9543each
9544vector (real vs. protected mode, etc.) and the interface itself should
9545not
9546be
9547deciding which vector to use. Also, eliminated the
9548GetFirmwareWakingVector
9549interface, as it served no purpose (only the firmware reads the vector,
9550OS
9551only writes the vector.) ACPICA BZ 731.
9552
9553Implemented a mechanism to escape infinite AML While() loops. Added a
9554loop
9555counter to force exit from AML While loops if the count becomes too
9556large.
9557This can occur in poorly written AML when the hardware does not respond
9558within a while loop and the loop does not implement a timeout. The
9559maximum
9560loop count is configurable. A new exception code is returned when a loop
9561is
9562broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
9563
9564Optimized the execution of AML While loops. Previously, a control state
9565object was allocated and freed for each execution of the loop. The
9566optimization is to simply reuse the control state for each iteration.
9567This
9568speeds up the raw loop execution time by about 5%.
9569
9570Enhanced the implicit return mechanism. For Windows compatibility, return
9571an
9572implicit integer of value zero for methods that contain no executable
9573code.
9574Such methods are seen in the field as stubs (presumably), and can cause
9575drivers to fail if they expect a return value. Lin Ming.
9576
9577Allow multiple backslashes as root prefixes in namepaths. In a fully
9578qualified namepath, allow multiple backslash prefixes. This can happen
9579(and
9580is seen in the field) because of the use of a double-backslash in strings
9581(since backslash is the escape character) causing confusion. ACPICA BZ
9582739
9583Lin Ming.
9584
9585Emit a warning if two different FACS or DSDT tables are discovered in the
9586FADT. Checks if there are two valid but different addresses for the FACS
9587and
9588DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
9589
9590Consolidated the method argument count validation code. Merged the code
9591that
9592validates control method argument counts into the predefined validation
9593module. Eliminates possible multiple warnings for incorrect argument
9594counts.
9595
9596Implemented ACPICA example code. Includes code for ACPICA initialization,
9597handler installation, and calling a control method. Available at
9598source/tools/examples.
9599
9600Added a global pointer for FACS table to simplify internal FACS access.
9601Use
9602the global pointer instead of using AcpiGetTableByIndex for each FACS
9603access.
9604This simplifies the code for the Global Lock and the Firmware Waking
9605Vector(s).
9606
9607Example Code and Data Size: These are the sizes for the OS-independent
9608acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9609debug version of the code includes the debug output trace mechanism and
9610has a
9611much larger code and data size.
9612
9613  Previous Release:
9614    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
9615    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
9616  Current Release:
9617    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
9618    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
9619
96202) iASL Compiler/Disassembler and Tools:
9621
9622iASL: Improved disassembly of external method calls. Added the -e option
9623to
9624allow the inclusion of additional ACPI tables to help with the
9625disassembly
9626of
9627method invocations and the generation of external declarations during the
9628disassembly. Certain external method invocations cannot be disassembled
9629properly without the actual declaration of the method. Use the -e option
9630to
9631include the table where the external method(s) are actually declared.
9632Most
9633useful for disassembling SSDTs that make method calls back to the master
9634DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
9635-d
9636-e dsdt.aml ssdt1.aml
9637
9638iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
9639problem where the use of an alias within a namepath would result in a not
9640found error or cause the compiler to fault. Also now allows forward
9641references from the Alias operator itself. ACPICA BZ 738.
9642
9643----------------------------------------
964426 September 2008. Summary of changes for version 20080926:
9645
96461) ACPI CA Core Subsystem:
9647
9648Designed and implemented a mechanism to validate predefined ACPI methods
9649and
9650objects. This code validates the predefined ACPI objects (objects whose
9651names
9652start with underscore) that appear in the namespace, at the time they are
9653evaluated. The argument count and the type of the returned object are
9654validated against the ACPI specification. The purpose of this validation
9655is
9656to detect problems with the BIOS-implemented predefined ACPI objects
9657before
9658the results are returned to the ACPI-related drivers. Future enhancements
9659may
9660include actual repair of incorrect return objects where possible. Two new
9661files are nspredef.c and acpredef.h.
9662
9663Fixed a fault in the AML parser if a memory allocation fails during the
9664Op
9665completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
9666
9667Fixed an issue with implicit return compatibility. This change improves
9668the
9669implicit return mechanism to be more compatible with the MS interpreter.
9670Lin
9671Ming, ACPICA BZ 349.
9672
9673Implemented support for zero-length buffer-to-string conversions. Allow
9674zero
9675length strings during interpreter buffer-to-string conversions. For
9676example,
9677during the ToDecimalString and ToHexString operators, as well as implicit
9678conversions. Fiodor Suietov, ACPICA BZ 585.
9679
9680Fixed two possible memory leaks in the error exit paths of
9681AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
9682are
9683similar in that they use a stack of state objects in order to eliminate
9684recursion. The stack must be fully unwound and deallocated if an error
9685occurs. Lin Ming. ACPICA BZ 383.
9686
9687Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
9688global
9689ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
9690Moore ACPICA BZ 442.
9691
9692Removed the obsolete version number in module headers. Removed the
9693"$Revision" number that appeared in each module header. This version
9694number
9695was useful under SourceSafe and CVS, but has no meaning under git. It is
9696not
9697only incorrect, it could also be misleading.
9698
9699Example Code and Data Size: These are the sizes for the OS-independent
9700acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9701debug version of the code includes the debug output trace mechanism and
9702has a
9703much larger code and data size.
9704
9705  Previous Release:
9706    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9707    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
9708  Current Release:
9709    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
9710    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
9711
9712----------------------------------------
971329 August 2008. Summary of changes for version 20080829:
9714
97151) ACPI CA Core Subsystem:
9716
9717Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
9718Reference. Changes include the elimination of cheating on the Object
9719field
9720for the DdbHandle subtype, addition of a reference class field to
9721differentiate the various reference types (instead of an AML opcode), and
9722the
9723cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
9724
9725Reduce an error to a warning for an incorrect method argument count.
9726Previously aborted with an error if too few arguments were passed to a
9727control method via the external ACPICA interface. Now issue a warning
9728instead
9729and continue. Handles the case where the method inadvertently declares
9730too
9731many arguments, but does not actually use the extra ones. Applies mainly
9732to
9733the predefined methods. Lin Ming. Linux BZ 11032.
9734
9735Disallow the evaluation of named object types with no intrinsic value.
9736Return
9737AE_TYPE for objects that have no value and therefore evaluation is
9738undefined:
9739Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
9740of
9741these types were allowed, but an exception would be generated at some
9742point
9743during the evaluation. Now, the error is generated up front.
9744
9745Fixed a possible memory leak in the AcpiNsGetExternalPathname function
9746(nsnames.c). Fixes a leak in the error exit path.
9747
9748Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
9749debug
9750levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
9751ACPI_EXCEPTION
9752interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
9753ACPI_LV_EVENTS.
9754
9755Removed obsolete and/or unused exception codes from the acexcep.h header.
9756There is the possibility that certain device drivers may be affected if
9757they
9758use any of these exceptions.
9759
9760The ACPICA documentation has been added to the public git source tree,
9761under
9762acpica/documents. Included are the ACPICA programmer reference, the iASL
9763compiler reference, and the changes.txt release logfile.
9764
9765Example Code and Data Size: These are the sizes for the OS-independent
9766acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9767debug version of the code includes the debug output trace mechanism and
9768has a
9769much larger code and data size.
9770
9771  Previous Release:
9772    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9773    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
9774  Current Release:
9775    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9776    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
9777
97782) iASL Compiler/Disassembler and Tools:
9779
9780Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
9781defines _SCP with 3 arguments. Previous versions defined it with only 1
9782argument. iASL now allows both definitions.
9783
9784iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
9785zero-
9786length subtables when disassembling ACPI tables. Also fixed a couple of
9787errors where a full 16-bit table type field was not extracted from the
9788input
9789properly.
9790
9791acpisrc: Improve comment counting mechanism for generating source code
9792statistics. Count first and last lines of multi-line comments as
9793whitespace,
9794not comment lines. Handle Linux legal header in addition to standard
9795acpica
9796header.
9797
9798----------------------------------------
9799
980029 July 2008. Summary of changes for version 20080729:
9801
98021) ACPI CA Core Subsystem:
9803
9804Fix a possible deadlock in the GPE dispatch. Remove call to
9805AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
9806attempt
9807to acquire the GPE lock but can deadlock since the GPE lock is already
9808held
9809at dispatch time. This code was introduced in version 20060831 as a
9810response
9811to Linux BZ 6881 and has since been removed from Linux.
9812
9813Add a function to dereference returned reference objects. Examines the
9814return
9815object from a call to AcpiEvaluateObject. Any Index or RefOf references
9816are
9817automatically dereferenced in an attempt to return something useful
9818(these
9819reference types cannot be converted into an external ACPI_OBJECT.)
9820Provides
9821MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
9822
9823x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
9824subtables for the MADT and one new subtable for the SRAT. Includes
9825disassembler and AcpiSrc support. Data from the Intel 64 Architecture
9826x2APIC
9827Specification, June 2008.
9828
9829Additional error checking for pathname utilities. Add error check after
9830all
9831calls to AcpiNsGetPathnameLength. Add status return from
9832AcpiNsBuildExternalPath and check after all calls. Add parameter
9833validation
9834to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
9835
9836Return status from the global init function AcpiUtGlobalInitialize. This
9837is
9838used by both the kernel subsystem and the utilities such as iASL
9839compiler.
9840The function could possibly fail when the caches are initialized. Yang
9841Yi.
9842
9843Add a function to decode reference object types to strings. Created for
9844improved error messages.
9845
9846Improve object conversion error messages. Better error messages during
9847object
9848conversion from internal to the external ACPI_OBJECT. Used for external
9849calls
9850to AcpiEvaluateObject.
9851
9852Example Code and Data Size: These are the sizes for the OS-independent
9853acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9854debug version of the code includes the debug output trace mechanism and
9855has a
9856much larger code and data size.
9857
9858  Previous Release:
9859    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
9860    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
9861  Current Release:
9862    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9863    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
9864
98652) iASL Compiler/Disassembler and Tools:
9866
9867Debugger: fix a possible hang when evaluating non-methods. Fixes a
9868problem
9869introduced in version 20080701. If the object being evaluated (via
9870execute
9871command) is not a method, the debugger can hang while trying to obtain
9872non-
9873existent parameters.
9874
9875iASL: relax error for using reserved "_T_x" identifiers. These names can
9876appear in a disassembled ASL file if they were emitted by the original
9877compiler. Instead of issuing an error or warning and forcing the user to
9878manually change these names, issue a remark instead.
9879
9880iASL: error if named object created in while loop. Emit an error if any
9881named
9882object is created within a While loop. If allowed, this code will
9883generate
9884a
9885run-time error on the second iteration of the loop when an attempt is
9886made
9887to
9888create the same named object twice. ACPICA bugzilla 730.
9889
9890iASL: Support absolute pathnames for include files. Add support for
9891absolute
9892pathnames within the Include operator. previously, only relative
9893pathnames
9894were supported.
9895
9896iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
9897Descriptor.
9898The ACPI spec requires one interrupt minimum. BZ 423
9899
9900iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
9901Handles the case for the Interrupt Resource Descriptor where
9902the ResourceSource argument is omitted but ResourceSourceIndex
9903is present. Now leave room for the Index. BZ 426
9904
9905iASL: Prevent error message if CondRefOf target does not exist. Fixes
9906cases
9907where an error message is emitted if the target does not exist. BZ 516
9908
9909iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
9910(get ACPI tables on Windows). This was apparently broken in version
991120070919.
9912
9913AcpiXtract: Handle EOF while extracting data. Correctly handle the case
9914where
9915the EOF happens immediately after the last table in the input file. Print
9916completion message. Previously, no message was displayed in this case.
9917
9918----------------------------------------
991901 July 2008. Summary of changes for version 20080701:
9920
99210) Git source tree / acpica.org
9922
9923Fixed a problem where a git-clone from http would not transfer the entire
9924source tree.
9925
99261) ACPI CA Core Subsystem:
9927
9928Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
9929enable bit. Now performs a read-change-write of the enable register
9930instead
9931of simply writing out the cached enable mask. This will prevent
9932inadvertent
9933enabling of GPEs if a rogue GPE is received during initialization (before
9934GPE
9935handlers are installed.)
9936
9937Implemented a copy for dynamically loaded tables. Previously, dynamically
9938loaded tables were simply mapped - but on some machines this memory is
9939corrupted after suspend. Now copy the table to a local buffer. For the
9940OpRegion case, added checksum verify. Use the table length from the table
9941header, not the region length. For the Buffer case, use the table length
9942also. Dennis Noordsij, Bob Moore. BZ 10734
9943
9944Fixed a problem where the same ACPI table could not be dynamically loaded
9945and
9946unloaded more than once. Without this change, a table cannot be loaded
9947again
9948once it has been loaded/unloaded one time. The current mechanism does not
9949unregister a table upon an unload. During a load, if the same table is
9950found,
9951this no longer returns an exception. BZ 722
9952
9953Fixed a problem where the wrong descriptor length was calculated for the
9954EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
9955EndTag
9956are calculated as 12 bytes long, but the actual length in the internal
9957descriptor is 16 because of the round-up to 8 on the 64-bit build.
9958Reported
9959by Linn Crosetto. BZ 728
9960
9961Fixed a possible memory leak in the Unload operator. The DdbHandle
9962returned
9963by Load() did not have its reference count decremented during unload,
9964leading
9965to a memory leak. Lin Ming. BZ 727
9966
9967Fixed a possible memory leak when deleting thermal/processor objects. Any
9968associated notify handlers (and objects) were not being deleted. Fiodor
9969Suietov. BZ 506
9970
9971Fixed the ordering of the ASCII names in the global mutex table to match
9972the
9973actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
9974only.
9975Vegard Nossum. BZ 726
9976
9977Enhanced the AcpiGetObjectInfo interface to return the number of required
9978arguments if the object is a control method. Added this call to the
9979debugger
9980so the proper number of default arguments are passed to a method. This
9981prevents a warning when executing methods from AcpiExec.
9982
9983Added a check for an invalid handle in AcpiGetObjectInfo. Return
9984AE_BAD_PARAMETER if input handle is invalid. BZ 474
9985
9986Fixed an extraneous warning from exconfig.c on the 64-bit build.
9987
9988Example Code and Data Size: These are the sizes for the OS-independent
9989acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9990debug version of the code includes the debug output trace mechanism and
9991has a
9992much larger code and data size.
9993
9994  Previous Release:
9995    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
9996    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
9997  Current Release:
9998    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
9999    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
10000
100012) iASL Compiler/Disassembler and Tools:
10002
10003iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
10004resource descriptor names.
10005
10006iASL: Detect invalid ASCII characters in input (windows version). Removed
10007the
10008"-CF" flag from the flex compile, enables correct detection of non-ASCII
10009characters in the input. BZ 441
10010
10011iASL: Eliminate warning when result of LoadTable is not used. Eliminate
10012the
10013"result of operation not used" warning when the DDB handle returned from
10014LoadTable is not used. The warning is not needed. BZ 590
10015
10016AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
10017method
10018to
10019pass address of table to the AML. Added option to disable OpRegion
10020simulation
10021to allow creation of an OpRegion with a real address that was passed to
10022_CFG.
10023All of this allows testing of the Load and Unload operators from
10024AcpiExec.
10025
10026Debugger: update tables command for unloaded tables. Handle unloaded
10027tables
10028and use the standard table header output routine.
10029
10030----------------------------------------
1003109 June 2008. Summary of changes for version 20080609:
10032
100331) ACPI CA Core Subsystem:
10034
10035Implemented a workaround for reversed _PRT entries. A significant number
10036of
10037BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
10038change dynamically detects and repairs this problem. Provides
10039compatibility
10040with MS ACPI. BZ 6859
10041
10042Simplified the internal ACPI hardware interfaces to eliminate the locking
10043flag parameter from Register Read/Write. Added a new external interface,
10044AcpiGetRegisterUnlocked.
10045
10046Fixed a problem where the invocation of a GPE control method could hang.
10047This
10048was a regression introduced in 20080514. The new method argument count
10049validation mechanism can enter an infinite loop when a GPE method is
10050dispatched. Problem fixed by removing the obsolete code that passed GPE
10051block
10052information to the notify handler via the control method parameter
10053pointer.
10054
10055Fixed a problem where the _SST execution status was incorrectly returned
10056to
10057the caller of AcpiEnterSleepStatePrep. This was a regression introduced
10058in
1005920080514. _SST is optional and a NOT_FOUND exception should never be
10060returned. BZ 716
10061
10062Fixed a problem where a deleted object could be accessed from within the
10063AML
10064parser. This was a regression introduced in version 20080123 as a fix for
10065the
10066Unload operator. Lin Ming. BZ 10669
10067
10068Cleaned up the debug operand dump mechanism. Eliminated unnecessary
10069operands
10070and eliminated the use of a negative index in a loop. Operands are now
10071displayed in the correct order, not backwards. This also fixes a
10072regression
10073introduced in 20080514 on 64-bit systems where the elimination of
10074ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
10075715
10076
10077Fixed a possible memory leak in EvPciConfigRegionSetup where the error
10078exit
10079path did not delete a locally allocated structure.
10080
10081Updated definitions for the DMAR and SRAT tables to synchronize with the
10082current specifications. Includes disassembler support.
10083
10084Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
10085loop termination value was used. Loop terminated on iteration early,
10086missing
10087one mutex. Linn Crosetto
10088
10089Example Code and Data Size: These are the sizes for the OS-independent
10090acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10091debug version of the code includes the debug output trace mechanism and
10092has a
10093much larger code and data size.
10094
10095  Previous Release:
10096    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
10097    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
10098  Current Release:
10099    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
10100    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
10101
101022) iASL Compiler/Disassembler and Tools:
10103
10104Disassembler: Implemented support for EisaId() within _CID objects. Now
10105disassemble integer _CID objects back to EisaId invocations, including
10106multiple integers within _CID packages. Includes single-step support for
10107debugger also.
10108
10109Disassembler: Added support for DMAR and SRAT table definition changes.
10110
10111----------------------------------------
1011214 May 2008. Summary of changes for version 20080514:
10113
101141) ACPI CA Core Subsystem:
10115
10116Fixed a problem where GPEs were enabled too early during the ACPICA
10117initialization. This could lead to "handler not installed" errors on some
10118machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
10119This
10120ensures that all operation regions and devices throughout the namespace
10121have
10122been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
10123
10124Implemented a change to the enter sleep code. Moved execution of the _GTS
10125method to just before setting sleep enable bit. The execution was moved
10126from
10127AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
10128immediately before the SLP_EN bit is set, as per the ACPI specification.
10129Luming Yu, BZ 1653.
10130
10131Implemented a fix to disable unknown GPEs (2nd version). Now always
10132disable
10133the GPE, even if ACPICA thinks that that it is already disabled. It is
10134possible that the AML or some other code has enabled the GPE unbeknownst
10135to
10136the ACPICA code.
10137
10138Fixed a problem with the Field operator where zero-length fields would
10139return
10140an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
10141ASL
10142field declarations in Field(), BankField(), and IndexField(). BZ 10606.
10143
10144Implemented a fix for the Load operator, now load the table at the
10145namespace
10146root. This reverts a change introduced in version 20071019. The table is
10147now
10148loaded at the namespace root even though this goes against the ACPI
10149specification. This provides compatibility with other ACPI
10150implementations.
10151The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
10152Ming.
10153
10154Fixed a problem where ACPICA would not Load() tables with unusual
10155signatures.
10156Now ignore ACPI table signature for Load() operator. Only "SSDT" is
10157acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
10158Therefore, signature validation is worthless. Apparently MS ACPI accepts
10159such
10160signatures, ACPICA must be compatible. BZ 10454.
10161
10162Fixed a possible negative array index in AcpiUtValidateException. Added
10163NULL
10164fields to the exception string arrays to eliminate a -1 subtraction on
10165the
10166SubStatus field.
10167
10168Updated the debug tracking macros to reduce overall code and data size.
10169Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
10170instead of pointers to static strings. Jan Beulich and Bob Moore.
10171
10172Implemented argument count checking in control method invocation via
10173AcpiEvaluateObject. Now emit an error if too few arguments, warning if
10174too
10175many. This applies only to extern programmatic control method execution,
10176not
10177method-to-method calls within the AML. Lin Ming.
10178
10179Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
10180no
10181longer needed, especially with the removal of 16-bit support. It was
10182replaced
10183mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
10184bit
10185on
1018632/64-bit platforms is required.
10187
10188Added the C const qualifier for appropriate string constants -- mostly
10189MODULE_NAME and printf format strings. Jan Beulich.
10190
10191Example Code and Data Size: These are the sizes for the OS-independent
10192acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10193debug version of the code includes the debug output trace mechanism and
10194has a
10195much larger code and data size.
10196
10197  Previous Release:
10198    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
10199    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
10200  Current Release:
10201    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
10202    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
10203
102042) iASL Compiler/Disassembler and Tools:
10205
10206Implemented ACPI table revision ID validation in the disassembler. Zero
10207is
10208always invalid. For DSDTs, the ID controls the interpreter integer width.
102091
10210means 32-bit and this is unusual. 2 or greater is 64-bit.
10211
10212----------------------------------------
1021321 March 2008. Summary of changes for version 20080321:
10214
102151) ACPI CA Core Subsystem:
10216
10217Implemented an additional change to the GPE support in order to suppress
10218spurious or stray GPEs. The AcpiEvDisableGpe function will now
10219permanently
10220disable incoming GPEs that are neither enabled nor disabled -- meaning
10221that
10222the GPE is unknown to the system. This should prevent future interrupt
10223floods
10224from that GPE. BZ 6217 (Zhang Rui)
10225
10226Fixed a problem where NULL package elements were not returned to the
10227AcpiEvaluateObject interface correctly. The element was simply ignored
10228instead of returning a NULL ACPI_OBJECT package element, potentially
10229causing
10230a buffer overflow and/or confusing the caller who expected a fixed number
10231of
10232elements. BZ 10132 (Lin Ming, Bob Moore)
10233
10234Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
10235Dword,
10236Qword), Field, BankField, and IndexField operators when invoked from
10237inside
10238an executing control method. In this case, these operators created
10239namespace
10240nodes that were incorrectly left marked as permanent nodes instead of
10241temporary nodes. This could cause a problem if there is race condition
10242between an exiting control method and a running namespace walk. (Reported
10243by
10244Linn Crosetto)
10245
10246Fixed a problem where the CreateField and CreateXXXField operators would
10247incorrectly allow duplicate names (the name of the field) with no
10248exception
10249generated.
10250
10251Implemented several changes for Notify handling. Added support for new
10252Notify
10253values (ACPI 2.0+) and improved the Notify debug output. Notify on
10254PowerResource objects is no longer allowed, as per the ACPI
10255specification.
10256(Bob Moore, Zhang Rui)
10257
10258All Reference Objects returned via the AcpiEvaluateObject interface are
10259now
10260marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
10261for
10262NULL objects - either NULL package elements or unresolved named
10263references.
10264
10265Fixed a problem where an extraneous debug message was produced for
10266package
10267objects (when debugging enabled). The message "Package List length larger
10268than NumElements count" is now produced in the correct case, and is now
10269an
10270error message rather than a debug message. Added a debug message for the
10271opposite case, where NumElements is larger than the Package List (the
10272package
10273will be padded out with NULL elements as per the ACPI spec.)
10274
10275Implemented several improvements for the output of the ASL "Debug" object
10276to
10277clarify and keep all data for a given object on one output line.
10278
10279Fixed two size calculation issues with the variable-length Start
10280Dependent
10281resource descriptor.
10282
10283Example Code and Data Size: These are the sizes for the OS-independent
10284acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10285debug version of the code includes the debug output trace mechanism and
10286has
10287a much larger code and data size.
10288
10289  Previous Release:
10290    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
10291    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
10292  Current Release:
10293    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
10294    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
10295
102962) iASL Compiler/Disassembler and Tools:
10297
10298Fixed a problem with the use of the Switch operator where execution of
10299the
10300containing method by multiple concurrent threads could cause an
10301AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
10302actual Switch opcode, it must be simulated with local named temporary
10303variables and if/else pairs. The solution chosen was to mark any method
10304that
10305uses Switch as Serialized, thus preventing multiple thread entries. BZ
10306469.
10307
10308----------------------------------------
1030913 February 2008. Summary of changes for version 20080213:
10310
103111) ACPI CA Core Subsystem:
10312
10313Implemented another MS compatibility design change for GPE/Notify
10314handling.
10315GPEs are now cleared/enabled asynchronously to allow all pending notifies
10316to
10317complete first. It is expected that the OSL will queue the enable request
10318behind all pending notify requests (may require changes to the local host
10319OSL
10320in AcpiOsExecute). Alexey Starikovskiy.
10321
10322Fixed a problem where buffer and package objects passed as arguments to a
10323control method via the external AcpiEvaluateObject interface could cause
10324an
10325AE_AML_INTERNAL exception depending on the order and type of operators
10326executed by the target control method.
10327
10328Fixed a problem where resource descriptor size optimization could cause a
10329problem when a _CRS resource template is passed to a _SRS method. The
10330_SRS
10331resource template must use the same descriptors (with the same size) as
10332returned from _CRS. This change affects the following resource
10333descriptors:
10334IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
103359487)
10336
10337Fixed a problem where a CopyObject to RegionField, BankField, and
10338IndexField
10339objects did not perform an implicit conversion as it should. These types
10340must
10341retain their initial type permanently as per the ACPI specification.
10342However,
10343a CopyObject to all other object types should not perform an implicit
10344conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
10345
10346Fixed a problem with the AcpiGetDevices interface where the mechanism to
10347match device CIDs did not examine the entire list of available CIDs, but
10348instead aborted on the first non-matching CID. Andrew Patterson.
10349
10350Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
10351was
10352inadvertently changed to return a 16-bit value instead of a 32-bit value,
10353truncating the upper dword of a 64-bit value. This macro is only used to
10354display debug output, so no incorrect calculations were made. Also,
10355reimplemented the macro so that a 64-bit shift is not performed by
10356inefficient compilers.
10357
10358Added missing va_end statements that should correspond with each va_start
10359statement.
10360
10361Example Code and Data Size: These are the sizes for the OS-independent
10362acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10363debug version of the code includes the debug output trace mechanism and
10364has
10365a much larger code and data size.
10366
10367  Previous Release:
10368    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
10369    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
10370  Current Release:
10371    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
10372    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
10373
103742) iASL Compiler/Disassembler and Tools:
10375
10376Implemented full disassembler support for the following new ACPI tables:
10377BERT, EINJ, and ERST. Implemented partial disassembler support for the
10378complicated HEST table. These tables support the Windows Hardware Error
10379Architecture (WHEA).
10380
10381----------------------------------------
1038223 January 2008. Summary of changes for version 20080123:
10383
103841) ACPI CA Core Subsystem:
10385
10386Added the 2008 copyright to all module headers and signons. This affects
10387virtually every file in the ACPICA core subsystem, the iASL compiler, and
10388the tools/utilities.
10389
10390Fixed a problem with the SizeOf operator when used with Package and
10391Buffer
10392objects. These objects have deferred execution for some arguments, and
10393the
10394execution is now completed before the SizeOf is executed. This problem
10395caused
10396unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
10397BZ
103989558
10399
10400Implemented an enhancement to the interpreter "slack mode". In the
10401absence
10402of
10403an explicit return or an implicitly returned object from the last
10404executed
10405opcode, a control method will now implicitly return an integer of value 0
10406for
10407Microsoft compatibility. (Lin Ming) BZ 392
10408
10409Fixed a problem with the Load operator where an exception was not
10410returned
10411in
10412the case where the table is already loaded. (Lin Ming) BZ 463
10413
10414Implemented support for the use of DDBHandles as an Indexed Reference, as
10415per
10416the ACPI spec. (Lin Ming) BZ 486
10417
10418Implemented support for UserTerm (Method invocation) for the Unload
10419operator
10420as per the ACPI spec. (Lin Ming) BZ 580
10421
10422Fixed a problem with the LoadTable operator where the OemId and
10423OemTableId
10424input strings could cause unexpected failures if they were shorter than
10425the
10426maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
10427
10428Implemented support for UserTerm (Method invocation) for the Unload
10429operator
10430as per the ACPI spec. (Lin Ming) BZ 580
10431
10432Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
10433HEST,
10434IBFT, UEFI, WDAT. Disassembler support is forthcoming.
10435
10436Example Code and Data Size: These are the sizes for the OS-independent
10437acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10438debug version of the code includes the debug output trace mechanism and
10439has
10440a much larger code and data size.
10441
10442  Previous Release:
10443    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
10444    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
10445  Current Release:
10446    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
10447    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
10448
104492) iASL Compiler/Disassembler and Tools:
10450
10451Implemented support in the disassembler for checksum validation on
10452incoming
10453binary DSDTs and SSDTs. If incorrect, a message is displayed within the
10454table
10455header dump at the start of the disassembly.
10456
10457Implemented additional debugging information in the namespace listing
10458file
10459created during compilation. In addition to the namespace hierarchy, the
10460full
10461pathname to each namespace object is displayed.
10462
10463Fixed a problem with the disassembler where invalid ACPI tables could
10464cause
10465faults or infinite loops.
10466
10467Fixed an unexpected parse error when using the optional "parameter types"
10468list in a control method declaration. (Lin Ming) BZ 397
10469
10470Fixed a problem where two External declarations with the same name did
10471not
10472cause an error (Lin Ming) BZ 509
10473
10474Implemented support for full TermArgs (adding Argx, Localx and method
10475invocation) for the ParameterData parameter to the LoadTable operator.
10476(Lin
10477Ming) BZ 583,587
10478
10479----------------------------------------
1048019 December 2007. Summary of changes for version 20071219:
10481
104821) ACPI CA Core Subsystem:
10483
10484Implemented full support for deferred execution for the TermArg string
10485arguments for DataTableRegion. This enables forward references and full
10486operand resolution for the three string arguments. Similar to
10487OperationRegion
10488deferred argument execution.) Lin Ming. BZ 430
10489
10490Implemented full argument resolution support for the BankValue argument
10491to
10492BankField. Previously, only constants were supported, now any TermArg may
10493be
10494used. Lin Ming BZ 387, 393
10495
10496Fixed a problem with AcpiGetDevices where the search of a branch of the
10497device tree could be terminated prematurely. In accordance with the ACPI
10498specification, the search down the current branch is terminated if a
10499device
10500is both not present and not functional (instead of just not present.)
10501Yakui
10502Zhao.
10503
10504Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
10505if
10506the underlying AML code changed the GPE enable registers. Now, any
10507unknown
10508incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
10509disabled
10510instead of simply ignored. Rui Zhang.
10511
10512Fixed a problem with Index Fields where the Index register was
10513incorrectly
10514limited to a maximum of 32 bits. Now any size may be used.
10515
10516Fixed a couple memory leaks associated with "implicit return" objects
10517when
10518the AML Interpreter slack mode is enabled. Lin Ming BZ 349
10519
10520Example Code and Data Size: These are the sizes for the OS-independent
10521acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10522debug version of the code includes the debug output trace mechanism and
10523has
10524a much larger code and data size.
10525
10526  Previous Release:
10527    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
10528    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
10529  Current Release:
10530    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
10531    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
10532
10533----------------------------------------
1053414 November 2007. Summary of changes for version 20071114:
10535
105361) ACPI CA Core Subsystem:
10537
10538Implemented event counters for each of the Fixed Events, the ACPI SCI
10539(interrupt) itself, and control methods executed. Named
10540AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
10541These
10542should be useful for debugging and statistics.
10543
10544Implemented a new external interface, AcpiGetStatistics, to retrieve the
10545contents of the various event counters. Returns the current values for
10546AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
10547AcpiMethodCount. The interface can be expanded in the future if new
10548counters
10549are added. Device drivers should use this interface rather than access
10550the
10551counters directly.
10552
10553Fixed a problem with the FromBCD and ToBCD operators. With some
10554compilers,
10555the ShortDivide function worked incorrectly, causing problems with the
10556BCD
10557functions with large input values. A truncation from 64-bit to 32-bit
10558inadvertently occurred. Internal BZ 435. Lin Ming
10559
10560Fixed a problem with Index references passed as method arguments.
10561References
10562passed as arguments to control methods were dereferenced immediately
10563(before
10564control was passed to the called method). The references are now
10565correctly
10566passed directly to the called method. BZ 5389. Lin Ming
10567
10568Fixed a problem with CopyObject used in conjunction with the Index
10569operator.
10570The reference was incorrectly dereferenced before the copy. The reference
10571is
10572now correctly copied. BZ 5391. Lin Ming
10573
10574Fixed a problem with Control Method references within Package objects.
10575These
10576references are now correctly generated. This completes the package
10577construction overhaul that began in version 20071019.
10578
10579Example Code and Data Size: These are the sizes for the OS-independent
10580acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10581debug version of the code includes the debug output trace mechanism and
10582has
10583a much larger code and data size.
10584
10585  Previous Release:
10586    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
10587    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
10588  Current Release:
10589    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
10590    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
10591
10592
105932) iASL Compiler/Disassembler and Tools:
10594
10595The AcpiExec utility now installs handlers for all of the predefined
10596Operation Region types. New types supported are: PCI_Config, CMOS, and
10597PCIBARTarget.
10598
10599Fixed a problem with the 64-bit version of AcpiExec where the extended
10600(64-
10601bit) address fields for the DSDT and FACS within the FADT were not being
10602used, causing truncation of the upper 32-bits of these addresses. Lin
10603Ming
10604and Bob Moore
10605
10606----------------------------------------
1060719 October 2007. Summary of changes for version 20071019:
10608
106091) ACPI CA Core Subsystem:
10610
10611Fixed a problem with the Alias operator when the target of the alias is a
10612named ASL operator that opens a new scope -- Scope, Device,
10613PowerResource,
10614Processor, and ThermalZone. In these cases, any children of the original
10615operator could not be accessed via the alias, potentially causing
10616unexpected
10617AE_NOT_FOUND exceptions. (BZ 9067)
10618
10619Fixed a problem with the Package operator where all named references were
10620created as object references and left otherwise unresolved. According to
10621the
10622ACPI specification, a Package can only contain Data Objects or references
10623to
10624control methods. The implication is that named references to Data Objects
10625(Integer, Buffer, String, Package, BufferField, Field) should be resolved
10626immediately upon package creation. This is the approach taken with this
10627change. References to all other named objects (Methods, Devices, Scopes,
10628etc.) are all now properly created as reference objects. (BZ 5328)
10629
10630Reverted a change to Notify handling that was introduced in version
1063120070508. This version changed the Notify handling from asynchronous to
10632fully synchronous (Device driver Notify handling with respect to the
10633Notify
10634ASL operator). It was found that this change caused more problems than it
10635solved and was removed by most users.
10636
10637Fixed a problem with the Increment and Decrement operators where the type
10638of
10639the target object could be unexpectedly and incorrectly changed. (BZ 353)
10640Lin Ming.
10641
10642Fixed a problem with the Load and LoadTable operators where the table
10643location within the namespace was ignored. Instead, the table was always
10644loaded into the root or current scope. Lin Ming.
10645
10646Fixed a problem with the Load operator when loading a table from a buffer
10647object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
10648
10649Fixed a problem with the Debug object where a store of a DdbHandle
10650reference
10651object to the Debug object could cause a fault.
10652
10653Added a table checksum verification for the Load operator, in the case
10654where
10655the load is from a buffer. (BZ 578).
10656
10657Implemented additional parameter validation for the LoadTable operator.
10658The
10659length of the input strings SignatureString, OemIdString, and OemTableId
10660are
10661now checked for maximum lengths. (BZ 582) Lin Ming.
10662
10663Example Code and Data Size: These are the sizes for the OS-independent
10664acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10665debug version of the code includes the debug output trace mechanism and
10666has
10667a much larger code and data size.
10668
10669  Previous Release:
10670    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
10671    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
10672  Current Release:
10673    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
10674    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
10675
10676
106772) iASL Compiler/Disassembler:
10678
10679Fixed a problem where if a single file was specified and the file did not
10680exist, no error message was emitted. (Introduced with wildcard support in
10681version 20070917.)
10682
10683----------------------------------------
1068419 September 2007. Summary of changes for version 20070919:
10685
106861) ACPI CA Core Subsystem:
10687
10688Designed and implemented new external interfaces to install and remove
10689handlers for ACPI table-related events. Current events that are defined
10690are
10691LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
10692they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
10693AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
10694
10695Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
10696(acpi_serialized option on Linux) could cause some systems to hang during
10697initialization. (Bob Moore) BZ 8171
10698
10699Fixed a problem where objects of certain types (Device, ThermalZone,
10700Processor, PowerResource) can be not found if they are declared and
10701referenced from within the same control method (Lin Ming) BZ 341
10702
10703Example Code and Data Size: These are the sizes for the OS-independent
10704acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10705debug version of the code includes the debug output trace mechanism and
10706has
10707a much larger code and data size.
10708
10709  Previous Release:
10710    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
10711    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
10712  Current Release:
10713    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
10714    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
10715
10716
107172) iASL Compiler/Disassembler:
10718
10719Implemented support to allow multiple files to be compiled/disassembled
10720in
10721a
10722single invocation. This includes command line wildcard support for both
10723the
10724Windows and Unix versions of the compiler. This feature simplifies the
10725disassembly and compilation of multiple ACPI tables in a single
10726directory.
10727
10728----------------------------------------
1072908 May 2007. Summary of changes for version 20070508:
10730
107311) ACPI CA Core Subsystem:
10732
10733Implemented a Microsoft compatibility design change for the handling of
10734the
10735Notify AML operator. Previously, notify handlers were dispatched and
10736executed completely asynchronously in a deferred thread. The new design
10737still executes the notify handlers in a different thread, but the
10738original
10739thread that executed the Notify() now waits at a synchronization point
10740for
10741the notify handler to complete. Some machines depend on a synchronous
10742Notify
10743operator in order to operate correctly.
10744
10745Implemented support to allow Package objects to be passed as method
10746arguments to the external AcpiEvaluateObject interface. Previously, this
10747would return the AE_NOT_IMPLEMENTED exception. This feature had not been
10748implemented since there were no reserved control methods that required it
10749until recently.
10750
10751Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
10752that
10753contained invalid non-zero values in reserved fields could cause later
10754failures because these fields have meaning in later revisions of the
10755FADT.
10756For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
10757fields
10758are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
10759
10760Fixed a problem where the Global Lock handle was not properly updated if
10761a
10762thread that acquired the Global Lock via executing AML code then
10763attempted
10764to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
10765Joe
10766Liu.
10767
10768Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
10769could be corrupted if the interrupt being removed was at the head of the
10770list. Reported by Linn Crosetto.
10771
10772Example Code and Data Size: These are the sizes for the OS-independent
10773acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10774debug version of the code includes the debug output trace mechanism and
10775has
10776a much larger code and data size.
10777
10778  Previous Release:
10779    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10780    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
10781  Current Release:
10782    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
10783    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
10784
10785----------------------------------------
1078620 March 2007. Summary of changes for version 20070320:
10787
107881) ACPI CA Core Subsystem:
10789
10790Implemented a change to the order of interpretation and evaluation of AML
10791operand objects within the AML interpreter. The interpreter now evaluates
10792operands in the order that they appear in the AML stream (and the
10793corresponding ASL code), instead of in the reverse order (after the
10794entire
10795operand list has been parsed). The previous behavior caused several
10796subtle
10797incompatibilities with the Microsoft AML interpreter as well as being
10798somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
10799
10800Implemented a change to the ACPI Global Lock support. All interfaces to
10801the
10802global lock now allow the same thread to acquire the lock multiple times.
10803This affects the AcpiAcquireGlobalLock external interface to the global
10804lock
10805as well as the internal use of the global lock to support AML fields -- a
10806control method that is holding the global lock can now simultaneously
10807access
10808AML fields that require global lock protection. Previously, in both
10809cases,
10810this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
10811to
10812AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
10813Controller. There is no change to the behavior of the AML Acquire
10814operator,
10815as this can already be used to acquire a mutex multiple times by the same
10816thread. BZ 8066. With assistance from Alexey Starikovskiy.
10817
10818Fixed a problem where invalid objects could be referenced in the AML
10819Interpreter after error conditions. During operand evaluation, ensure
10820that
10821the internal "Return Object" field is cleared on error and only valid
10822pointers are stored there. Caused occasional access to deleted objects
10823that
10824resulted in "large reference count" warning messages. Valery Podrezov.
10825
10826Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
10827on
10828deeply nested control method invocations. BZ 7873, local BZ 487. Valery
10829Podrezov.
10830
10831Fixed an internal problem with the handling of result objects on the
10832interpreter result stack. BZ 7872. Valery Podrezov.
10833
10834Removed obsolete code that handled the case where AML_NAME_OP is the
10835target
10836of a reference (Reference.Opcode). This code was no longer necessary. BZ
108377874. Valery Podrezov.
10838
10839Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
10840was
10841a
10842remnant from the previously discontinued 16-bit support.
10843
10844Example Code and Data Size: These are the sizes for the OS-independent
10845acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10846debug version of the code includes the debug output trace mechanism and
10847has
10848a much larger code and data size.
10849
10850  Previous Release:
10851    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10852    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10853  Current Release:
10854    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10855    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
10856
10857----------------------------------------
1085826 January 2007. Summary of changes for version 20070126:
10859
108601) ACPI CA Core Subsystem:
10861
10862Added the 2007 copyright to all module headers and signons. This affects
10863virtually every file in the ACPICA core subsystem, the iASL compiler, and
10864the utilities.
10865
10866Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
10867during a table load. A bad pointer was passed in the case where the DSDT
10868is
10869overridden, causing a fault in this case.
10870
10871Example Code and Data Size: These are the sizes for the OS-independent
10872acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10873debug version of the code includes the debug output trace mechanism and
10874has
10875a much larger code and data size.
10876
10877  Previous Release:
10878    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10879    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10880  Current Release:
10881    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10882    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10883
10884----------------------------------------
1088515 December 2006. Summary of changes for version 20061215:
10886
108871) ACPI CA Core Subsystem:
10888
10889Support for 16-bit ACPICA has been completely removed since it is no
10890longer
10891necessary and it clutters the code. All 16-bit macros, types, and
10892conditional compiles have been removed, cleaning up and simplifying the
10893code
10894across the entire subsystem. DOS support is no longer needed since the
10895bootable Linux firmware kit is now available.
10896
10897The handler for the Global Lock is now removed during AcpiTerminate to
10898enable a clean subsystem restart, via the implementation of the
10899AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
10900HP)
10901
10902Implemented enhancements to the multithreading support within the
10903debugger
10904to enable improved multithreading debugging and evaluation of the
10905subsystem.
10906(Valery Podrezov)
10907
10908Debugger: Enhanced the Statistics/Memory command to emit the total
10909(maximum)
10910memory used during the execution, as well as the maximum memory consumed
10911by
10912each of the various object types. (Valery Podrezov)
10913
10914Example Code and Data Size: These are the sizes for the OS-independent
10915acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10916debug version of the code includes the debug output trace mechanism and
10917has
10918a much larger code and data size.
10919
10920  Previous Release:
10921    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
10922    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
10923  Current Release:
10924    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10925    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10926
10927
109282) iASL Compiler/Disassembler and Tools:
10929
10930AcpiExec: Implemented a new option (-m) to display full memory use
10931statistics upon subsystem/program termination. (Valery Podrezov)
10932
10933----------------------------------------
1093409 November 2006. Summary of changes for version 20061109:
10935
109361) ACPI CA Core Subsystem:
10937
10938Optimized the Load ASL operator in the case where the source operand is
10939an
10940operation region. Simply map the operation region memory, instead of
10941performing a bytewise read. (Region must be of type SystemMemory, see
10942below.)
10943
10944Fixed the Load ASL operator for the case where the source operand is a
10945region field. A buffer object is also allowed as the source operand. BZ
10946480
10947
10948Fixed a problem where the Load ASL operator allowed the source operand to
10949be
10950an operation region of any type. It is now restricted to regions of type
10951SystemMemory, as per the ACPI specification. BZ 481
10952
10953Additional cleanup and optimizations for the new Table Manager code.
10954
10955AcpiEnable will now fail if all of the required ACPI tables are not
10956loaded
10957(FADT, FACS, DSDT). BZ 477
10958
10959Added #pragma pack(8/4) to acobject.h to ensure that the structures in
10960this
10961header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
10962manually optimized to be aligned and will not work if it is byte-packed.
10963
10964Example Code and Data Size: These are the sizes for the OS-independent
10965acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10966debug version of the code includes the debug output trace mechanism and
10967has
10968a much larger code and data size.
10969
10970  Previous Release:
10971    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
10972    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
10973  Current Release:
10974    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
10975    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
10976
10977
109782) iASL Compiler/Disassembler and Tools:
10979
10980Fixed a problem where the presence of the _OSI predefined control method
10981within complex expressions could cause an internal compiler error.
10982
10983AcpiExec: Implemented full region support for multiple address spaces.
10984SpaceId is now part of the REGION object. BZ 429
10985
10986----------------------------------------
1098711 October 2006. Summary of changes for version 20061011:
10988
109891) ACPI CA Core Subsystem:
10990
10991Completed an AML interpreter performance enhancement for control method
10992execution. Previously a 2-pass parse/execution, control methods are now
10993completely parsed and executed in a single pass. This improves overall
10994interpreter performance by ~25%, reduces code size, and reduces CPU stack
10995use. (Valery Podrezov + interpreter changes in version 20051202 that
10996eliminated namespace loading during the pass one parse.)
10997
10998Implemented _CID support for PCI Root Bridge detection. If the _HID does
10999not
11000match the predefined PCI Root Bridge IDs, the _CID list (if present) is
11001now
11002obtained and also checked for an ID match.
11003
11004Implemented additional support for the PCI _ADR execution: upsearch until
11005a
11006device scope is found before executing _ADR. This allows PCI_Config
11007operation regions to be declared locally within control methods
11008underneath
11009PCI device objects.
11010
11011Fixed a problem with a possible race condition between threads executing
11012AcpiWalkNamespace and the AML interpreter. This condition was removed by
11013modifying AcpiWalkNamespace to (by default) ignore all temporary
11014namespace
11015entries created during any concurrent control method execution. An
11016additional namespace race condition is known to exist between
11017AcpiWalkNamespace and the Load/Unload ASL operators and is still under
11018investigation.
11019
11020Restructured the AML ParseLoop function, breaking it into several
11021subfunctions in order to reduce CPU stack use and improve
11022maintainability.
11023(Mikhail Kouzmich)
11024
11025AcpiGetHandle: Fix for parameter validation to detect invalid
11026combinations
11027of prefix handle and pathname. BZ 478
11028
11029Example Code and Data Size: These are the sizes for the OS-independent
11030acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11031debug version of the code includes the debug output trace mechanism and
11032has
11033a much larger code and data size.
11034
11035  Previous Release:
11036    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11037    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
11038  Current Release:
11039    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
11040    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
11041
110422) iASL Compiler/Disassembler and Tools:
11043
11044Ported the -g option (get local ACPI tables) to the new ACPICA Table
11045Manager
11046to restore original behavior.
11047
11048----------------------------------------
1104927 September 2006. Summary of changes for version 20060927:
11050
110511) ACPI CA Core Subsystem:
11052
11053Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
11054These functions now use a spinlock for mutual exclusion and the interrupt
11055level indication flag is not needed.
11056
11057Fixed a problem with the Global Lock where the lock could appear to be
11058obtained before it is actually obtained. The global lock semaphore was
11059inadvertently created with one unit instead of zero units. (BZ 464)
11060Fiodor
11061Suietov.
11062
11063Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
11064during
11065a read from a buffer or region field. (BZ 458) Fiodor Suietov.
11066
11067Example Code and Data Size: These are the sizes for the OS-independent
11068acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11069debug version of the code includes the debug output trace mechanism and
11070has
11071a much larger code and data size.
11072
11073  Previous Release:
11074    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11075    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
11076  Current Release:
11077    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11078    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
11079
11080
110812) iASL Compiler/Disassembler and Tools:
11082
11083Fixed a compilation problem with the pre-defined Resource Descriptor
11084field
11085names where an "object does not exist" error could be incorrectly
11086generated
11087if the parent ResourceTemplate pathname places the template within a
11088different namespace scope than the current scope. (BZ 7212)
11089
11090Fixed a problem where the compiler could hang after syntax errors
11091detected
11092in an ElseIf construct. (BZ 453)
11093
11094Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
11095operator. An incorrect output filename was produced when this parameter
11096was
11097a null string (""). Now, the original input filename is used as the AML
11098output filename, with an ".aml" extension.
11099
11100Implemented a generic batch command mode for the AcpiExec utility
11101(execute
11102any AML debugger command) (Valery Podrezov).
11103
11104----------------------------------------
1110512 September 2006. Summary of changes for version 20060912:
11106
111071) ACPI CA Core Subsystem:
11108
11109Enhanced the implementation of the "serialized mode" of the interpreter
11110(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
11111specified, instead of creating a serialization semaphore per control
11112method,
11113the interpreter lock is simply no longer released before a blocking
11114operation during control method execution. This effectively makes the AML
11115Interpreter single-threaded. The overhead of a semaphore per-method is
11116eliminated.
11117
11118Fixed a regression where an error was no longer emitted if a control
11119method
11120attempts to create 2 objects of the same name. This once again returns
11121AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
11122that
11123will dynamically serialize the control method to possible prevent future
11124errors. (BZ 440)
11125
11126Integrated a fix for a problem with PCI Express HID detection in the PCI
11127Config Space setup procedure. (BZ 7145)
11128
11129Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
11130AcpiHwInitialize function - the FADT registers are now validated when the
11131table is loaded.
11132
11133Added two new warnings during FADT verification - 1) if the FADT is
11134larger
11135than the largest known FADT version, and 2) if there is a mismatch
11136between
11137a
1113832-bit block address and the 64-bit X counterpart (when both are non-
11139zero.)
11140
11141Example Code and Data Size: These are the sizes for the OS-independent
11142acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11143debug version of the code includes the debug output trace mechanism and
11144has
11145a much larger code and data size.
11146
11147  Previous Release:
11148    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
11149    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
11150  Current Release:
11151    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11152    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
11153
11154
111552) iASL Compiler/Disassembler and Tools:
11156
11157Fixed a problem with the implementation of the Switch() operator where
11158the
11159temporary variable was declared too close to the actual Switch, instead
11160of
11161at method level. This could cause a problem if the Switch() operator is
11162within a while loop, causing an error on the second iteration. (BZ 460)
11163
11164Disassembler - fix for error emitted for unknown type for target of scope
11165operator. Now, ignore it and continue.
11166
11167Disassembly of an FADT now verifies the input FADT and reports any errors
11168found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
11169
11170Disassembly of raw data buffers with byte initialization data now
11171prefixes
11172each output line with the current buffer offset.
11173
11174Disassembly of ASF! table now includes all variable-length data fields at
11175the end of some of the subtables.
11176
11177The disassembler now emits a comment if a buffer appears to be a
11178ResourceTemplate, but cannot be disassembled as such because the EndTag
11179does
11180not appear at the very end of the buffer.
11181
11182AcpiExec - Added the "-t" command line option to enable the serialized
11183mode
11184of the AML interpreter.
11185
11186----------------------------------------
1118731 August 2006. Summary of changes for version 20060831:
11188
111891) ACPI CA Core Subsystem:
11190
11191Miscellaneous fixes for the Table Manager:
11192- Correctly initialize internal common FADT for all 64-bit "X" fields
11193- Fixed a couple table mapping issues during table load
11194- Fixed a couple alignment issues for IA64
11195- Initialize input array to zero in AcpiInitializeTables
11196- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
11197AcpiGetTableByIndex
11198
11199Change for GPE support: when a "wake" GPE is received, all wake GPEs are
11200now
11201immediately disabled to prevent the waking GPE from firing again and to
11202prevent other wake GPEs from interrupting the wake process.
11203
11204Added the AcpiGpeCount global that tracks the number of processed GPEs,
11205to
11206be used for debugging systems with a large number of ACPI interrupts.
11207
11208Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
11209both the ACPICA headers and the disassembler.
11210
11211Example Code and Data Size: These are the sizes for the OS-independent
11212acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11213debug version of the code includes the debug output trace mechanism and
11214has
11215a much larger code and data size.
11216
11217  Previous Release:
11218    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
11219    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
11220  Current Release:
11221    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
11222    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
11223
11224
112252) iASL Compiler/Disassembler and Tools:
11226
11227Disassembler support for the DMAR ACPI table.
11228
11229----------------------------------------
1123023 August 2006. Summary of changes for version 20060823:
11231
112321) ACPI CA Core Subsystem:
11233
11234The Table Manager component has been completely redesigned and
11235reimplemented. The new design is much simpler, and reduces the overall
11236code
11237and data size of the kernel-resident ACPICA by approximately 5%. Also, it
11238is
11239now possible to obtain the ACPI tables very early during kernel
11240initialization, even before dynamic memory management is initialized.
11241(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
11242
11243Obsolete ACPICA interfaces:
11244
11245- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
11246init
11247time).
11248- AcpiLoadTable: Not needed.
11249- AcpiUnloadTable: Not needed.
11250
11251New ACPICA interfaces:
11252
11253- AcpiInitializeTables: Must be called before the table manager can be
11254used.
11255- AcpiReallocateRootTable: Used to transfer the root table to dynamically
11256allocated memory after it becomes available.
11257- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
11258tables
11259in the RSDT/XSDT.
11260
11261Other ACPICA changes:
11262
11263- AcpiGetTableHeader returns the actual mapped table header, not a copy.
11264Use
11265AcpiOsUnmapMemory to free this mapping.
11266- AcpiGetTable returns the actual mapped table. The mapping is managed
11267internally and must not be deleted by the caller. Use of this interface
11268causes no additional dynamic memory allocation.
11269- AcpiFindRootPointer: Support for physical addressing has been
11270eliminated,
11271it appeared to be unused.
11272- The interface to AcpiOsMapMemory has changed to be consistent with the
11273other allocation interfaces.
11274- The interface to AcpiOsGetRootPointer has changed to eliminate
11275unnecessary
11276parameters.
11277- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
1127864-
11279bit platforms. Was previously 64 bits on all platforms.
11280- The interface to the ACPI Global Lock acquire/release macros have
11281changed
11282slightly since ACPICA no longer keeps a local copy of the FACS with a
11283constructed pointer to the actual global lock.
11284
11285Porting to the new table manager:
11286
11287- AcpiInitializeTables: Must be called once, and can be called anytime
11288during the OS initialization process. It allows the host to specify an
11289area
11290of memory to be used to store the internal version of the RSDT/XSDT (root
11291table). This allows the host to access ACPI tables before memory
11292management
11293is initialized and running.
11294- AcpiReallocateRootTable: Can be called after memory management is
11295running
11296to copy the root table to a dynamically allocated array, freeing up the
11297scratch memory specified in the call to AcpiInitializeTables.
11298- AcpiSubsystemInitialize: This existing interface is independent of the
11299Table Manager, and does not have to be called before the Table Manager
11300can
11301be used, it only must be called before the rest of ACPICA can be used.
11302- ACPI Tables: Some changes have been made to the names and structure of
11303the
11304actbl.h and actbl1.h header files and may require changes to existing
11305code.
11306For example, bitfields have been completely removed because of their lack
11307of
11308portability across C compilers.
11309- Update interfaces to the Global Lock acquire/release macros if local
11310versions are used. (see acwin.h)
11311
11312Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
11313
11314New files: tbfind.c
11315
11316Example Code and Data Size: These are the sizes for the OS-independent
11317acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11318debug version of the code includes the debug output trace mechanism and
11319has
11320a much larger code and data size.
11321
11322  Previous Release:
11323    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11324    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11325  Current Release:
11326    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
11327    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
11328
11329
113302) iASL Compiler/Disassembler and Tools:
11331
11332No changes for this release.
11333
11334----------------------------------------
1133521 July 2006. Summary of changes for version 20060721:
11336
113371) ACPI CA Core Subsystem:
11338
11339The full source code for the ASL test suite used to validate the iASL
11340compiler and the ACPICA core subsystem is being released with the ACPICA
11341source for the first time. The source is contained in a separate package
11342and
11343consists of over 1100 files that exercise all ASL/AML operators. The
11344package
11345should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
11346Fiodor
11347Suietov)
11348
11349Completed a new design and implementation for support of the ACPI Global
11350Lock. On the OS side, the global lock is now treated as a standard AML
11351mutex. Previously, multiple OS threads could "acquire" the global lock
11352simultaneously. However, this could cause the BIOS to be starved out of
11353the
11354lock - especially in cases such as the Embedded Controller driver where
11355there is a tight coupling between the OS and the BIOS.
11356
11357Implemented an optimization for the ACPI Global Lock interrupt mechanism.
11358The Global Lock interrupt handler no longer queues the execution of a
11359separate thread to signal the global lock semaphore. Instead, the
11360semaphore
11361is signaled directly from the interrupt handler.
11362
11363Implemented support within the AML interpreter for package objects that
11364contain a larger AML length (package list length) than the package
11365element
11366count. In this case, the length of the package is truncated to match the
11367package element count. Some BIOS code apparently modifies the package
11368length
11369on the fly, and this change supports this behavior. Provides
11370compatibility
11371with the MS AML interpreter. (With assistance from Fiodor Suietov)
11372
11373Implemented a temporary fix for the BankValue parameter of a Bank Field
11374to
11375support all constant values, now including the Zero and One opcodes.
11376Evaluation of this parameter must eventually be converted to a full
11377TermArg
11378evaluation. A not-implemented error is now returned (temporarily) for
11379non-
11380constant values for this parameter.
11381
11382Fixed problem reports (Fiodor Suietov) integrated:
11383- Fix for premature object deletion after CopyObject on Operation Region
11384(BZ
11385350)
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.7K Code, 18.0K Data,  98.7K Total
11395    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
11396  Current Release:
11397    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11398    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11399
11400
114012) iASL Compiler/Disassembler and Tools:
11402
11403No changes for this release.
11404
11405----------------------------------------
1140607 July 2006. Summary of changes for version 20060707:
11407
114081) ACPI CA Core Subsystem:
11409
11410Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
11411that do not allow the initialization of address pointers within packed
11412structures - even though the hardware itself may support misaligned
11413transfers. Some of the debug data structures are packed by default to
11414minimize size.
11415
11416Added an error message for the case where AcpiOsGetThreadId() returns
11417zero.
11418A non-zero value is required by the core ACPICA code to ensure the proper
11419operation of AML mutexes and recursive control methods.
11420
11421The DSDT is now the only ACPI table that determines whether the AML
11422interpreter is in 32-bit or 64-bit mode. Not really a functional change,
11423but
11424the hooks for per-table 32/64 switching have been removed from the code.
11425A
11426clarification to the ACPI specification is forthcoming in ACPI 3.0B.
11427
11428Fixed a possible leak of an OwnerID in the error path of
11429AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
11430deletion to a single place in AcpiTbUninstallTable to correct possible
11431leaks
11432when using the AcpiTbDeleteTablesByType interface (with assistance from
11433Lance Ortiz.)
11434
11435Fixed a problem with Serialized control methods where the semaphore
11436associated with the method could be over-signaled after multiple method
11437invocations.
11438
11439Fixed two issues with the locking of the internal namespace data
11440structure.
11441Both the Unload() operator and AcpiUnloadTable interface now lock the
11442namespace during the namespace deletion associated with the table unload
11443(with assistance from Linn Crosetto.)
11444
11445Fixed problem reports (Valery Podrezov) integrated:
11446- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
11447
11448Fixed problem reports (Fiodor Suietov) integrated:
11449- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
11450- On Address Space handler deletion, needless deactivation call (BZ 374)
11451- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
11452375)
11453- Possible memory leak, Notify sub-objects of Processor, Power,
11454ThermalZone
11455(BZ 376)
11456- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
11457- Minimum Length of RSDT should be validated (BZ 379)
11458- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
11459Handler (BZ (380)
11460- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
11461loaded
11462(BZ 381)
11463
11464Example Code and Data Size: These are the sizes for the OS-independent
11465acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11466debug version of the code includes the debug output trace mechanism and
11467has
11468a much larger code and data size.
11469
11470  Previous Release:
11471    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
11472    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
11473  Current Release:
11474    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11475    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11476
11477
114782) iASL Compiler/Disassembler and Tools:
11479
11480Fixed problem reports:
11481Compiler segfault when ASL contains a long (>1024) String declaration (BZ
11482436)
11483
11484----------------------------------------
1148523 June 2006. Summary of changes for version 20060623:
11486
114871) ACPI CA Core Subsystem:
11488
11489Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
11490allows the type to be customized to the host OS for improved efficiency
11491(since a spinlock is usually a very small object.)
11492
11493Implemented support for "ignored" bits in the ACPI registers. According
11494to
11495the ACPI specification, these bits should be preserved when writing the
11496registers via a read/modify/write cycle. There are 3 bits preserved in
11497this
11498manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
11499
11500Implemented the initial deployment of new OSL mutex interfaces. Since
11501some
11502host operating systems have separate mutex and semaphore objects, this
11503feature was requested. The base code now uses mutexes (and the new mutex
11504interfaces) wherever a binary semaphore was used previously. However, for
11505the current release, the mutex interfaces are defined as macros to map
11506them
11507to the existing semaphore interfaces. Therefore, no OSL changes are
11508required
11509at this time. (See acpiosxf.h)
11510
11511Fixed several problems with the support for the control method SyncLevel
11512parameter. The SyncLevel now works according to the ACPI specification
11513and
11514in concert with the Mutex SyncLevel parameter, since the current
11515SyncLevel
11516is a property of the executing thread. Mutual exclusion for control
11517methods
11518is now implemented with a mutex instead of a semaphore.
11519
11520Fixed three instances of the use of the C shift operator in the bitfield
11521support code (exfldio.c) to avoid the use of a shift value larger than
11522the
11523target data width. The behavior of C compilers is undefined in this case
11524and
11525can cause unpredictable results, and therefore the case must be detected
11526and
11527avoided. (Fiodor Suietov)
11528
11529Added an info message whenever an SSDT or OEM table is loaded dynamically
11530via the Load() or LoadTable() ASL operators. This should improve
11531debugging
11532capability since it will show exactly what tables have been loaded
11533(beyond
11534the tables present in the RSDT/XSDT.)
11535
11536Example Code and Data Size: These are the sizes for the OS-independent
11537acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11538debug version of the code includes the debug output trace mechanism and
11539has
11540a much larger code and data size.
11541
11542  Previous Release:
11543    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
11544    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
11545  Current Release:
11546    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
11547    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
11548
11549
115502) iASL Compiler/Disassembler and Tools:
11551
11552No changes for this release.
11553
11554----------------------------------------
1155508 June 2006. Summary of changes for version 20060608:
11556
115571) ACPI CA Core Subsystem:
11558
11559Converted the locking mutex used for the ACPI hardware to a spinlock.
11560This
11561change should eliminate all problems caused by attempting to acquire a
11562semaphore at interrupt level, and it means that all ACPICA external
11563interfaces that directly access the ACPI hardware can be safely called
11564from
11565interrupt level. OSL code that implements the semaphore interfaces should
11566be
11567able to eliminate any workarounds for being called at interrupt level.
11568
11569Fixed a regression introduced in 20060526 where the ACPI device
11570initialization could be prematurely aborted with an AE_NOT_FOUND if a
11571device
11572did not have an optional _INI method.
11573
11574Fixed an IndexField issue where a write to the Data Register should be
11575limited in size to the AccessSize (width) of the IndexField itself. (BZ
11576433,
11577Fiodor Suietov)
11578
11579Fixed problem reports (Valery Podrezov) integrated:
11580- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
11581
11582Fixed problem reports (Fiodor Suietov) integrated:
11583- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
11584
11585Removed four global mutexes that were obsolete and were no longer being
11586used.
11587
11588Example Code and Data Size: These are the sizes for the OS-independent
11589acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11590debug version of the code includes the debug output trace mechanism and
11591has
11592a much larger code and data size.
11593
11594  Previous Release:
11595    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
11596    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
11597  Current Release:
11598    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
11599    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
11600
11601
116022) iASL Compiler/Disassembler and Tools:
11603
11604Fixed a fault when using -g option (get tables from registry) on Windows
11605machines.
11606
11607Fixed problem reports integrated:
11608- Generate error if CreateField NumBits parameter is zero. (BZ 405)
11609- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
11610Suietov)
11611- Global table revision override (-r) is ignored (BZ 413)
11612
11613----------------------------------------
1161426 May 2006. Summary of changes for version 20060526:
11615
116161) ACPI CA Core Subsystem:
11617
11618Restructured, flattened, and simplified the internal interfaces for
11619namespace object evaluation - resulting in smaller code, less CPU stack
11620use,
11621and fewer interfaces. (With assistance from Mikhail Kouzmich)
11622
11623Fixed a problem with the CopyObject operator where the first parameter
11624was
11625not typed correctly for the parser, interpreter, compiler, and
11626disassembler.
11627Caused various errors and unexpected behavior.
11628
11629Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
11630produced incorrect results with some C compilers. Since the behavior of C
11631compilers when the shift value is larger than the datatype width is
11632apparently not well defined, the interpreter now detects this condition
11633and
11634simply returns zero as expected in all such cases. (BZ 395)
11635
11636Fixed problem reports (Valery Podrezov) integrated:
11637- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
11638- Allow interpreter to handle nested method declarations (BZ 5361)
11639
11640Fixed problem reports (Fiodor Suietov) integrated:
11641- AcpiTerminate doesn't free debug memory allocation list objects (BZ
11642355)
11643- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
11644356)
11645- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
11646- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
11647- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
11648- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
11649- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
11650- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
11651- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
11652365)
11653- Status of the Global Initialization Handler call not used (BZ 366)
11654- Incorrect object parameter to Global Initialization Handler (BZ 367)
11655
11656Example Code and Data Size: These are the sizes for the OS-independent
11657acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11658debug version of the code includes the debug output trace mechanism and
11659has
11660a much larger code and data size.
11661
11662  Previous Release:
11663    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
11664    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
11665  Current Release:
11666    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
11667    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
11668
11669
116702) iASL Compiler/Disassembler and Tools:
11671
11672Modified the parser to allow the names IO, DMA, and IRQ to be used as
11673namespace identifiers with no collision with existing resource descriptor
11674macro names. This provides compatibility with other ASL compilers and is
11675most useful for disassembly/recompilation of existing tables without
11676parse
11677errors. (With assistance from Thomas Renninger)
11678
11679Disassembler: fixed an incorrect disassembly problem with the
11680DataTableRegion and CopyObject operators. Fixed a possible fault during
11681disassembly of some Alias operators.
11682
11683----------------------------------------
1168412 May 2006. Summary of changes for version 20060512:
11685
116861) ACPI CA Core Subsystem:
11687
11688Replaced the AcpiOsQueueForExecution interface with a new interface named
11689AcpiOsExecute. The major difference is that the new interface does not
11690have
11691a Priority parameter, this appeared to be useless and has been replaced
11692by
11693a
11694Type parameter. The Type tells the host what type of execution is being
11695requested, such as global lock handler, notify handler, GPE handler, etc.
11696This allows the host to queue and execute the request as appropriate for
11697the
11698request type, possibly using different work queues and different
11699priorities
11700for the various request types. This enables fixes for multithreading
11701deadlock problems such as BZ #5534, and will require changes to all
11702existing
11703OS interface layers. (Alexey Starikovskiy and Bob Moore)
11704
11705Fixed a possible memory leak associated with the support for the so-
11706called
11707"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
11708Suietov)
11709
11710Fixed a problem with the Load() operator where a table load from an
11711operation region could overwrite an internal table buffer by up to 7
11712bytes
11713and cause alignment faults on IPF systems. (With assistance from Luming
11714Yu)
11715
11716Example Code and Data Size: These are the sizes for the OS-independent
11717acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11718debug version of the code includes the debug output trace mechanism and
11719has
11720a much larger code and data size.
11721
11722  Previous Release:
11723    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
11724    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
11725  Current Release:
11726    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
11727    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
11728
11729
11730
117312) iASL Compiler/Disassembler and Tools:
11732
11733Disassembler: Implemented support to cross reference the internal
11734namespace
11735and automatically generate ASL External() statements for symbols not
11736defined
11737within the current table being disassembled. This will simplify the
11738disassembly and recompilation of interdependent tables such as SSDTs
11739since
11740these statements will no longer have to be added manually.
11741
11742Disassembler: Implemented experimental support to automatically detect
11743invocations of external control methods and generate appropriate
11744External()
11745statements. This is problematic because the AML cannot be correctly
11746parsed
11747until the number of arguments for each control method is known.
11748Currently,
11749standalone method invocations and invocations as the source operand of a
11750Store() statement are supported.
11751
11752Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
11753LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
11754LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
11755more readable and likely closer to the original ASL source.
11756
11757----------------------------------------
1175821 April 2006. Summary of changes for version 20060421:
11759
117601) ACPI CA Core Subsystem:
11761
11762Removed a device initialization optimization introduced in 20051216 where
11763the _STA method was not run unless an _INI was also present for the same
11764device. This optimization could cause problems because it could allow
11765_INI
11766methods to be run within a not-present device subtree. (If a not-present
11767device had no _INI, _STA would not be run, the not-present status would
11768not
11769be discovered, and the children of the device would be incorrectly
11770traversed.)
11771
11772Implemented a new _STA optimization where namespace subtrees that do not
11773contain _INI are identified and ignored during device initialization.
11774Selectively running _STA can significantly improve boot time on large
11775machines (with assistance from Len Brown.)
11776
11777Implemented support for the device initialization case where the returned
11778_STA flags indicate a device not-present but functioning. In this case,
11779_INI
11780is not run, but the device children are examined for presence, as per the
11781ACPI specification.
11782
11783Implemented an additional change to the IndexField support in order to
11784conform to MS behavior. The value written to the Index Register is not
11785simply a byte offset, it is a byte offset in units of the access width of
11786the parent Index Field. (Fiodor Suietov)
11787
11788Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
11789interface is called during the creation of all AML operation regions, and
11790allows the host OS to exert control over what addresses it will allow the
11791AML code to access. Operation Regions whose addresses are disallowed will
11792cause a runtime exception when they are actually accessed (will not
11793affect
11794or abort table loading.) See oswinxf or osunixxf for an example
11795implementation.
11796
11797Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
11798interface allows the host OS to match the various "optional"
11799interface/behavior strings for the _OSI predefined control method as
11800appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
11801for an example implementation.
11802
11803Restructured and corrected various problems in the exception handling
11804code
11805paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
11806(with assistance from Takayoshi Kochi.)
11807
11808Modified the Linux source converter to ignore quoted string literals
11809while
11810converting identifiers from mixed to lower case. This will correct
11811problems
11812with the disassembler and other areas where such strings must not be
11813modified.
11814
11815The ACPI_FUNCTION_* macros no longer require quotes around the function
11816name. This allows the Linux source converter to convert the names, now
11817that
11818the converter ignores quoted strings.
11819
11820Example Code and Data Size: These are the sizes for the OS-independent
11821acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11822debug version of the code includes the debug output trace mechanism and
11823has
11824a much larger code and data size.
11825
11826  Previous Release:
11827
11828    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
11829    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
11830  Current Release:
11831    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
11832    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
11833
11834
118352) iASL Compiler/Disassembler and Tools:
11836
11837Implemented 3 new warnings for iASL, and implemented multiple warning
11838levels
11839(w2 flag).
11840
118411) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
11842not
11843WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
11844check for the possible timeout, a warning is issued.
11845
118462) Useless operators: If an ASL operator does not specify an optional
11847target
11848operand and it also does not use the function return value from the
11849operator, a warning is issued since the operator effectively does
11850nothing.
11851
118523) Unreferenced objects: If a namespace object is created, but never
11853referenced, a warning is issued. This is a warning level 2 since there
11854are
11855cases where this is ok, such as when a secondary table is loaded that
11856uses
11857the unreferenced objects. Even so, care is taken to only flag objects
11858that
11859don't look like they will ever be used. For example, the reserved methods
11860(starting with an underscore) are usually not referenced because it is
11861expected that the OS will invoke them.
11862
11863----------------------------------------
1186431 March 2006. Summary of changes for version 20060331:
11865
118661) ACPI CA Core Subsystem:
11867
11868Implemented header file support for the following additional ACPI tables:
11869ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
11870support,
11871all current and known ACPI tables are now defined in the ACPICA headers
11872and
11873are available for use by device drivers and other software.
11874
11875Implemented support to allow tables that contain ACPI names with invalid
11876characters to be loaded. Previously, this would cause the table load to
11877fail, but since there are several known cases of such tables on existing
11878machines, this change was made to enable ACPI support for them. Also,
11879this
11880matches the behavior of the Microsoft ACPI implementation.
11881
11882Fixed a couple regressions introduced during the memory optimization in
11883the
1188420060317 release. The namespace node definition required additional
11885reorganization and an internal datatype that had been changed to 8-bit
11886was
11887restored to 32-bit. (Valery Podrezov)
11888
11889Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
11890could be passed through to AcpiOsReleaseObject which is unexpected. Such
11891null pointers are now trapped and ignored, matching the behavior of the
11892previous implementation before the deployment of AcpiOsReleaseObject.
11893(Valery Podrezov, Fiodor Suietov)
11894
11895Fixed a memory mapping leak during the deletion of a SystemMemory
11896operation
11897region where a cached memory mapping was not deleted. This became a
11898noticeable problem for operation regions that are defined within
11899frequently
11900used control methods. (Dana Meyers)
11901
11902Reorganized the ACPI table header files into two main files: one for the
11903ACPI tables consumed by the ACPICA core, and another for the
11904miscellaneous
11905ACPI tables that are consumed by the drivers and other software. The
11906various
11907FADT definitions were merged into one common section and three different
11908tables (ACPI 1.0, 1.0+, and 2.0)
11909
11910Example Code and Data Size: These are the sizes for the OS-independent
11911acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11912debug version of the code includes the debug output trace mechanism and
11913has
11914a much larger code and data size.
11915
11916  Previous Release:
11917    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
11918    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
11919  Current Release:
11920    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
11921    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
11922
11923
119242) iASL Compiler/Disassembler and Tools:
11925
11926Disassembler: Implemented support to decode and format all non-AML ACPI
11927tables (tables other than DSDTs and SSDTs.) This includes the new tables
11928added to the ACPICA headers, therefore all current and known ACPI tables
11929are
11930supported.
11931
11932Disassembler: The change to allow ACPI names with invalid characters also
11933enables the disassembly of such tables. Invalid characters within names
11934are
11935changed to '*' to make the name printable; the iASL compiler will still
11936generate an error for such names, however, since this is an invalid ACPI
11937character.
11938
11939Implemented an option for AcpiXtract (-a) to extract all tables found in
11940the
11941input file. The default invocation extracts only the DSDTs and SSDTs.
11942
11943Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
11944makefile for the AcpiXtract utility.
11945
11946----------------------------------------
1194717 March 2006. Summary of changes for version 20060317:
11948
119491) ACPI CA Core Subsystem:
11950
11951Implemented the use of a cache object for all internal namespace nodes.
11952Since there are about 1000 static nodes in a typical system, this will
11953decrease memory use for cache implementations that minimize per-
11954allocation
11955overhead (such as a slab allocator.)
11956
11957Removed the reference count mechanism for internal namespace nodes, since
11958it
11959was deemed unnecessary. This reduces the size of each namespace node by
11960about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
11961case,
11962and 32 bytes for the 64-bit case.
11963
11964Optimized several internal data structures to reduce object size on 64-
11965bit
11966platforms by packing data within the 64-bit alignment. This includes the
11967frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
11968instances corresponding to the namespace objects.
11969
11970Added two new strings for the predefined _OSI method: "Windows 2001.1
11971SP1"
11972and "Windows 2006".
11973
11974Split the allocation tracking mechanism out to a separate file, from
11975utalloc.c to uttrack.c. This mechanism appears to be only useful for
11976application-level code. Kernels may wish to not include uttrack.c in
11977distributions.
11978
11979Removed all remnants of the obsolete ACPI_REPORT_* macros and the
11980associated
11981code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
11982macros.)
11983
11984Code and Data Size: These are the sizes for the acpica.lib produced by
11985the
11986Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11987ACPI
11988driver or OSPM code. The debug version of the code includes the debug
11989output
11990trace mechanism and has a much larger code and data size. Note that these
11991values will vary depending on the efficiency of the compiler and the
11992compiler options used during generation.
11993
11994  Previous Release:
11995    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11996    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
11997  Current Release:
11998    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
11999    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
12000
12001
120022) iASL Compiler/Disassembler and Tools:
12003
12004Implemented an ANSI C version of the acpixtract utility. This version
12005will
12006automatically extract the DSDT and all SSDTs from the input acpidump text
12007file and dump the binary output to separate files. It can also display a
12008summary of the input file including the headers for each table found and
12009will extract any single ACPI table, with any signature. (See
12010source/tools/acpixtract)
12011
12012----------------------------------------
1201310 March 2006. Summary of changes for version 20060310:
12014
120151) ACPI CA Core Subsystem:
12016
12017Tagged all external interfaces to the subsystem with the new
12018ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
12019assist
12020kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
12021macro. The default definition is NULL.
12022
12023Added the ACPI_THREAD_ID type for the return value from
12024AcpiOsGetThreadId.
12025This allows the host to define this as necessary to simplify kernel
12026integration. The default definition is ACPI_NATIVE_UINT.
12027
12028Fixed two interpreter problems related to error processing, the deletion
12029of
12030objects, and placing invalid pointers onto the internal operator result
12031stack. BZ 6028, 6151 (Valery Podrezov)
12032
12033Increased the reference count threshold where a warning is emitted for
12034large
12035reference counts in order to eliminate unnecessary warnings on systems
12036with
12037large namespaces (especially 64-bit.) Increased the value from 0x400 to
120380x800.
12039
12040Due to universal disagreement as to the meaning of the 'c' in the
12041calloc()
12042function, the ACPI_MEM_CALLOCATE macro has been renamed to
12043ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
12044ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
12045ACPI_FREE.
12046
12047Code and Data Size: These are the sizes for the acpica.lib produced by
12048the
12049Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12050ACPI
12051driver or OSPM code. The debug version of the code includes the debug
12052output
12053trace mechanism and has a much larger code and data size. Note that these
12054values will vary depending on the efficiency of the compiler and the
12055compiler options used during generation.
12056
12057  Previous Release:
12058    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
12059    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
12060  Current Release:
12061    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12062    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
12063
12064
120652) iASL Compiler/Disassembler:
12066
12067Disassembler: implemented support for symbolic resource descriptor
12068references. If a CreateXxxxField operator references a fixed offset
12069within
12070a
12071resource descriptor, a name is assigned to the descriptor and the offset
12072is
12073translated to the appropriate resource tag and pathname. The addition of
12074this support brings the disassembled code very close to the original ASL
12075source code and helps eliminate run-time errors when the disassembled
12076code
12077is modified (and recompiled) in such a way as to invalidate the original
12078fixed offsets.
12079
12080Implemented support for a Descriptor Name as the last parameter to the
12081ASL
12082Register() macro. This parameter was inadvertently left out of the ACPI
12083specification, and will be added for ACPI 3.0b.
12084
12085Fixed a problem where the use of the "_OSI" string (versus the full path
12086"\_OSI") caused an internal compiler error. ("No back ptr to op")
12087
12088Fixed a problem with the error message that occurs when an invalid string
12089is
12090used for a _HID object (such as one with an embedded asterisk:
12091"*PNP010A".)
12092The correct message is now displayed.
12093
12094----------------------------------------
1209517 February 2006. Summary of changes for version 20060217:
12096
120971) ACPI CA Core Subsystem:
12098
12099Implemented a change to the IndexField support to match the behavior of
12100the
12101Microsoft AML interpreter. The value written to the Index register is now
12102a
12103byte offset, no longer an index based upon the width of the Data
12104register.
12105This should fix IndexField problems seen on some machines where the Data
12106register is not exactly one byte wide. The ACPI specification will be
12107clarified on this point.
12108
12109Fixed a problem where several resource descriptor types could overrun the
12110internal descriptor buffer due to size miscalculation: VendorShort,
12111VendorLong, and Interrupt. This was noticed on IA64 machines, but could
12112affect all platforms.
12113
12114Fixed a problem where individual resource descriptors were misaligned
12115within
12116the internal buffer, causing alignment faults on IA64 platforms.
12117
12118Code and Data Size: These are the sizes for the acpica.lib produced by
12119the
12120Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12121ACPI
12122driver or OSPM code. The debug version of the code includes the debug
12123output
12124trace mechanism and has a much larger code and data size. Note that these
12125values will vary depending on the efficiency of the compiler and the
12126compiler options used during generation.
12127
12128  Previous Release:
12129    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12130    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
12131  Current Release:
12132    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
12133    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
12134
12135
121362) iASL Compiler/Disassembler:
12137
12138Implemented support for new reserved names: _WDG and _WED are Microsoft
12139extensions for Windows Instrumentation Management, _TDL is a new ACPI-
12140defined method (Throttling Depth Limit.)
12141
12142Fixed a problem where a zero-length VendorShort or VendorLong resource
12143descriptor was incorrectly emitted as a descriptor of length one.
12144
12145----------------------------------------
1214610 February 2006. Summary of changes for version 20060210:
12147
121481) ACPI CA Core Subsystem:
12149
12150Removed a couple of extraneous ACPI_ERROR messages that appeared during
12151normal execution. These became apparent after the conversion from
12152ACPI_DEBUG_PRINT.
12153
12154Fixed a problem where the CreateField operator could hang if the BitIndex
12155or
12156NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
12157
12158Fixed a problem where a DeRefOf operation on a buffer object incorrectly
12159failed with an exception. This also fixes a couple of related RefOf and
12160DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
12161
12162Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
12163of
12164AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
12165BZ
121665480)
12167
12168Implemented a memory cleanup at the end of the execution of each
12169iteration
12170of an AML While() loop, preventing the accumulation of outstanding
12171objects.
12172(Valery Podrezov, BZ 5427)
12173
12174Eliminated a chunk of duplicate code in the object resolution code.
12175(Valery
12176Podrezov, BZ 5336)
12177
12178Fixed several warnings during the 64-bit code generation.
12179
12180The AcpiSrc source code conversion tool now inserts one line of
12181whitespace
12182after an if() statement that is followed immediately by a comment,
12183improving
12184readability of the Linux code.
12185
12186Code and Data Size: The current and previous library sizes for the core
12187subsystem are shown below. These are the code and data sizes for the
12188acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12189These
12190values do not include any ACPI driver or OSPM code. The debug version of
12191the
12192code includes the debug output trace mechanism and has a much larger code
12193and data size. Note that these values will vary depending on the
12194efficiency
12195of the compiler and the compiler options used during generation.
12196
12197  Previous Release:
12198    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
12199    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
12200  Current Release:
12201    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12202    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
12203
12204
122052) iASL Compiler/Disassembler:
12206
12207Fixed a problem with the disassembly of a BankField operator with a
12208complex
12209expression for the BankValue parameter.
12210
12211----------------------------------------
1221227 January 2006. Summary of changes for version 20060127:
12213
122141) ACPI CA Core Subsystem:
12215
12216Implemented support in the Resource Manager to allow unresolved
12217namestring
12218references within resource package objects for the _PRT method. This
12219support
12220is in addition to the previously implemented unresolved reference support
12221within the AML parser. If the interpreter slack mode is enabled, these
12222unresolved references will be passed through to the caller as a NULL
12223package
12224entry.
12225
12226Implemented and deployed new macros and functions for error and warning
12227messages across the subsystem. These macros are simpler and generate less
12228code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
12229ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
12230macros remain defined to allow ACPI drivers time to migrate to the new
12231macros.
12232
12233Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
12234the
12235Acquire/Release Lock OSL interfaces.
12236
12237Fixed a problem where Alias ASL operators are sometimes not correctly
12238resolved, in both the interpreter and the iASL compiler.
12239
12240Fixed several problems with the implementation of the
12241ConcatenateResTemplate
12242ASL operator. As per the ACPI specification, zero length buffers are now
12243treated as a single EndTag. One-length buffers always cause a fatal
12244exception. Non-zero length buffers that do not end with a full 2-byte
12245EndTag
12246cause a fatal exception.
12247
12248Fixed a possible structure overwrite in the AcpiGetObjectInfo external
12249interface. (With assistance from Thomas Renninger)
12250
12251Code and Data Size: The current and previous library sizes for the core
12252subsystem are shown below. These are the code and data sizes for the
12253acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12254These
12255values do not include any ACPI driver or OSPM code. The debug version of
12256the
12257code includes the debug output trace mechanism and has a much larger code
12258and data size. Note that these values will vary depending on the
12259efficiency
12260of the compiler and the compiler options used during generation.
12261
12262  Previous Release:
12263    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
12264    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
12265  Current Release:
12266    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
12267    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
12268
12269
122702) iASL Compiler/Disassembler:
12271
12272Fixed an internal error that was generated for any forward references to
12273ASL
12274Alias objects.
12275
12276----------------------------------------
1227713 January 2006. Summary of changes for version 20060113:
12278
122791) ACPI CA Core Subsystem:
12280
12281Added 2006 copyright to all module headers and signons. This affects
12282virtually every file in the ACPICA core subsystem, iASL compiler, and the
12283utilities.
12284
12285Enhanced the ACPICA error reporting in order to simplify user migration
12286to
12287the non-debug version of ACPICA. Replaced all instances of the
12288ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
12289debug
12290levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
12291respectively. This preserves all error and warning messages in the non-
12292debug
12293version of the ACPICA code (this has been referred to as the "debug lite"
12294option.) Over 200 cases were converted to create a total of over 380
12295error/warning messages across the ACPICA code. This increases the code
12296and
12297data size of the default non-debug version of the code somewhat (about
1229813K),
12299but all error/warning reporting may be disabled if desired (and code
12300eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
12301configuration option. The size of the debug version of ACPICA remains
12302about
12303the same.
12304
12305Fixed a memory leak within the AML Debugger "Set" command. One object was
12306not properly deleted for every successful invocation of the command.
12307
12308Code and Data Size: The current and previous library sizes for the core
12309subsystem are shown below. These are the code and data sizes for the
12310acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12311These
12312values do not include any ACPI driver or OSPM code. The debug version of
12313the
12314code includes the debug output trace mechanism and has a much larger code
12315and data size. Note that these values will vary depending on the
12316efficiency
12317of the compiler and the compiler options used during generation.
12318
12319  Previous Release:
12320    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
12321    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
12322  Current Release:
12323    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
12324    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
12325
12326
123272) iASL Compiler/Disassembler:
12328
12329The compiler now officially supports the ACPI 3.0a specification that was
12330released on December 30, 2005. (Specification is available at
12331www.acpi.info)
12332
12333----------------------------------------
1233416 December 2005. Summary of changes for version 20051216:
12335
123361) ACPI CA Core Subsystem:
12337
12338Implemented optional support to allow unresolved names within ASL Package
12339objects. A null object is inserted in the package when a named reference
12340cannot be located in the current namespace. Enabled via the interpreter
12341slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
12342machines
12343that contain such code.
12344
12345Implemented an optimization to the initialization sequence that can
12346improve
12347boot time. During ACPI device initialization, the _STA method is now run
12348if
12349and only if the _INI method exists. The _STA method is used to determine
12350if
12351the device is present; An _INI can only be run if _STA returns present,
12352but
12353it is a waste of time to run the _STA method if the _INI does not exist.
12354(Prototype and assistance from Dong Wei)
12355
12356Implemented use of the C99 uintptr_t for the pointer casting macros if it
12357is
12358available in the current compiler. Otherwise, the default (void *) cast
12359is
12360used as before.
12361
12362Fixed some possible memory leaks found within the execution path of the
12363Break, Continue, If, and CreateField operators. (Valery Podrezov)
12364
12365Fixed a problem introduced in the 20051202 release where an exception is
12366generated during method execution if a control method attempts to declare
12367another method.
12368
12369Moved resource descriptor string constants that are used by both the AML
12370disassembler and AML debugger to the common utilities directory so that
12371these components are independent.
12372
12373Implemented support in the AcpiExec utility (-e switch) to globally
12374ignore
12375exceptions during control method execution (method is not aborted.)
12376
12377Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
12378generation.
12379
12380Code and Data Size: The current and previous library sizes for the core
12381subsystem are shown below. These are the code and data sizes for the
12382acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12383These
12384values do not include any ACPI driver or OSPM code. The debug version of
12385the
12386code includes the debug output trace mechanism and has a much larger code
12387and data size. Note that these values will vary depending on the
12388efficiency
12389of the compiler and the compiler options used during generation.
12390
12391  Previous Release:
12392    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12393    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
12394  Current Release:
12395    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
12396    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
12397
12398
123992) iASL Compiler/Disassembler:
12400
12401Fixed a problem where a CPU stack overflow fault could occur if a
12402recursive
12403method call was made from within a Return statement.
12404
12405----------------------------------------
1240602 December 2005. Summary of changes for version 20051202:
12407
124081) ACPI CA Core Subsystem:
12409
12410Modified the parsing of control methods to no longer create namespace
12411objects during the first pass of the parse. Objects are now created only
12412during the execute phase, at the moment the namespace creation operator
12413is
12414encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
12415This
12416should eliminate ALREADY_EXISTS exceptions seen on some machines where
12417reentrant control methods are protected by an AML mutex. The mutex will
12418now
12419correctly block multiple threads from attempting to create the same
12420object
12421more than once.
12422
12423Increased the number of available Owner Ids for namespace object tracking
12424from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
12425on
12426some machines with a large number of ACPI tables (either static or
12427dynamic).
12428
12429Fixed a problem with the AcpiExec utility where a fault could occur when
12430the
12431-b switch (batch mode) is used.
12432
12433Enhanced the namespace dump routine to output the owner ID for each
12434namespace object.
12435
12436Code and Data Size: The current and previous library sizes for the core
12437subsystem are shown below. These are the code and data sizes for the
12438acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12439These
12440values do not include any ACPI driver or OSPM code. The debug version of
12441the
12442code includes the debug output trace mechanism and has a much larger code
12443and data size. Note that these values will vary depending on the
12444efficiency
12445of the compiler and the compiler options used during generation.
12446
12447  Previous Release:
12448    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12449    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12450  Current Release:
12451    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12452    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
12453
12454
124552) iASL Compiler/Disassembler:
12456
12457Fixed a parse error during compilation of certain Switch/Case constructs.
12458To
12459simplify the parse, the grammar now allows for multiple Default
12460statements
12461and this error is now detected and flagged during the analysis phase.
12462
12463Disassembler: The disassembly now includes the contents of the original
12464table header within a comment at the start of the file. This includes the
12465name and version of the original ASL compiler.
12466
12467----------------------------------------
1246817 November 2005. Summary of changes for version 20051117:
12469
124701) ACPI CA Core Subsystem:
12471
12472Fixed a problem in the AML parser where the method thread count could be
12473decremented below zero if any errors occurred during the method parse
12474phase.
12475This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
12476machines.
12477This also fixed a related regression with the mechanism that detects and
12478corrects methods that cannot properly handle reentrancy (related to the
12479deployment of the new OwnerId mechanism.)
12480
12481Eliminated the pre-parsing of control methods (to detect errors) during
12482table load. Related to the problem above, this was causing unwind issues
12483if
12484any errors occurred during the parse, and it seemed to be overkill. A
12485table
12486load should not be aborted if there are problems with any single control
12487method, thus rendering this feature rather pointless.
12488
12489Fixed a problem with the new table-driven resource manager where an
12490internal
12491buffer overflow could occur for small resource templates.
12492
12493Implemented a new external interface, AcpiGetVendorResource. This
12494interface
12495will find and return a vendor-defined resource descriptor within a _CRS
12496or
12497_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
12498Helgaas.
12499
12500Removed the length limit (200) on string objects as per the upcoming ACPI
125013.0A specification. This affects the following areas of the interpreter:
125021)
12503any implicit conversion of a Buffer to a String, 2) a String object
12504result
12505of the ASL Concatenate operator, 3) the String object result of the ASL
12506ToString operator.
12507
12508Fixed a problem in the Windows OS interface layer (OSL) where a
12509WAIT_FOREVER
12510on a semaphore object would incorrectly timeout. This allows the
12511multithreading features of the AcpiExec utility to work properly under
12512Windows.
12513
12514Updated the Linux makefiles for the iASL compiler and AcpiExec to include
12515the recently added file named "utresrc.c".
12516
12517Code and Data Size: The current and previous library sizes for the core
12518subsystem are shown below. These are the code and data sizes for the
12519acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12520These
12521values do not include any ACPI driver or OSPM code. The debug version of
12522the
12523code includes the debug output trace mechanism and has a much larger code
12524and data size. Note that these values will vary depending on the
12525efficiency
12526of the compiler and the compiler options used during generation.
12527
12528  Previous Release:
12529    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
12530    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12531  Current Release:
12532    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12533    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12534
12535
125362) iASL Compiler/Disassembler:
12537
12538Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
12539specification. For the iASL compiler, this means that string literals
12540within
12541the source ASL can be of any length.
12542
12543Enhanced the listing output to dump the AML code for resource descriptors
12544immediately after the ASL code for each descriptor, instead of in a block
12545at
12546the end of the entire resource template.
12547
12548Enhanced the compiler debug output to dump the entire original parse tree
12549constructed during the parse phase, before any transforms are applied to
12550the
12551tree. The transformed tree is dumped also.
12552
12553----------------------------------------
1255402 November 2005. Summary of changes for version 20051102:
12555
125561) ACPI CA Core Subsystem:
12557
12558Modified the subsystem initialization sequence to improve GPE support.
12559The
12560GPE initialization has been split into two parts in order to defer
12561execution
12562of the _PRW methods (Power Resources for Wake) until after the hardware
12563is
12564fully initialized and the SCI handler is installed. This allows the _PRW
12565methods to access fields protected by the Global Lock. This will fix
12566systems
12567where a NO_GLOBAL_LOCK exception has been seen during initialization.
12568
12569Converted the ACPI internal object disassemble and display code within
12570the
12571AML debugger to fully table-driven operation, reducing code size and
12572increasing maintainability.
12573
12574Fixed a regression with the ConcatenateResTemplate() ASL operator
12575introduced
12576in the 20051021 release.
12577
12578Implemented support for "local" internal ACPI object types within the
12579debugger "Object" command and the AcpiWalkNamespace external interfaces.
12580These local types include RegionFields, BankFields, IndexFields, Alias,
12581and
12582reference objects.
12583
12584Moved common AML resource handling code into a new file, "utresrc.c".
12585This
12586code is shared by both the Resource Manager and the AML Debugger.
12587
12588Code and Data Size: The current and previous library sizes for the core
12589subsystem are shown below. These are the code and data sizes for the
12590acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12591These
12592values do not include any ACPI driver or OSPM code. The debug version of
12593the
12594code includes the debug output trace mechanism and has a much larger code
12595and data size. Note that these values will vary depending on the
12596efficiency
12597of the compiler and the compiler options used during generation.
12598
12599  Previous Release:
12600    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
12601    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
12602  Current Release:
12603    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
12604    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12605
12606
126072) iASL Compiler/Disassembler:
12608
12609Fixed a problem with very large initializer lists (more than 4000
12610elements)
12611for both Buffer and Package objects where the parse stack could overflow.
12612
12613Enhanced the pre-compile source code scan for non-ASCII characters to
12614ignore
12615characters within comment fields. The scan is now always performed and is
12616no
12617longer optional, detecting invalid characters within a source file
12618immediately rather than during the parse phase or later.
12619
12620Enhanced the ASL grammar definition to force early reductions on all
12621list-
12622style grammar elements so that the overall parse stack usage is greatly
12623reduced. This should improve performance and reduce the possibility of
12624parse
12625stack overflow.
12626
12627Eliminated all reduce/reduce conflicts in the iASL parser generation.
12628Also,
12629with the addition of a %expected statement, the compiler generates from
12630source with no warnings.
12631
12632Fixed a possible segment fault in the disassembler if the input filename
12633does not contain a "dot" extension (Thomas Renninger).
12634
12635----------------------------------------
1263621 October 2005. Summary of changes for version 20051021:
12637
126381) ACPI CA Core Subsystem:
12639
12640Implemented support for the EM64T and other x86-64 processors. This
12641essentially entails recognizing that these processors support non-aligned
12642memory transfers. Previously, all 64-bit processors were assumed to lack
12643hardware support for non-aligned transfers.
12644
12645Completed conversion of the Resource Manager to nearly full table-driven
12646operation. Specifically, the resource conversion code (convert AML to
12647internal format and the reverse) and the debug code to dump internal
12648resource descriptors are fully table-driven, reducing code and data size
12649and
12650improving maintainability.
12651
12652The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
12653word
12654on 64-bit processors instead of a fixed 32-bit word. (With assistance
12655from
12656Alexey Starikovskiy)
12657
12658Implemented support within the resource conversion code for the Type-
12659Specific byte within the various ACPI 3.0 *WordSpace macros.
12660
12661Fixed some issues within the resource conversion code for the type-
12662specific
12663flags for both Memory and I/O address resource descriptors. For Memory,
12664implemented support for the MTP and TTP flags. For I/O, split the TRS and
12665TTP flags into two separate fields.
12666
12667Code and Data Size: The current and previous library sizes for the core
12668subsystem are shown below. These are the code and data sizes for the
12669acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12670These
12671values do not include any ACPI driver or OSPM code. The debug version of
12672the
12673code includes the debug output trace mechanism and has a much larger code
12674and data size. Note that these values will vary depending on the
12675efficiency
12676of the compiler and the compiler options used during generation.
12677
12678  Previous Release:
12679    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
12680    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
12681  Current Release:
12682    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
12683    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
12684
12685
12686
126872) iASL Compiler/Disassembler:
12688
12689Relaxed a compiler restriction that disallowed a ResourceIndex byte if
12690the
12691corresponding ResourceSource string was not also present in a resource
12692descriptor declaration. This restriction caused problems with existing
12693AML/ASL code that includes the Index byte without the string. When such
12694AML
12695was disassembled, it could not be compiled without modification. Further,
12696the modified code created a resource template with a different size than
12697the
12698original, breaking code that used fixed offsets into the resource
12699template
12700buffer.
12701
12702Removed a recent feature of the disassembler to ignore a lone
12703ResourceIndex
12704byte. This byte is now emitted if present so that the exact AML can be
12705reproduced when the disassembled code is recompiled.
12706
12707Improved comments and text alignment for the resource descriptor code
12708emitted by the disassembler.
12709
12710Implemented disassembler support for the ACPI 3.0 AccessSize field within
12711a
12712Register() resource descriptor.
12713
12714----------------------------------------
1271530 September 2005. Summary of changes for version 20050930:
12716
127171) ACPI CA Core Subsystem:
12718
12719Completed a major overhaul of the Resource Manager code - specifically,
12720optimizations in the area of the AML/internal resource conversion code.
12721The
12722code has been optimized to simplify and eliminate duplicated code, CPU
12723stack
12724use has been decreased by optimizing function parameters and local
12725variables, and naming conventions across the manager have been
12726standardized
12727for clarity and ease of maintenance (this includes function, parameter,
12728variable, and struct/typedef names.) The update may force changes in some
12729driver code, depending on how resources are handled by the host OS.
12730
12731All Resource Manager dispatch and information tables have been moved to a
12732single location for clarity and ease of maintenance. One new file was
12733created, named "rsinfo.c".
12734
12735The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
12736guarantee that the argument is not evaluated twice, making them less
12737prone
12738to macro side-effects. However, since there exists the possibility of
12739additional stack use if a particular compiler cannot optimize them (such
12740as
12741in the debug generation case), the original macros are optionally
12742available.
12743Note that some invocations of the return_VALUE macro may now cause size
12744mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
12745to
12746eliminate these. (From Randy Dunlap)
12747
12748Implemented a new mechanism to enable debug tracing for individual
12749control
12750methods. A new external interface, AcpiDebugTrace, is provided to enable
12751this mechanism. The intent is to allow the host OS to easily enable and
12752disable tracing for problematic control methods. This interface can be
12753easily exposed to a user or debugger interface if desired. See the file
12754psxface.c for details.
12755
12756AcpiUtCallocate will now return a valid pointer if a length of zero is
12757specified - a length of one is used and a warning is issued. This matches
12758the behavior of AcpiUtAllocate.
12759
12760Code and Data Size: The current and previous library sizes for the core
12761subsystem are shown below. These are the code and data sizes for the
12762acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12763These
12764values do not include any ACPI driver or OSPM code. The debug version of
12765the
12766code includes the debug output trace mechanism and has a much larger code
12767and data size. Note that these values will vary depending on the
12768efficiency
12769of the compiler and the compiler options used during generation.
12770
12771  Previous Release:
12772    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
12773    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
12774  Current Release:
12775    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
12776    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
12777
12778
127792) iASL Compiler/Disassembler:
12780
12781A remark is issued if the effective compile-time length of a package or
12782buffer is zero. Previously, this was a warning.
12783
12784----------------------------------------
1278516 September 2005. Summary of changes for version 20050916:
12786
127871) ACPI CA Core Subsystem:
12788
12789Fixed a problem within the Resource Manager where support for the Generic
12790Register descriptor was not fully implemented. This descriptor is now
12791fully
12792recognized, parsed, disassembled, and displayed.
12793
12794Completely restructured the Resource Manager code to utilize table-driven
12795dispatch and lookup, eliminating many of the large switch() statements.
12796This
12797reduces overall subsystem code size and code complexity. Affects the
12798resource parsing and construction, disassembly, and debug dump output.
12799
12800Cleaned up and restructured the debug dump output for all resource
12801descriptors. Improved readability of the output and reduced code size.
12802
12803Fixed a problem where changes to internal data structures caused the
12804optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
12805
12806Code and Data Size: The current and previous library sizes for the core
12807subsystem are shown below. These are the code and data sizes for the
12808acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12809These
12810values do not include any ACPI driver or OSPM code. The debug version of
12811the
12812code includes the debug output trace mechanism and has a much larger code
12813and data size. Note that these values will vary depending on the
12814efficiency
12815of the compiler and the compiler options used during generation.
12816
12817  Previous Release:
12818    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
12819    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
12820  Current Release:
12821    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
12822    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
12823
12824
128252) iASL Compiler/Disassembler:
12826
12827Updated the disassembler to automatically insert an EndDependentFn()
12828macro
12829into the ASL stream if this macro is missing in the original AML code,
12830simplifying compilation of the resulting ASL module.
12831
12832Fixed a problem in the disassembler where a disassembled ResourceSource
12833string (within a large resource descriptor) was not surrounded by quotes
12834and
12835not followed by a comma, causing errors when the resulting ASL module was
12836compiled. Also, escape sequences within a ResourceSource string are now
12837handled correctly (especially "\\")
12838
12839----------------------------------------
1284002 September 2005. Summary of changes for version 20050902:
12841
128421) ACPI CA Core Subsystem:
12843
12844Fixed a problem with the internal Owner ID allocation and deallocation
12845mechanisms for control method execution and recursive method invocation.
12846This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
12847messages seen on some systems. Recursive method invocation depth is
12848currently limited to 255. (Alexey Starikovskiy)
12849
12850Completely eliminated all vestiges of support for the "module-level
12851executable code" until this support is fully implemented and debugged.
12852This
12853should eliminate the NO_RETURN_VALUE exceptions seen during table load on
12854some systems that invoke this support.
12855
12856Fixed a problem within the resource manager code where the transaction
12857flags
12858for a 64-bit address descriptor were handled incorrectly in the type-
12859specific flag byte.
12860
12861Consolidated duplicate code within the address descriptor resource
12862manager
12863code, reducing overall subsystem code size.
12864
12865Fixed a fault when using the AML debugger "disassemble" command to
12866disassemble individual control methods.
12867
12868Removed references to the "release_current" directory within the Unix
12869release package.
12870
12871Code and Data Size: The current and previous core subsystem library sizes
12872are shown below. These are the code and data sizes for the acpica.lib
12873produced by the Microsoft Visual C++ 6.0 compiler. These values do not
12874include any ACPI driver or OSPM code. The debug version of the code
12875includes
12876the debug output trace mechanism and has a much larger code and data
12877size.
12878Note that these values will vary depending on the efficiency of the
12879compiler
12880and the compiler options used during generation.
12881
12882  Previous Release:
12883    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12884    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
12885  Current Release:
12886    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
12887    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
12888
12889
128902) iASL Compiler/Disassembler:
12891
12892Implemented an error check for illegal duplicate values in the interrupt
12893and
12894dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
12895Interrupt().
12896
12897Implemented error checking for the Irq() and IrqNoFlags() macros to
12898detect
12899too many values in the interrupt list (16 max) and invalid values in the
12900list (range 0 - 15)
12901
12902The maximum length string literal within an ASL file is now restricted to
12903200 characters as per the ACPI specification.
12904
12905Fixed a fault when using the -ln option (generate namespace listing).
12906
12907Implemented an error check to determine if a DescriptorName within a
12908resource descriptor has already been used within the current scope.
12909
12910----------------------------------------
1291115 August 2005.  Summary of changes for version 20050815:
12912
129131) ACPI CA Core Subsystem:
12914
12915Implemented a full bytewise compare to determine if a table load request
12916is
12917attempting to load a duplicate table. The compare is performed if the
12918table
12919signatures and table lengths match. This will allow different tables with
12920the same OEM Table ID and revision to be loaded - probably against the
12921ACPI
12922specification, but discovered in the field nonetheless.
12923
12924Added the changes.txt logfile to each of the zipped release packages.
12925
12926Code and Data Size: Current and previous core subsystem library sizes are
12927shown below. These are the code and data sizes for the acpica.lib
12928produced
12929by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12930any ACPI driver or OSPM code. The debug version of the code includes the
12931debug output trace mechanism and has a much larger code and data size.
12932Note
12933that these values will vary depending on the efficiency of the compiler
12934and
12935the compiler options used during generation.
12936
12937  Previous Release:
12938    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12939    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
12940  Current Release:
12941    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12942    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
12943
12944
129452) iASL Compiler/Disassembler:
12946
12947Fixed a problem where incorrect AML code could be generated for Package
12948objects if optimization is disabled (via the -oa switch).
12949
12950Fixed a problem with where incorrect AML code is generated for variable-
12951length packages when the package length is not specified and the number
12952of
12953initializer values is greater than 255.
12954
12955
12956----------------------------------------
1295729 July 2005.  Summary of changes for version 20050729:
12958
129591) ACPI CA Core Subsystem:
12960
12961Implemented support to ignore an attempt to install/load a particular
12962ACPI
12963table more than once. Apparently there exists BIOS code that repeatedly
12964attempts to load the same SSDT upon certain events. With assistance from
12965Venkatesh Pallipadi.
12966
12967Restructured the main interface to the AML parser in order to correctly
12968handle all exceptional conditions. This will prevent leakage of the
12969OwnerId
12970resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
12971some
12972machines. With assistance from Alexey Starikovskiy.
12973
12974Support for "module level code" has been disabled in this version due to
12975a
12976number of issues that have appeared on various machines. The support can
12977be
12978enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
12979compilation. When the issues are fully resolved, the code will be enabled
12980by
12981default again.
12982
12983Modified the internal functions for debug print support to define the
12984FunctionName parameter as a (const char *) for compatibility with
12985compiler
12986built-in macros such as __FUNCTION__, etc.
12987
12988Linted the entire ACPICA source tree for both 32-bit and 64-bit.
12989
12990Implemented support to display an object count summary for the AML
12991Debugger
12992commands Object and Methods.
12993
12994Code and Data Size: Current and previous core subsystem library sizes are
12995shown below. These are the code and data sizes for the acpica.lib
12996produced
12997by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12998any ACPI driver or OSPM code. The debug version of the code includes the
12999debug output trace mechanism and has a much larger code and data size.
13000Note
13001that these values will vary depending on the efficiency of the compiler
13002and
13003the compiler options used during generation.
13004
13005  Previous Release:
13006    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
13007    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
13008  Current Release:
13009    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
13010    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
13011
13012
130132) iASL Compiler/Disassembler:
13014
13015Fixed a regression that appeared in the 20050708 version of the compiler
13016where an error message was inadvertently emitted for invocations of the
13017_OSI
13018reserved control method.
13019
13020----------------------------------------
1302108 July 2005.  Summary of changes for version 20050708:
13022
130231) ACPI CA Core Subsystem:
13024
13025The use of the CPU stack in the debug version of the subsystem has been
13026considerably reduced. Previously, a debug structure was declared in every
13027function that used the debug macros. This structure has been removed in
13028favor of declaring the individual elements as parameters to the debug
13029functions. This reduces the cumulative stack use during nested execution
13030of
13031ACPI function calls at the cost of a small increase in the code size of
13032the
13033debug version of the subsystem. With assistance from Alexey Starikovskiy
13034and
13035Len Brown.
13036
13037Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
13038headers to define a macro that will return the current function name at
13039runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
13040by
13041the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
13042compiler-dependent header, the function name is saved on the CPU stack
13043(one
13044pointer per function.) This mechanism is used because apparently there
13045exists no standard ANSI-C defined macro that that returns the function
13046name.
13047
13048Redesigned and reimplemented the "Owner ID" mechanism used to track
13049namespace objects created/deleted by ACPI tables and control method
13050execution. A bitmap is now used to allocate and free the IDs, thus
13051solving
13052the wraparound problem present in the previous implementation. The size
13053of
13054the namespace node descriptor was reduced by 2 bytes as a result (Alexey
13055Starikovskiy).
13056
13057Removed the UINT32_BIT and UINT16_BIT types that were used for the
13058bitfield
13059flag definitions within the headers for the predefined ACPI tables. These
13060have been replaced by UINT8_BIT in order to increase the code portability
13061of
13062the subsystem. If the use of UINT8 remains a problem, we may be forced to
13063eliminate bitfields entirely because of a lack of portability.
13064
13065Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
13066This
13067is a frequently used function and this improvement increases the
13068performance
13069of the entire subsystem (Alexey Starikovskiy).
13070
13071Fixed several possible memory leaks and the inverse - premature object
13072deletion (Alexey Starikovskiy).
13073
13074Code and Data Size: Current and previous core subsystem library sizes are
13075shown below. These are the code and data sizes for the acpica.lib
13076produced
13077by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13078any ACPI driver or OSPM code. The debug version of the code includes the
13079debug output trace mechanism and has a much larger code and data size.
13080Note
13081that these values will vary depending on the efficiency of the compiler
13082and
13083the compiler options used during generation.
13084
13085  Previous Release:
13086    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
13087    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
13088  Current Release:
13089    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
13090    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
13091
13092----------------------------------------
1309324 June 2005.  Summary of changes for version 20050624:
13094
130951) ACPI CA Core Subsystem:
13096
13097Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
13098the host-defined cache object. This allows the OSL implementation to
13099define
13100and type this object in any manner desired, simplifying the OSL
13101implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
13102Linux, and should be defined in the OS-specific header file for other
13103operating systems as required.
13104
13105Changed the interface to AcpiOsAcquireObject to directly return the
13106requested object as the function return (instead of ACPI_STATUS.) This
13107change was made for performance reasons, since this is the purpose of the
13108interface in the first place. AcpiOsAcquireObject is now similar to the
13109AcpiOsAllocate interface.
13110
13111Implemented a new AML debugger command named Businfo. This command
13112displays
13113information about all devices that have an associate _PRT object. The
13114_ADR,
13115_HID, _UID, and _CID are displayed for these devices.
13116
13117Modified the initialization sequence in AcpiInitializeSubsystem to call
13118the
13119OSL interface AcpiOslInitialize first, before any local initialization.
13120This
13121change was required because the global initialization now calls OSL
13122interfaces.
13123
13124Enhanced the Dump command to display the entire contents of Package
13125objects
13126(including all sub-objects and their values.)
13127
13128Restructured the code base to split some files because of size and/or
13129because the code logically belonged in a separate file. New files are
13130listed
13131below. All makefiles and project files included in the ACPI CA release
13132have
13133been updated.
13134    utilities/utcache.c           /* Local cache interfaces */
13135    utilities/utmutex.c           /* Local mutex support */
13136    utilities/utstate.c           /* State object support */
13137    interpreter/parser/psloop.c   /* Main AML parse loop */
13138
13139Code and Data Size: Current and previous core subsystem library sizes are
13140shown below. These are the code and data sizes for the acpica.lib
13141produced
13142by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13143any ACPI driver or OSPM code. The debug version of the code includes the
13144debug output trace mechanism and has a much larger code and data size.
13145Note
13146that these values will vary depending on the efficiency of the compiler
13147and
13148the compiler options used during generation.
13149
13150  Previous Release:
13151    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
13152    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
13153  Current Release:
13154    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
13155    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
13156
13157
131582) iASL Compiler/Disassembler:
13159
13160Fixed a regression introduced in version 20050513 where the use of a
13161Package
13162object within a Case() statement caused a compile time exception. The
13163original behavior has been restored (a Match() operator is emitted.)
13164
13165----------------------------------------
1316617 June 2005.  Summary of changes for version 20050617:
13167
131681) ACPI CA Core Subsystem:
13169
13170Moved the object cache operations into the OS interface layer (OSL) to
13171allow
13172the host OS to handle these operations if desired (for example, the Linux
13173OSL will invoke the slab allocator). This support is optional; the
13174compile
13175time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
13176cache
13177code in the ACPI CA core. The new OSL interfaces are shown below. See
13178utalloc.c for an example implementation, and acpiosxf.h for the exact
13179interface definitions. With assistance from Alexey Starikovskiy.
13180    AcpiOsCreateCache
13181    AcpiOsDeleteCache
13182    AcpiOsPurgeCache
13183    AcpiOsAcquireObject
13184    AcpiOsReleaseObject
13185
13186Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
13187return
13188and restore a flags parameter. This fits better with many OS lock models.
13189Note: the current execution state (interrupt handler or not) is no longer
13190passed to these interfaces. If necessary, the OSL must determine this
13191state
13192by itself, a simple and fast operation. With assistance from Alexey
13193Starikovskiy.
13194
13195Fixed a problem in the ACPI table handling where a valid XSDT was assumed
13196present if the revision of the RSDP was 2 or greater. According to the
13197ACPI
13198specification, the XSDT is optional in all cases, and the table manager
13199therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
13200Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
13201contain
13202only the RSDT.
13203
13204Fixed an interpreter problem with the Mid() operator in the case of an
13205input
13206string where the resulting output string is of zero length. It now
13207correctly
13208returns a valid, null terminated string object instead of a string object
13209with a null pointer.
13210
13211Fixed a problem with the control method argument handling to allow a
13212store
13213to an Arg object that already contains an object of type Device. The
13214Device
13215object is now correctly overwritten. Previously, an error was returned.
13216
13217
13218Enhanced the debugger Find command to emit object values in addition to
13219the
13220found object pathnames. The output format is the same as the dump
13221namespace
13222command.
13223
13224Enhanced the debugger Set command. It now has the ability to set the
13225value
13226of any Named integer object in the namespace (Previously, only method
13227locals
13228and args could be set.)
13229
13230Code and Data Size: Current and previous core subsystem library sizes are
13231shown below. These are the code and data sizes for the acpica.lib
13232produced
13233by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13234any ACPI driver or OSPM code. The debug version of the code includes the
13235debug output trace mechanism and has a much larger code and data size.
13236Note
13237that these values will vary depending on the efficiency of the compiler
13238and
13239the compiler options used during generation.
13240
13241  Previous Release:
13242    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
13243    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
13244  Current Release:
13245    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
13246    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
13247
13248
132492) iASL Compiler/Disassembler:
13250
13251Fixed a regression in the disassembler where if/else/while constructs
13252were
13253output incorrectly. This problem was introduced in the previous release
13254(20050526). This problem also affected the single-step disassembly in the
13255debugger.
13256
13257Fixed a problem where compiling the reserved _OSI method would randomly
13258(but
13259rarely) produce compile errors.
13260
13261Enhanced the disassembler to emit compilable code in the face of
13262incorrect
13263AML resource descriptors. If the optional ResourceSourceIndex is present,
13264but the ResourceSource is not, do not emit the ResourceSourceIndex in the
13265disassembly. Otherwise, the resulting code cannot be compiled without
13266errors.
13267
13268----------------------------------------
1326926 May 2005.  Summary of changes for version 20050526:
13270
132711) ACPI CA Core Subsystem:
13272
13273Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
13274the module level (not within a control method.) These opcodes are
13275executed
13276exactly once at the time the table is loaded. This type of code was legal
13277up
13278until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
13279in
13280order to provide backwards compatibility with earlier BIOS
13281implementations.
13282This eliminates the "Encountered executable code at module level" warning
13283that was previously generated upon detection of such code.
13284
13285Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
13286inadvertently be generated during the lookup of namespace objects in the
13287second pass parse of ACPI tables and control methods. It appears that
13288this
13289problem could occur during the resolution of forward references to
13290namespace
13291objects.
13292
13293Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
13294corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
13295allows the deadlock detection debug code to be compiled out in the normal
13296case, improving mutex performance (and overall subsystem performance)
13297considerably.
13298
13299Implemented a handful of miscellaneous fixes for possible memory leaks on
13300error conditions and error handling control paths. These fixes were
13301suggested by FreeBSD and the Coverity Prevent source code analysis tool.
13302
13303Added a check for a null RSDT pointer in AcpiGetFirmwareTable
13304(tbxfroot.c)
13305to prevent a fault in this error case.
13306
13307Code and Data Size: Current and previous core subsystem library sizes are
13308shown below. These are the code and data sizes for the acpica.lib
13309produced
13310by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13311any ACPI driver or OSPM code. The debug version of the code includes the
13312debug output trace mechanism and has a much larger code and data size.
13313Note
13314that these values will vary depending on the efficiency of the compiler
13315and
13316the compiler options used during generation.
13317
13318  Previous Release:
13319    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13320    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13321  Current Release:
13322    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
13323    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
13324
13325
133262) iASL Compiler/Disassembler:
13327
13328Implemented support to allow Type 1 and Type 2 ASL operators to appear at
13329the module level (not within a control method.) These operators will be
13330executed once at the time the table is loaded. This type of code was
13331legal
13332up until the release of ACPI 2.0B (2002) and is now supported by the iASL
13333compiler in order to provide backwards compatibility with earlier BIOS
13334ASL
13335code.
13336
13337The ACPI integer width (specified via the table revision ID or the -r
13338override, 32 or 64 bits) is now used internally during compile-time
13339constant
13340folding to ensure that constants are truncated to 32 bits if necessary.
13341Previously, the revision ID value was only emitted in the AML table
13342header.
13343
13344An error message is now generated for the Mutex and Method operators if
13345the
13346SyncLevel parameter is outside the legal range of 0 through 15.
13347
13348Fixed a problem with the Method operator ParameterTypes list handling
13349(ACPI
133503.0). Previously, more than 2 types or 2 arguments generated a syntax
13351error.
13352The actual underlying implementation of method argument typechecking is
13353still under development, however.
13354
13355----------------------------------------
1335613 May 2005.  Summary of changes for version 20050513:
13357
133581) ACPI CA Core Subsystem:
13359
13360Implemented support for PCI Express root bridges -- added support for
13361device
13362PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
13363
13364The interpreter now automatically truncates incoming 64-bit constants to
1336532
13366bits if currently executing out of a 32-bit ACPI table (Revision < 2).
13367This
13368also affects the iASL compiler constant folding. (Note: as per below, the
13369iASL compiler no longer allows 64-bit constants within 32-bit tables.)
13370
13371Fixed a problem where string and buffer objects with "static" pointers
13372(pointers to initialization data within an ACPI table) were not handled
13373consistently. The internal object copy operation now always copies the
13374data
13375to a newly allocated buffer, regardless of whether the source object is
13376static or not.
13377
13378Fixed a problem with the FromBCD operator where an implicit result
13379conversion was improperly performed while storing the result to the
13380target
13381operand. Since this is an "explicit conversion" operator, the implicit
13382conversion should never be performed on the output.
13383
13384Fixed a problem with the CopyObject operator where a copy to an existing
13385named object did not always completely overwrite the existing object
13386stored
13387at name. Specifically, a buffer-to-buffer copy did not delete the
13388existing
13389buffer.
13390
13391Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
13392and
13393structs for consistency.
13394
13395Code and Data Size: Current and previous core subsystem library sizes are
13396shown below. These are the code and data sizes for the acpica.lib
13397produced
13398by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13399any ACPI driver or OSPM code. The debug version of the code includes the
13400debug output trace mechanism and has a much larger code and data size.
13401Note
13402that these values will vary depending on the efficiency of the compiler
13403and
13404the compiler options used during generation.
13405
13406  Previous Release:
13407    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13408    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13409  Current Release: (Same sizes)
13410    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13411    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13412
13413
134142) iASL Compiler/Disassembler:
13415
13416The compiler now emits a warning if an attempt is made to generate a 64-
13417bit
13418integer constant from within a 32-bit ACPI table (Revision < 2). The
13419integer
13420is truncated to 32 bits.
13421
13422Fixed a problem with large package objects: if the static length of the
13423package is greater than 255, the "variable length package" opcode is
13424emitted. Previously, this caused an error. This requires an update to the
13425ACPI spec, since it currently (incorrectly) states that packages larger
13426than
13427255 elements are not allowed.
13428
13429The disassembler now correctly handles variable length packages and
13430packages
13431larger than 255 elements.
13432
13433----------------------------------------
1343408 April 2005.  Summary of changes for version 20050408:
13435
134361) ACPI CA Core Subsystem:
13437
13438Fixed three cases in the interpreter where an "index" argument to an ASL
13439function was still (internally) 32 bits instead of the required 64 bits.
13440This was the Index argument to the Index, Mid, and Match operators.
13441
13442The "strupr" function is now permanently local (AcpiUtStrupr), since this
13443is
13444not a POSIX-defined function and not present in most kernel-level C
13445libraries. All references to the C library strupr function have been
13446removed
13447from the headers.
13448
13449Completed the deployment of static functions/prototypes. All prototypes
13450with
13451the static attribute have been moved from the headers to the owning C
13452file.
13453
13454Implemented an extract option (-e) for the AcpiBin utility (AML binary
13455utility). This option allows the utility to extract individual ACPI
13456tables
13457from the output of AcpiDmp. It provides the same functionality of the
13458acpixtract.pl perl script without the worry of setting the correct perl
13459options. AcpiBin runs on Windows and has not yet been generated/validated
13460in
13461the Linux/Unix environment (but should be soon).
13462
13463Updated and fixed the table dump option for AcpiBin (-d). This option
13464converts a single ACPI table to a hex/ascii file, similar to the output
13465of
13466AcpiDmp.
13467
13468Code and Data Size: Current and previous core subsystem library sizes are
13469shown below. These are the code and data sizes for the acpica.lib
13470produced
13471by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13472any ACPI driver or OSPM code. The debug version of the code includes the
13473debug output trace mechanism and has a much larger code and data size.
13474Note
13475that these values will vary depending on the efficiency of the compiler
13476and
13477the compiler options used during generation.
13478
13479  Previous Release:
13480    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
13481    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
13482  Current Release:
13483    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13484    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13485
13486
134872) iASL Compiler/Disassembler:
13488
13489Disassembler fix: Added a check to ensure that the table length found in
13490the
13491ACPI table header within the input file is not longer than the actual
13492input
13493file size. This indicates some kind of file or table corruption.
13494
13495----------------------------------------
1349629 March 2005.  Summary of changes for version 20050329:
13497
134981) ACPI CA Core Subsystem:
13499
13500An error is now generated if an attempt is made to create a Buffer Field
13501of
13502length zero (A CreateField with a length operand of zero.)
13503
13504The interpreter now issues a warning whenever executable code at the
13505module
13506level is detected during ACPI table load. This will give some idea of the
13507prevalence of this type of code.
13508
13509Implemented support for references to named objects (other than control
13510methods) within package objects.
13511
13512Enhanced package object output for the debug object. Package objects are
13513now
13514completely dumped, showing all elements.
13515
13516Enhanced miscellaneous object output for the debug object. Any object can
13517now be written to the debug object (for example, a device object can be
13518written, and the type of the object will be displayed.)
13519
13520The "static" qualifier has been added to all local functions across both
13521the
13522core subsystem and the iASL compiler.
13523
13524The number of "long" lines (> 80 chars) within the source has been
13525significantly reduced, by about 1/3.
13526
13527Cleaned up all header files to ensure that all CA/iASL functions are
13528prototyped (even static functions) and the formatting is consistent.
13529
13530Two new header files have been added, acopcode.h and acnames.h.
13531
13532Removed several obsolete functions that were no longer used.
13533
13534Code and Data Size: Current and previous core subsystem library sizes are
13535shown below. These are the code and data sizes for the acpica.lib
13536produced
13537by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13538any ACPI driver or OSPM code. The debug version of the code includes the
13539debug output trace mechanism and has a much larger code and data size.
13540Note
13541that these values will vary depending on the efficiency of the compiler
13542and
13543the compiler options used during generation.
13544
13545  Previous Release:
13546    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13547    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
13548  Current Release:
13549    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
13550    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
13551
13552
13553
135542) iASL Compiler/Disassembler:
13555
13556Fixed a problem with the resource descriptor generation/support. For the
13557ResourceSourceIndex and the ResourceSource fields, both must be present,
13558or
13559both must be not present - can't have one without the other.
13560
13561The compiler now returns non-zero from the main procedure if any errors
13562have
13563occurred during the compilation.
13564
13565
13566----------------------------------------
1356709 March 2005.  Summary of changes for version 20050309:
13568
135691) ACPI CA Core Subsystem:
13570
13571The string-to-buffer implicit conversion code has been modified again
13572after
13573a change to the ACPI specification.  In order to match the behavior of
13574the
13575other major ACPI implementation, the target buffer is no longer truncated
13576if
13577the source string is smaller than an existing target buffer. This change
13578requires an update to the ACPI spec, and should eliminate the recent
13579AE_AML_BUFFER_LIMIT issues.
13580
13581The "implicit return" support was rewritten to a new algorithm that
13582solves
13583the general case. Rather than attempt to determine when a method is about
13584to
13585exit, the result of every ASL operator is saved momentarily until the
13586very
13587next ASL operator is executed. Therefore, no matter how the method exits,
13588there will always be a saved implicit return value. This feature is only
13589enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
13590eliminate
13591AE_AML_NO_RETURN_VALUE errors when enabled.
13592
13593Implemented implicit conversion support for the predicate (operand) of
13594the
13595If, Else, and While operators. String and Buffer arguments are
13596automatically
13597converted to Integers.
13598
13599Changed the string-to-integer conversion behavior to match the new ACPI
13600errata: "If no integer object exists, a new integer is created. The ASCII
13601string is interpreted as a hexadecimal constant. Each string character is
13602interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
13603with the first character as the most significant digit, and ending with
13604the
13605first non-hexadecimal character or end-of-string." This means that the
13606first
13607non-hex character terminates the conversion and this is the code that was
13608changed.
13609
13610Fixed a problem where the ObjectType operator would fail (fault) when
13611used
13612on an Index of a Package which pointed to a null package element. The
13613operator now properly returns zero (Uninitialized) in this case.
13614
13615Fixed a problem where the While operator used excessive memory by not
13616properly popping the result stack during execution. There was no memory
13617leak
13618after execution, however. (Code provided by Valery Podrezov.)
13619
13620Fixed a problem where references to control methods within Package
13621objects
13622caused the method to be invoked, instead of producing a reference object
13623pointing to the method.
13624
13625Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
13626to
13627improve performance and reduce code size. (Code provided by Alexey
13628Starikovskiy.)
13629
13630Code and Data Size: Current and previous core subsystem library sizes are
13631shown below. These are the code and data sizes for the acpica.lib
13632produced
13633by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13634any ACPI driver or OSPM code. The debug version of the code includes the
13635debug output trace mechanism and has a much larger code and data size.
13636Note
13637that these values will vary depending on the efficiency of the compiler
13638and
13639the compiler options used during generation.
13640
13641  Previous Release:
13642    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13643    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
13644  Current Release:
13645    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13646    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
13647
13648
136492) iASL Compiler/Disassembler:
13650
13651Fixed a problem with the Return operator with no arguments. Since the AML
13652grammar for the byte encoding requires an operand for the Return opcode,
13653the
13654compiler now emits a Return(Zero) for this case.  An ACPI specification
13655update has been written for this case.
13656
13657For tables other than the DSDT, namepath optimization is automatically
13658disabled. This is because SSDTs can be loaded anywhere in the namespace,
13659the
13660compiler has no knowledge of where, and thus cannot optimize namepaths.
13661
13662Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
13663inadvertently omitted from the ACPI specification, and will require an
13664update to the spec.
13665
13666The source file scan for ASCII characters is now optional (-a). This
13667change
13668was made because some vendors place non-ascii characters within comments.
13669However, the scan is simply a brute-force byte compare to ensure all
13670characters in the file are in the range 0x00 to 0x7F.
13671
13672Fixed a problem with the CondRefOf operator where the compiler was
13673inappropriately checking for the existence of the target. Since the point
13674of
13675the operator is to check for the existence of the target at run-time, the
13676compiler no longer checks for the target existence.
13677
13678Fixed a problem where errors generated from the internal AML interpreter
13679during constant folding were not handled properly, causing a fault.
13680
13681Fixed a problem with overly aggressive range checking for the Stall
13682operator. The valid range (max 255) is now only checked if the operand is
13683of
13684type Integer. All other operand types cannot be statically checked.
13685
13686Fixed a problem where control method references within the RefOf,
13687DeRefOf,
13688and ObjectType operators were not treated properly. They are now treated
13689as
13690actual references, not method invocations.
13691
13692Fixed and enhanced the "list namespace" option (-ln). This option was
13693broken
13694a number of releases ago.
13695
13696Improved error handling for the Field, IndexField, and BankField
13697operators.
13698The compiler now cleanly reports and recovers from errors in the field
13699component (FieldUnit) list.
13700
13701Fixed a disassembler problem where the optional ResourceDescriptor fields
13702TRS and TTP were not always handled correctly.
13703
13704Disassembler - Comments in output now use "//" instead of "/*"
13705
13706----------------------------------------
1370728 February 2005.  Summary of changes for version 20050228:
13708
137091) ACPI CA Core Subsystem:
13710
13711Fixed a problem where the result of an Index() operator (an object
13712reference) must increment the reference count on the target object for
13713the
13714life of the object reference.
13715
13716Implemented AML Interpreter and Debugger support for the new ACPI 3.0
13717Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
13718WordSpace
13719resource descriptors.
13720
13721Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
13722Space Descriptor" string, indicating interpreter support for the
13723descriptors
13724above.
13725
13726Implemented header support for the new ACPI 3.0 FADT flag bits.
13727
13728Implemented header support for the new ACPI 3.0 PCI Express bits for the
13729PM1
13730status/enable registers.
13731
13732Updated header support for the MADT processor local Apic struct and MADT
13733platform interrupt source struct for new ACPI 3.0 fields.
13734
13735Implemented header support for the SRAT and SLIT ACPI tables.
13736
13737Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
13738flag
13739at runtime.
13740
13741Code and Data Size: Current and previous core subsystem library sizes are
13742shown below. These are the code and data sizes for the acpica.lib
13743produced
13744by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13745any ACPI driver or OSPM code. The debug version of the code includes the
13746debug output trace mechanism and has a much larger code and data size.
13747Note
13748that these values will vary depending on the efficiency of the compiler
13749and
13750the compiler options used during generation.
13751
13752  Previous Release:
13753    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
13754    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
13755  Current Release:
13756    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13757    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
13758
13759
137602) iASL Compiler/Disassembler:
13761
13762Fixed a problem with the internal 64-bit String-to-integer conversion
13763with
13764strings less than two characters long.
13765
13766Fixed a problem with constant folding where the result of the Index()
13767operator can not be considered a constant. This means that Index() cannot
13768be
13769a type3 opcode and this will require an update to the ACPI specification.
13770
13771Disassembler: Implemented support for the TTP, MTP, and TRS resource
13772descriptor fields. These fields were inadvertently ignored and not output
13773in
13774the disassembly of the resource descriptor.
13775
13776
13777 ----------------------------------------
1377811 February 2005.  Summary of changes for version 20050211:
13779
137801) ACPI CA Core Subsystem:
13781
13782Implemented ACPI 3.0 support for implicit conversion within the Match()
13783operator. MatchObjects can now be of type integer, buffer, or string
13784instead
13785of just type integer.  Package elements are implicitly converted to the
13786type
13787of the MatchObject. This change aligns the behavior of Match() with the
13788behavior of the other logical operators (LLess(), etc.) It also requires
13789an
13790errata change to the ACPI specification as this support was intended for
13791ACPI 3.0, but was inadvertently omitted.
13792
13793Fixed a problem with the internal implicit "to buffer" conversion.
13794Strings
13795that are converted to buffers will cause buffer truncation if the string
13796is
13797smaller than the target buffer. Integers that are converted to buffers
13798will
13799not cause buffer truncation, only zero extension (both as per the ACPI
13800spec.) The problem was introduced when code was added to truncate the
13801buffer, but this should not be performed in all cases, only the string
13802case.
13803
13804Fixed a problem with the Buffer and Package operators where the
13805interpreter
13806would get confused if two such operators were used as operands to an ASL
13807operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
13808stack was not being popped after the execution of these operators,
13809resulting
13810in an AE_NO_RETURN_VALUE exception.
13811
13812Fixed a problem with constructs of the form Store(Index(...),...). The
13813reference object returned from Index was inadvertently resolved to an
13814actual
13815value. This problem was introduced in version 20050114 when the behavior
13816of
13817Store() was modified to restrict the object types that can be used as the
13818source operand (to match the ACPI specification.)
13819
13820Reduced excessive stack use within the AcpiGetObjectInfo procedure.
13821
13822Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
13823
13824Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
13825
13826Code and Data Size: Current and previous core subsystem library sizes are
13827shown below. These are the code and data sizes for the acpica.lib
13828produced
13829by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13830any ACPI driver or OSPM code. The debug version of the code includes the
13831debug output trace mechanism and has a much larger code and data size.
13832Note
13833that these values will vary depending on the efficiency of the compiler
13834and
13835the compiler options used during generation.
13836
13837  Previous Release:
13838    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
13839    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
13840  Current Release:
13841    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
13842    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
13843
13844
138452) iASL Compiler/Disassembler:
13846
13847Fixed a code generation problem in the constant folding optimization code
13848where incorrect code was generated if a constant was reduced to a buffer
13849object (i.e., a reduced type 5 opcode.)
13850
13851Fixed a typechecking problem for the ToBuffer operator. Caused by an
13852incorrect return type in the internal opcode information table.
13853
13854----------------------------------------
1385525 January 2005.  Summary of changes for version 20050125:
13856
138571) ACPI CA Core Subsystem:
13858
13859Fixed a recently introduced problem with the Global Lock where the
13860underlying semaphore was not created.  This problem was introduced in
13861version 20050114, and caused an AE_AML_NO_OPERAND exception during an
13862Acquire() operation on _GL.
13863
13864The local object cache is now optional, and is disabled by default. Both
13865AcpiExec and the iASL compiler enable the cache because they run in user
13866mode and this enhances their performance. #define
13867ACPI_ENABLE_OBJECT_CACHE
13868to enable the local cache.
13869
13870Fixed an issue in the internal function AcpiUtEvaluateObject concerning
13871the
13872optional "implicit return" support where an error was returned if no
13873return
13874object was expected, but one was implicitly returned. AE_OK is now
13875returned
13876in this case and the implicitly returned object is deleted.
13877AcpiUtEvaluateObject is only occasionally used, and only to execute
13878reserved
13879methods such as _STA and _INI where the return type is known up front.
13880
13881Fixed a few issues with the internal convert-to-integer code. It now
13882returns
13883an error if an attempt is made to convert a null string, a string of only
13884blanks/tabs, or a zero-length buffer. This affects both implicit
13885conversion
13886and explicit conversion via the ToInteger() operator.
13887
13888The internal debug code in AcpiUtAcquireMutex has been commented out. It
13889is
13890not needed for normal operation and should increase the performance of
13891the
13892entire subsystem. The code remains in case it is needed for debug
13893purposes
13894again.
13895
13896The AcpiExec source and makefile are included in the Unix/Linux package
13897for
13898the first time.
13899
13900Code and Data Size: Current and previous core subsystem library sizes are
13901shown below. These are the code and data sizes for the acpica.lib
13902produced
13903by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13904any ACPI driver or OSPM code. The debug version of the code includes the
13905debug output trace mechanism and has a much larger code and data size.
13906Note
13907that these values will vary depending on the efficiency of the compiler
13908and
13909the compiler options used during generation.
13910
13911  Previous Release:
13912    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
13913    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
13914  Current Release:
13915    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
13916    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
13917
139182) iASL Compiler/Disassembler:
13919
13920Switch/Case support: A warning is now issued if the type of the Switch
13921value
13922cannot be determined at compile time. For example, Switch(Arg0) will
13923generate the warning, and the type is assumed to be an integer. As per
13924the
13925ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
13926the
13927warning.
13928
13929Switch/Case support: Implemented support for buffer and string objects as
13930the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
13931buffers and strings.
13932
13933Switch/Case support: The emitted code for the LEqual() comparisons now
13934uses
13935the switch value as the first operand, not the second. The case value is
13936now
13937the second operand, and this allows the case value to be implicitly
13938converted to the type of the switch value, not the other way around.
13939
13940Switch/Case support: Temporary variables are now emitted immediately
13941within
13942the control method, not at the global level. This means that there are
13943now
1394436 temps available per-method, not 36 temps per-module as was the case
13945with
13946the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
13947
13948----------------------------------------
1394914 January 2005.  Summary of changes for version 20050114:
13950
13951Added 2005 copyright to all module headers.  This affects every module in
13952the core subsystem, iASL compiler, and the utilities.
13953
139541) ACPI CA Core Subsystem:
13955
13956Fixed an issue with the String-to-Buffer conversion code where the string
13957null terminator was not included in the buffer after conversion, but
13958there
13959is existing ASL that assumes the string null terminator is included. This
13960is
13961the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
13962introduced in the previous version when the code was updated to correctly
13963set the converted buffer size as per the ACPI specification. The ACPI
13964spec
13965is ambiguous and will be updated to specify that the null terminator must
13966be
13967included in the converted buffer. This also affects the ToBuffer() ASL
13968operator.
13969
13970Fixed a problem with the Mid() ASL/AML operator where it did not work
13971correctly on Buffer objects. Newly created sub-buffers were not being
13972marked
13973as initialized.
13974
13975
13976Fixed a problem in AcpiTbFindTable where incorrect string compares were
13977performed on the OemId and OemTableId table header fields.  These fields
13978are
13979not null terminated, so strncmp is now used instead of strcmp.
13980
13981Implemented a restriction on the Store() ASL/AML operator to align the
13982behavior with the ACPI specification.  Previously, any object could be
13983used
13984as the source operand.  Now, the only objects that may be used are
13985Integers,
13986Buffers, Strings, Packages, Object References, and DDB Handles.  If
13987necessary, the original behavior can be restored by enabling the
13988EnableInterpreterSlack flag.
13989
13990Enhanced the optional "implicit return" support to allow an implicit
13991return
13992value from methods that are invoked externally via the AcpiEvaluateObject
13993interface.  This enables implicit returns from the _STA and _INI methods,
13994for example.
13995
13996Changed the Revision() ASL/AML operator to return the current version of
13997the
13998AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
13999returned
14000the supported ACPI version (This is the function of the _REV method).
14001
14002Updated the _REV predefined method to return the currently supported
14003version
14004of ACPI, now 3.
14005
14006Implemented batch mode option for the AcpiExec utility (-b).
14007
14008Code and Data Size: Current and previous core subsystem library sizes are
14009shown below. These are the code and data sizes for the acpica.lib
14010produced
14011by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14012any ACPI driver or OSPM code. The debug version of the code includes the
14013debug output trace mechanism and has a much larger code and data size.
14014Note
14015that these values will vary depending on the efficiency of the compiler
14016and
14017the compiler options used during generation.
14018
14019  Previous Release:
14020    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14021    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
14022  Current Release:
14023    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
14024    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
14025
14026----------------------------------------
1402710 December 2004.  Summary of changes for version 20041210:
14028
14029ACPI 3.0 support is nearing completion in both the iASL compiler and the
14030ACPI CA core subsystem.
14031
140321) ACPI CA Core Subsystem:
14033
14034Fixed a problem in the ToDecimalString operator where the resulting
14035string
14036length was incorrectly calculated. The length is now calculated exactly,
14037eliminating incorrect AE_STRING_LIMIT exceptions.
14038
14039Fixed a problem in the ToHexString operator to allow a maximum 200
14040character
14041string to be produced.
14042
14043Fixed a problem in the internal string-to-buffer and buffer-to-buffer
14044copy
14045routine where the length of the resulting buffer was not truncated to the
14046new size (if the target buffer already existed).
14047
14048Code and Data Size: Current and previous core subsystem library sizes are
14049shown below. These are the code and data sizes for the acpica.lib
14050produced
14051by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14052any ACPI driver or OSPM code. The debug version of the code includes the
14053debug output trace mechanism and has a much larger code and data size.
14054Note
14055that these values will vary depending on the efficiency of the compiler
14056and
14057the compiler options used during generation.
14058
14059  Previous Release:
14060    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14061    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
14062  Current Release:
14063    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14064    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
14065
14066
140672) iASL Compiler/Disassembler:
14068
14069Implemented the new ACPI 3.0 resource template macros - DWordSpace,
14070ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
14071Includes support in the disassembler.
14072
14073Implemented support for the new (ACPI 3.0) parameter to the Register
14074macro,
14075AccessSize.
14076
14077Fixed a problem where the _HE resource name for the Interrupt macro was
14078referencing bit 0 instead of bit 1.
14079
14080Implemented check for maximum 255 interrupts in the Interrupt macro.
14081
14082Fixed a problem with the predefined resource descriptor names where
14083incorrect AML code was generated if the offset within the resource buffer
14084was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
14085but did not update the surrounding package lengths.
14086
14087Changes to the Dma macro:  All channels within the channel list must be
14088in
14089the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
14090optional (default is BusMaster).
14091
14092Implemented check for maximum 7 data bytes for the VendorShort macro.
14093
14094The ReadWrite parameter is now optional for the Memory32 and similar
14095macros.
14096
14097----------------------------------------
1409803 December 2004.  Summary of changes for version 20041203:
14099
141001) ACPI CA Core Subsystem:
14101
14102The low-level field insertion/extraction code (exfldio) has been
14103completely
14104rewritten to eliminate unnecessary complexity, bugs, and boundary
14105conditions.
14106
14107Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
14108ToDecimalString
14109operators where the input operand could be inadvertently deleted if no
14110conversion was necessary (e.g., if the input to ToInteger was an Integer
14111object.)
14112
14113Fixed a problem with the ToDecimalString and ToHexString where an
14114incorrect
14115exception code was returned if the resulting string would be > 200 chars.
14116AE_STRING_LIMIT is now returned.
14117
14118Fixed a problem with the Concatenate operator where AE_OK was always
14119returned, even if the operation failed.
14120
14121Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
14122semaphores to be allocated.
14123
14124Code and Data Size: Current and previous core subsystem library sizes are
14125shown below. These are the code and data sizes for the acpica.lib
14126produced
14127by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14128any ACPI driver or OSPM code. The debug version of the code includes the
14129debug output trace mechanism and has a much larger code and data size.
14130Note
14131that these values will vary depending on the efficiency of the compiler
14132and
14133the compiler options used during generation.
14134
14135  Previous Release:
14136    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14137    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14138  Current Release:
14139    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14140    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
14141
14142
141432) iASL Compiler/Disassembler:
14144
14145Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
14146recently introduced in 20041119.
14147
14148Fixed a problem with the ToUUID macro where the upper nybble of each
14149buffer
14150byte was inadvertently set to zero.
14151
14152----------------------------------------
1415319 November 2004.  Summary of changes for version 20041119:
14154
141551) ACPI CA Core Subsystem:
14156
14157Fixed a problem in the internal ConvertToInteger routine where new
14158integers
14159were not truncated to 32 bits for 32-bit ACPI tables. This routine
14160converts
14161buffers and strings to integers.
14162
14163Implemented support to store a value to an Index() on a String object.
14164This
14165is an ACPI 2.0 feature that had not yet been implemented.
14166
14167Implemented new behavior for storing objects to individual package
14168elements
14169(via the Index() operator). The previous behavior was to invoke the
14170implicit
14171conversion rules if an object was already present at the index.  The new
14172behavior is to simply delete any existing object and directly store the
14173new
14174object. Although the ACPI specification seems unclear on this subject,
14175other
14176ACPI implementations behave in this manner.  (This is the root of the
14177AE_BAD_HEX_CONSTANT issue.)
14178
14179Modified the RSDP memory scan mechanism to support the extended checksum
14180for
14181ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
14182RSDP signature is found with a valid checksum.
14183
14184Code and Data Size: Current and previous core subsystem library sizes are
14185shown below. These are the code and data sizes for the acpica.lib
14186produced
14187by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14188any ACPI driver or OSPM code. The debug version of the code includes the
14189debug output trace mechanism and has a much larger code and data size.
14190Note
14191that these values will vary depending on the efficiency of the compiler
14192and
14193the compiler options used during generation.
14194
14195  Previous Release:
14196    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14197    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14198  Current Release:
14199    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14200    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14201
14202
142032) iASL Compiler/Disassembler:
14204
14205Fixed a missing semicolon in the aslcompiler.y file.
14206
14207----------------------------------------
1420805 November 2004.  Summary of changes for version 20041105:
14209
142101) ACPI CA Core Subsystem:
14211
14212Implemented support for FADT revision 2.  This was an interim table
14213(between
14214ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
14215
14216Implemented optional support to allow uninitialized LocalX and ArgX
14217variables in a control method.  The variables are initialized to an
14218Integer
14219object with a value of zero.  This support is enabled by setting the
14220AcpiGbl_EnableInterpreterSlack flag to TRUE.
14221
14222Implemented support for Integer objects for the SizeOf operator.  Either
142234
14224or 8 is returned, depending on the current integer size (32-bit or 64-
14225bit,
14226depending on the parent table revision).
14227
14228Fixed a problem in the implementation of the SizeOf and ObjectType
14229operators
14230where the operand was resolved to a value too early, causing incorrect
14231return values for some objects.
14232
14233Fixed some possible memory leaks during exceptional conditions.
14234
14235Code and Data Size: Current and previous core subsystem library sizes are
14236shown below. These are the code and data sizes for the acpica.lib
14237produced
14238by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14239any ACPI driver or OSPM code. The debug version of the code includes the
14240debug output trace mechanism and has a much larger code and data size.
14241Note
14242that these values will vary depending on the efficiency of the compiler
14243and
14244the compiler options used during generation.
14245
14246  Previous Release:
14247    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14248    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
14249  Current Release:
14250    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14251    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14252
14253
142542) iASL Compiler/Disassembler:
14255
14256Implemented support for all ACPI 3.0 reserved names and methods.
14257
14258Implemented all ACPI 3.0 grammar elements in the front-end, including
14259support for semicolons.
14260
14261Implemented the ACPI 3.0 Function() and ToUUID() macros
14262
14263Fixed a problem in the disassembler where a Scope() operator would not be
14264emitted properly if the target of the scope was in another table.
14265
14266----------------------------------------
1426715 October 2004.  Summary of changes for version 20041015:
14268
14269Note:  ACPI CA is currently undergoing an in-depth and complete formal
14270evaluation to test/verify the following areas. Other suggestions are
14271welcome. This will result in an increase in the frequency of releases and
14272the number of bug fixes in the next few months.
14273  - Functional tests for all ASL/AML operators
14274  - All implicit/explicit type conversions
14275  - Bit fields and operation regions
14276  - 64-bit math support and 32-bit-only "truncated" math support
14277  - Exceptional conditions, both compiler and interpreter
14278  - Dynamic object deletion and memory leaks
14279  - ACPI 3.0 support when implemented
14280  - External interfaces to the ACPI subsystem
14281
14282
142831) ACPI CA Core Subsystem:
14284
14285Fixed two alignment issues on 64-bit platforms - within debug statements
14286in
14287AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
14288Address
14289field within the non-aligned ACPI generic address structure.
14290
14291Fixed a problem in the Increment and Decrement operators where incorrect
14292operand resolution could result in the inadvertent modification of the
14293original integer when the integer is passed into another method as an
14294argument and the arg is then incremented/decremented.
14295
14296Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
14297bit
14298BCD number were truncated during conversion.
14299
14300Fixed a problem in the ToDecimal operator where the length of the
14301resulting
14302string could be set incorrectly too long if the input operand was a
14303Buffer
14304object.
14305
14306Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
14307(0)
14308within a buffer would prematurely terminate a compare between buffer
14309objects.
14310
14311Added a check for string overflow (>200 characters as per the ACPI
14312specification) during the Concatenate operator with two string operands.
14313
14314Code and Data Size: Current and previous core subsystem library sizes are
14315shown below. These are the code and data sizes for the acpica.lib
14316produced
14317by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14318any ACPI driver or OSPM code. The debug version of the code includes the
14319debug output trace mechanism and has a much larger code and data size.
14320Note
14321that these values will vary depending on the efficiency of the compiler
14322and
14323the compiler options used during generation.
14324
14325  Previous Release:
14326    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14327    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
14328  Current Release:
14329    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14330    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
14331
14332
14333
143342) iASL Compiler/Disassembler:
14335
14336Allow the use of the ObjectType operator on uninitialized Locals and Args
14337(returns 0 as per the ACPI specification).
14338
14339Fixed a problem where the compiler would fault if there was a syntax
14340error
14341in the FieldName of all of the various CreateXXXField operators.
14342
14343Disallow the use of lower case letters within the EISAID macro, as per
14344the
14345ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
14346Where
14347U is an uppercase letter and N is a hex digit.
14348
14349
14350----------------------------------------
1435106 October 2004.  Summary of changes for version 20041006:
14352
143531) ACPI CA Core Subsystem:
14354
14355Implemented support for the ACPI 3.0 Timer operator. This ASL function
14356implements a 64-bit timer with 100 nanosecond granularity.
14357
14358Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
14359implement the ACPI 3.0 Timer operator.  This allows the host OS to
14360implement
14361the timer with the best clock available. Also, it keeps the core
14362subsystem
14363out of the clock handling business, since the host OS (usually) performs
14364this function.
14365
14366Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
14367functions use a 64-bit address which is part of the packed ACPI Generic
14368Address Structure. Since the structure is non-aligned, the alignment
14369macros
14370are now used to extract the address to a local variable before use.
14371
14372Fixed a problem where the ToInteger operator assumed all input strings
14373were
14374hexadecimal. The operator now handles both decimal strings and hex
14375strings
14376(prefixed with "0x").
14377
14378Fixed a problem where the string length in the string object created as a
14379result of the internal ConvertToString procedure could be incorrect. This
14380potentially affected all implicit conversions and also the
14381ToDecimalString
14382and ToHexString operators.
14383
14384Fixed two problems in the ToString operator. If the length parameter was
14385zero, an incorrect string object was created and the value of the input
14386length parameter was inadvertently changed from zero to Ones.
14387
14388Fixed a problem where the optional ResourceSource string in the
14389ExtendedIRQ
14390resource macro was ignored.
14391
14392Simplified the interfaces to the internal division functions, reducing
14393code
14394size and complexity.
14395
14396Code and Data Size: Current and previous core subsystem library sizes are
14397shown below. These are the code and data sizes for the acpica.lib
14398produced
14399by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14400any ACPI driver or OSPM code. The debug version of the code includes the
14401debug output trace mechanism and has a much larger code and data size.
14402Note
14403that these values will vary depending on the efficiency of the compiler
14404and
14405the compiler options used during generation.
14406
14407  Previous Release:
14408    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
14409    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
14410  Current Release:
14411    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14412    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
14413
14414
144152) iASL Compiler/Disassembler:
14416
14417Implemented support for the ACPI 3.0 Timer operator.
14418
14419Fixed a problem where the Default() operator was inadvertently ignored in
14420a
14421Switch/Case block.  This was a problem in the translation of the Switch
14422statement to If...Else pairs.
14423
14424Added support to allow a standalone Return operator, with no parentheses
14425(or
14426operands).
14427
14428Fixed a problem with code generation for the ElseIf operator where the
14429translated Else...If parse tree was improperly constructed leading to the
14430loss of some code.
14431
14432----------------------------------------
1443322 September 2004.  Summary of changes for version 20040922:
14434
144351) ACPI CA Core Subsystem:
14436
14437Fixed a problem with the implementation of the LNot() operator where
14438"Ones"
14439was not returned for the TRUE case. Changed the code to return Ones
14440instead
14441of (!Arg) which was usually 1. This change affects iASL constant folding
14442for
14443this operator also.
14444
14445Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
14446not
14447initialized properly -- Now zero the entire buffer in this case where the
14448buffer already exists.
14449
14450Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
14451Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
14452related code considerably. This will require changes/updates to all OS
14453interface layers (OSLs.)
14454
14455Implemented a new external interface, AcpiInstallExceptionHandler, to
14456allow
14457a system exception handler to be installed. This handler is invoked upon
14458any
14459run-time exception that occurs during control method execution.
14460
14461Added support for the DSDT in AcpiTbFindTable. This allows the
14462DataTableRegion() operator to access the local copy of the DSDT.
14463
14464Code and Data Size: Current and previous core subsystem library sizes are
14465shown below. These are the code and data sizes for the acpica.lib
14466produced
14467by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14468any ACPI driver or OSPM code. The debug version of the code includes the
14469debug output trace mechanism and has a much larger code and data size.
14470Note
14471that these values will vary depending on the efficiency of the compiler
14472and
14473the compiler options used during generation.
14474
14475  Previous Release:
14476    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
14477    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
14478  Current Release:
14479    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
14480    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
14481
14482
144832) iASL Compiler/Disassembler:
14484
14485Fixed a problem with constant folding and the LNot operator. LNot was
14486returning 1 in the TRUE case, not Ones as per the ACPI specification.
14487This
14488could result in the generation of an incorrect folded/reduced constant.
14489
14490End-Of-File is now allowed within a "//"-style comment.  A parse error no
14491longer occurs if such a comment is at the very end of the input ASL
14492source
14493file.
14494
14495Implemented the "-r" option to override the Revision in the table header.
14496The initial use of this option will be to simplify the evaluation of the
14497AML
14498interpreter by allowing a single ASL source module to be compiled for
14499either
1450032-bit or 64-bit integers.
14501
14502
14503----------------------------------------
1450427 August 2004.  Summary of changes for version 20040827:
14505
145061) ACPI CA Core Subsystem:
14507
14508- Implemented support for implicit object conversion in the non-numeric
14509logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
14510and
14511LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
14512the second operand is implicitly converted on the fly to match the type
14513of
14514the first operand.  For example:
14515
14516    LEqual (Source1, Source2)
14517
14518Source1 and Source2 must each evaluate to an integer, a string, or a
14519buffer.
14520The data type of Source1 dictates the required type of Source2. Source2
14521is
14522implicitly converted if necessary to match the type of Source1.
14523
14524- Updated and corrected the behavior of the string conversion support.
14525The
14526rules concerning conversion of buffers to strings (according to the ACPI
14527specification) are as follows:
14528
14529ToDecimalString - explicit byte-wise conversion of buffer to string of
14530decimal values (0-255) separated by commas. ToHexString - explicit byte-
14531wise
14532conversion of buffer to string of hex values (0-FF) separated by commas.
14533ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
14534byte
14535copy with no transform except NULL terminated. Any other implicit buffer-
14536to-
14537string conversion - byte-wise conversion of buffer to string of hex
14538values
14539(0-FF) separated by spaces.
14540
14541- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
14542
14543- Fixed a problem in AcpiNsGetPathnameLength where the returned length
14544was
14545one byte too short in the case of a node in the root scope.  This could
14546cause a fault during debug output.
14547
14548- Code and Data Size: Current and previous core subsystem library sizes
14549are
14550shown below.  These are the code and data sizes for the acpica.lib
14551produced
14552by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14553any ACPI driver or OSPM code.  The debug version of the code includes the
14554debug output trace mechanism and has a much larger code and data size.
14555Note
14556that these values will vary depending on the efficiency of the compiler
14557and
14558the compiler options used during generation.
14559
14560  Previous Release:
14561    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
14562    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
14563  Current Release:
14564    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
14565    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
14566
14567
145682) iASL Compiler/Disassembler:
14569
14570- Fixed a Linux generation error.
14571
14572
14573----------------------------------------
1457416 August 2004.  Summary of changes for version 20040816:
14575
145761) ACPI CA Core Subsystem:
14577
14578Designed and implemented support within the AML interpreter for the so-
14579called "implicit return".  This support returns the result of the last
14580ASL
14581operation within a control method, in the absence of an explicit Return()
14582operator.  A few machines depend on this behavior, even though it is not
14583explicitly supported by the ASL language.  It is optional support that
14584can
14585be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
14586
14587Removed support for the PCI_Config address space from the internal low
14588level
14589hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
14590support was not used internally, and would not work correctly anyway
14591because
14592the PCI bus number and segment number were not supported.  There are
14593separate interfaces for PCI configuration space access because of the
14594unique
14595interface.
14596
14597Code and Data Size: Current and previous core subsystem library sizes are
14598shown below.  These are the code and data sizes for the acpica.lib
14599produced
14600by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14601any ACPI driver or OSPM code.  The debug version of the code includes the
14602debug output trace mechanism and has a much larger code and data size.
14603Note
14604that these values will vary depending on the efficiency of the compiler
14605and
14606the compiler options used during generation.
14607
14608  Previous Release:
14609    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14610    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
14611  Current Release:
14612    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
14613    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
14614
14615
146162) iASL Compiler/Disassembler:
14617
14618Fixed a problem where constants in ASL expressions at the root level (not
14619within a control method) could be inadvertently truncated during code
14620generation.  This problem was introduced in the 20040715 release.
14621
14622
14623----------------------------------------
1462415 July 2004.  Summary of changes for version 20040715:
14625
146261) ACPI CA Core Subsystem:
14627
14628Restructured the internal HW GPE interfaces to pass/track the current
14629state
14630of interrupts (enabled/disabled) in order to avoid possible deadlock and
14631increase flexibility of the interfaces.
14632
14633Implemented a "lexicographical compare" for String and Buffer objects
14634within
14635the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
14636-
14637as per further clarification to the ACPI specification.  Behavior is
14638similar
14639to C library "strcmp".
14640
14641Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
14642external function.  In the 32-bit non-debug case, the stack use has been
14643reduced from 168 bytes to 32 bytes.
14644
14645Deployed a new run-time configuration flag,
14646AcpiGbl_EnableInterpreterSlack,
14647whose purpose is to allow the AML interpreter to forgive certain bad AML
14648constructs.  Default setting is FALSE.
14649
14650Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
14651IO
14652support code.  If enabled, it allows field access to go beyond the end of
14653a
14654region definition if the field is within the region length rounded up to
14655the
14656next access width boundary (a common coding error.)
14657
14658Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
14659ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
14660these
14661symbols are lowercase by the latest version of the AcpiSrc tool.
14662
14663The prototypes for the PCI interfaces in acpiosxf.h have been updated to
14664rename "Register" to simply "Reg" to prevent certain compilers from
14665complaining.
14666
14667Code and Data Size: Current and previous core subsystem library sizes are
14668shown below.  These are the code and data sizes for the acpica.lib
14669produced
14670by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14671any ACPI driver or OSPM code.  The debug version of the code includes the
14672debug output trace mechanism and has a much larger code and data size.
14673Note
14674that these values will vary depending on the efficiency of the compiler
14675and
14676the compiler options used during generation.
14677
14678  Previous Release:
14679    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14680    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
14681  Current Release:
14682    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14683    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
14684
14685
146862) iASL Compiler/Disassembler:
14687
14688Implemented full support for Package objects within the Case() operator.
14689Note: The Break() operator is currently not supported within Case blocks
14690(TermLists) as there is some question about backward compatibility with
14691ACPI
146921.0 interpreters.
14693
14694
14695Fixed a problem where complex terms were not supported properly within
14696the
14697Switch() operator.
14698
14699Eliminated extraneous warning for compiler-emitted reserved names of the
14700form "_T_x".  (Used in Switch/Case operators.)
14701
14702Eliminated optimization messages for "_T_x" objects and small constants
14703within the DefinitionBlock operator.
14704
14705
14706----------------------------------------
1470715 June 2004.  Summary of changes for version 20040615:
14708
147091) ACPI CA Core Subsystem:
14710
14711Implemented support for Buffer and String objects (as per ACPI 2.0) for
14712the
14713following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
14714LLessEqual.
14715
14716All directory names in the entire source package are lower case, as they
14717were in earlier releases.
14718
14719Implemented "Disassemble" command in the AML debugger that will
14720disassemble
14721a single control method.
14722
14723Code and Data Size: Current and previous core subsystem library sizes are
14724shown below.  These are the code and data sizes for the acpica.lib
14725produced
14726by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14727any ACPI driver or OSPM code.  The debug version of the code includes the
14728debug output trace mechanism and has a much larger code and data size.
14729Note
14730that these values will vary depending on the efficiency of the compiler
14731and
14732the compiler options used during generation.
14733
14734  Previous Release:
14735    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
14736    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
14737
14738  Current Release:
14739    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14740    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
14741
14742
147432) iASL Compiler/Disassembler:
14744
14745Implemented support for Buffer and String objects (as per ACPI 2.0) for
14746the
14747following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
14748LLessEqual.
14749
14750All directory names in the entire source package are lower case, as they
14751were in earlier releases.
14752
14753Fixed a fault when using the -g or -d<nofilename> options if the FADT was
14754not found.
14755
14756Fixed an issue with the Windows version of the compiler where later
14757versions
14758of Windows place the FADT in the registry under the name "FADT" and not
14759"FACP" as earlier versions did.  This applies when using the -g or -
14760d<nofilename> options.  The compiler now looks for both strings as
14761necessary.
14762
14763Fixed a problem with compiler namepath optimization where a namepath
14764within
14765the Scope() operator could not be optimized if the namepath was a subpath
14766of
14767the current scope path.
14768
14769----------------------------------------
1477027 May 2004.  Summary of changes for version 20040527:
14771
147721) ACPI CA Core Subsystem:
14773
14774Completed a new design and implementation for EBDA (Extended BIOS Data
14775Area)
14776support in the RSDP scan code.  The original code improperly scanned for
14777the
14778EBDA by simply scanning from memory location 0 to 0x400.  The correct
14779method
14780is to first obtain the EBDA pointer from within the BIOS data area, then
14781scan 1K of memory starting at the EBDA pointer.  There appear to be few
14782if
14783any machines that place the RSDP in the EBDA, however.
14784
14785Integrated a fix for a possible fault during evaluation of BufferField
14786arguments.  Obsolete code that was causing the problem was removed.
14787
14788Found and fixed a problem in the Field Support Code where data could be
14789corrupted on a bit field read that starts on an aligned boundary but does
14790not end on an aligned boundary.  Merged the read/write "datum length"
14791calculation code into a common procedure.
14792
14793Rolled in a couple of changes to the FreeBSD-specific header.
14794
14795
14796Code and Data Size: Current and previous core subsystem library sizes are
14797shown below.  These are the code and data sizes for the acpica.lib
14798produced
14799by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14800any ACPI driver or OSPM code.  The debug version of the code includes the
14801debug output trace mechanism and has a much larger code and data size.
14802Note
14803that these values will vary depending on the efficiency of the compiler
14804and
14805the compiler options used during generation.
14806
14807  Previous Release:
14808    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14809    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
14810  Current Release:
14811    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
14812    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
14813
14814
148152) iASL Compiler/Disassembler:
14816
14817Fixed a generation warning produced by some overly-verbose compilers for
14818a
1481964-bit constant.
14820
14821----------------------------------------
1482214 May 2004.  Summary of changes for version 20040514:
14823
148241) ACPI CA Core Subsystem:
14825
14826Fixed a problem where hardware GPE enable bits sometimes not set properly
14827during and after GPE method execution.  Result of 04/27 changes.
14828
14829Removed extra "clear all GPEs" when sleeping/waking.
14830
14831Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
14832AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
14833to
14834the new AcpiEv* calls as appropriate.
14835
14836ACPI_OS_NAME was removed from the OS-specific headers.  The default name
14837is
14838now "Microsoft Windows NT" for maximum compatibility.  However this can
14839be
14840changed by modifying the acconfig.h file.
14841
14842Allow a single invocation of AcpiInstallNotifyHandler for a handler that
14843traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
14844
14845Run _INI methods on ThermalZone objects.  This is against the ACPI
14846specification, but there is apparently ASL code in the field that has
14847these
14848_INI methods, and apparently "other" AML interpreters execute them.
14849
14850Performed a full 16/32/64 bit lint that resulted in some small changes.
14851
14852Added a sleep simulation command to the AML debugger to test sleep code.
14853
14854Code and Data Size: Current and previous core subsystem library sizes are
14855shown below.  These are the code and data sizes for the acpica.lib
14856produced
14857by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14858any ACPI driver or OSPM code.  The debug version of the code includes the
14859debug output trace mechanism and has a much larger code and data size.
14860Note
14861that these values will vary depending on the efficiency of the compiler
14862and
14863the compiler options used during generation.
14864
14865  Previous Release:
14866    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14867    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
14868  Current Release:
14869    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14870    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
14871
14872----------------------------------------
1487327 April 2004.  Summary of changes for version 20040427:
14874
148751) ACPI CA Core Subsystem:
14876
14877Completed a major overhaul of the GPE handling within ACPI CA.  There are
14878now three types of GPEs:  wake-only, runtime-only, and combination
14879wake/run.
14880The only GPEs allowed to be combination wake/run are for button-style
14881devices such as a control-method power button, control-method sleep
14882button,
14883or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
14884not
14885referenced by any _PRW methods are marked for "runtime" and hardware
14886enabled.  Any GPE that is referenced by a _PRW method is marked for
14887"wake"
14888(and disabled at runtime).  However, at sleep time, only those GPEs that
14889have been specifically enabled for wake via the AcpiEnableGpe interface
14890will
14891actually be hardware enabled.
14892
14893A new external interface has been added, AcpiSetGpeType(), that is meant
14894to
14895be used by device drivers to force a GPE to a particular type.  It will
14896be
14897especially useful for the drivers for the button devices mentioned above.
14898
14899Completed restructuring of the ACPI CA initialization sequence so that
14900default operation region handlers are installed before GPEs are
14901initialized
14902and the _PRW methods are executed.  This will prevent errors when the
14903_PRW
14904methods attempt to access system memory or I/O space.
14905
14906GPE enable/disable no longer reads the GPE enable register.  We now keep
14907the
14908enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
14909thus no longer depend on the hardware to maintain these bits.
14910
14911Always clear the wake status and fixed/GPE status bits before sleep, even
14912for state S5.
14913
14914Improved the AML debugger output for displaying the GPE blocks and their
14915current status.
14916
14917Added new strings for the _OSI method, of the form "Windows 2001 SPx"
14918where
14919x = 0,1,2,3,4.
14920
14921Fixed a problem where the physical address was incorrectly calculated
14922when
14923the Load() operator was used to directly load from an Operation Region
14924(vs.
14925loading from a Field object.)  Also added check for minimum table length
14926for
14927this case.
14928
14929Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
14930mutex release.
14931
14932Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
14933consistency with the other fields returned.
14934
14935Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
14936structure for each GPE in the system, so the size of this structure is
14937important.
14938
14939CPU stack requirement reduction:  Cleaned up the method execution and
14940object
14941evaluation paths so that now a parameter structure is passed, instead of
14942copying the various method parameters over and over again.
14943
14944In evregion.c:  Correctly exit and reenter the interpreter region if and
14945only if dispatching an operation region request to a user-installed
14946handler.
14947Do not exit/reenter when dispatching to a default handler (e.g., default
14948system memory or I/O handlers)
14949
14950
14951Notes for updating drivers for the new GPE support.  The following
14952changes
14953must be made to ACPI-related device drivers that are attached to one or
14954more
14955GPEs: (This information will be added to the ACPI CA Programmer
14956Reference.)
14957
149581) AcpiInstallGpeHandler no longer automatically enables the GPE, you
14959must
14960explicitly call AcpiEnableGpe.
149612) There is a new interface called AcpiSetGpeType. This should be called
14962before enabling the GPE.  Also, this interface will automatically disable
14963the GPE if it is currently enabled.
149643) AcpiEnableGpe no longer supports a GPE type flag.
14965
14966Specific drivers that must be changed:
149671) EC driver:
14968    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
14969AeGpeHandler, NULL);
14970    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
14971    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
14972
149732) Button Drivers (Power, Lid, Sleep):
14974Run _PRW method under parent device
14975If _PRW exists: /* This is a control-method button */
14976    Extract GPE number and possibly GpeDevice
14977    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
14978    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
14979
14980For all other devices that have _PRWs, we automatically set the GPE type
14981to
14982ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
14983This
14984must be done on a selective basis, usually requiring some kind of user
14985app
14986to allow the user to pick the wake devices.
14987
14988
14989Code and Data Size: Current and previous core subsystem library sizes are
14990shown below.  These are the code and data sizes for the acpica.lib
14991produced
14992by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14993any ACPI driver or OSPM code.  The debug version of the code includes the
14994debug output trace mechanism and has a much larger code and data size.
14995Note
14996that these values will vary depending on the efficiency of the compiler
14997and
14998the compiler options used during generation.
14999
15000  Previous Release:
15001    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
15002    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
15003  Current Release:
15004
15005    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
15006    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
15007
15008
15009
15010----------------------------------------
1501102 April 2004.  Summary of changes for version 20040402:
15012
150131) ACPI CA Core Subsystem:
15014
15015Fixed an interpreter problem where an indirect store through an ArgX
15016parameter was incorrectly applying the "implicit conversion rules" during
15017the store.  From the ACPI specification: "If the target is a method local
15018or
15019argument (LocalX or ArgX), no conversion is performed and the result is
15020stored directly to the target".  The new behavior is to disable implicit
15021conversion during ALL stores to an ArgX.
15022
15023Changed the behavior of the _PRW method scan to ignore any and all errors
15024returned by a given _PRW.  This prevents the scan from aborting from the
15025failure of any single _PRW.
15026
15027Moved the runtime configuration parameters from the global init procedure
15028to
15029static variables in acglobal.h.  This will allow the host to override the
15030default values easily.
15031
15032Code and Data Size: Current and previous core subsystem library sizes are
15033shown below.  These are the code and data sizes for the acpica.lib
15034produced
15035by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15036any ACPI driver or OSPM code.  The debug version of the code includes the
15037debug output trace mechanism and has a much larger code and data size.
15038Note
15039that these values will vary depending on the efficiency of the compiler
15040and
15041the compiler options used during generation.
15042
15043  Previous Release:
15044    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
15045    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
15046  Current Release:
15047    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
15048    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
15049
15050
150512) iASL Compiler/Disassembler:
15052
15053iASL now fully disassembles SSDTs.  However, External() statements are
15054not
15055generated automatically for unresolved symbols at this time.  This is a
15056planned feature for future implementation.
15057
15058Fixed a scoping problem in the disassembler that occurs when the type of
15059the
15060target of a Scope() operator is overridden.  This problem caused an
15061incorrectly nested internal namespace to be constructed.
15062
15063Any warnings or errors that are emitted during disassembly are now
15064commented
15065out automatically so that the resulting file can be recompiled without
15066any
15067hand editing.
15068
15069----------------------------------------
1507026 March 2004.  Summary of changes for version 20040326:
15071
150721) ACPI CA Core Subsystem:
15073
15074Implemented support for "wake" GPEs via interaction between GPEs and the
15075_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
15076identified as a WAKE GPE and by default will no longer be enabled at
15077runtime.  Previously, we were blindly enabling all GPEs with a
15078corresponding
15079_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
15080We
15081believe this has been the cause of thousands of "spurious" GPEs on some
15082systems.
15083
15084This new GPE behavior is can be reverted to the original behavior (enable
15085ALL GPEs at runtime) via a runtime flag.
15086
15087Fixed a problem where aliased control methods could not access objects
15088properly.  The proper scope within the namespace was not initialized
15089(transferred to the target of the aliased method) before executing the
15090target method.
15091
15092Fixed a potential race condition on internal object deletion on the
15093return
15094object in AcpiEvaluateObject.
15095
15096Integrated a fix for resource descriptors where both _MEM and _MTP were
15097being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
15098wide, 0x0F instead of 0x03.)
15099
15100Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
15101preventing
15102a
15103fault in some cases.
15104
15105Updated Notify() values for debug statements in evmisc.c
15106
15107Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
15108
15109Code and Data Size: Current and previous core subsystem library sizes are
15110shown below.  These are the code and data sizes for the acpica.lib
15111produced
15112by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15113any ACPI driver or OSPM code.  The debug version of the code includes the
15114debug output trace mechanism and has a much larger code and data size.
15115Note
15116that these values will vary depending on the efficiency of the compiler
15117and
15118the compiler options used during generation.
15119
15120  Previous Release:
15121
15122    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
15123    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
15124  Current Release:
15125    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
15126    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
15127
15128----------------------------------------
1512911 March 2004.  Summary of changes for version 20040311:
15130
151311) ACPI CA Core Subsystem:
15132
15133Fixed a problem where errors occurring during the parse phase of control
15134method execution did not abort cleanly.  For example, objects created and
15135installed in the namespace were not deleted.  This caused all subsequent
15136invocations of the method to return the AE_ALREADY_EXISTS exception.
15137
15138Implemented a mechanism to force a control method to "Serialized"
15139execution
15140if the method attempts to create namespace objects. (The root of the
15141AE_ALREADY_EXISTS problem.)
15142
15143Implemented support for the predefined _OSI "internal" control method.
15144Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
15145and
15146"Windows 2001.1", and can be easily upgraded for new strings as
15147necessary.
15148This feature will allow "other" operating systems to execute the fully
15149tested, "Windows" code path through the ASL code
15150
15151Global Lock Support:  Now allows multiple acquires and releases with any
15152internal thread.  Removed concept of "owning thread" for this special
15153mutex.
15154
15155Fixed two functions that were inappropriately declaring large objects on
15156the
15157CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
15158during
15159method execution considerably.
15160
15161Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
15162S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
15163
15164Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
15165defined on the machine.
15166
15167Implemented two runtime options:  One to force all control method
15168execution
15169to "Serialized" to mimic Windows behavior, another to disable _OSI
15170support
15171if it causes problems on a given machine.
15172
15173Code and Data Size: Current and previous core subsystem library sizes are
15174shown below.  These are the code and data sizes for the acpica.lib
15175produced
15176by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15177any ACPI driver or OSPM code.  The debug version of the code includes the
15178debug output trace mechanism and has a much larger code and data size.
15179Note
15180that these values will vary depending on the efficiency of the compiler
15181and
15182the compiler options used during generation.
15183
15184  Previous Release:
15185    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
15186    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
15187  Current Release:
15188    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
15189    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
15190
151912) iASL Compiler/Disassembler:
15192
15193Fixed an array size problem for FreeBSD that would cause the compiler to
15194fault.
15195
15196----------------------------------------
1519720 February 2004.  Summary of changes for version 20040220:
15198
15199
152001) ACPI CA Core Subsystem:
15201
15202Implemented execution of _SxD methods for Device objects in the
15203GetObjectInfo interface.
15204
15205Fixed calls to _SST method to pass the correct arguments.
15206
15207Added a call to _SST on wake to restore to "working" state.
15208
15209Check for End-Of-Buffer failure case in the WalkResources interface.
15210
15211Integrated fix for 64-bit alignment issue in acglobal.h by moving two
15212structures to the beginning of the file.
15213
15214After wake, clear GPE status register(s) before enabling GPEs.
15215
15216After wake, clear/enable power button.  (Perhaps we should clear/enable
15217all
15218fixed events upon wake.)
15219
15220Fixed a couple of possible memory leaks in the Namespace manager.
15221
15222Integrated latest acnetbsd.h file.
15223
15224----------------------------------------
1522511 February 2004.  Summary of changes for version 20040211:
15226
15227
152281) ACPI CA Core Subsystem:
15229
15230Completed investigation and implementation of the call-by-reference
15231mechanism for control method arguments.
15232
15233Fixed a problem where a store of an object into an indexed package could
15234fail if the store occurs within a different method than the method that
15235created the package.
15236
15237Fixed a problem where the ToDecimal operator could return incorrect
15238results.
15239
15240Fixed a problem where the CopyObject operator could fail on some of the
15241more
15242obscure objects (e.g., Reference objects.)
15243
15244Improved the output of the Debug object to display buffer, package, and
15245index objects.
15246
15247Fixed a problem where constructs of the form "RefOf (ArgX)" did not
15248return
15249the expected result.
15250
15251Added permanent ACPI_REPORT_ERROR macros for all instances of the
15252ACPI_AML_INTERNAL exception.
15253
15254Integrated latest version of acfreebsd.h
15255
15256----------------------------------------
1525716 January 2004.  Summary of changes for version 20040116:
15258
15259The purpose of this release is primarily to update the copyright years in
15260each module, thus causing a huge number of diffs.  There are a few small
15261functional changes, however.
15262
152631) ACPI CA Core Subsystem:
15264
15265Improved error messages when there is a problem finding one or more of
15266the
15267required base ACPI tables
15268
15269Reintroduced the definition of APIC_HEADER in actbl.h
15270
15271Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
15272
15273Removed extraneous reference to NewObj in dsmthdat.c
15274
152752) iASL compiler
15276
15277Fixed a problem introduced in December that disabled the correct
15278disassembly
15279of Resource Templates
15280
15281
15282----------------------------------------
1528303 December 2003.  Summary of changes for version 20031203:
15284
152851) ACPI CA Core Subsystem:
15286
15287Changed the initialization of Operation Regions during subsystem
15288init to perform two entire walks of the ACPI namespace; The first
15289to initialize the regions themselves, the second to execute the
15290_REG methods.  This fixed some interdependencies across _REG
15291methods found on some machines.
15292
15293Fixed a problem where a Store(Local0, Local1) could simply update
15294the object reference count, and not create a new copy of the
15295object if the Local1 is uninitialized.
15296
15297Implemented support for the _SST reserved method during sleep
15298transitions.
15299
15300Implemented support to clear the SLP_TYP and SLP_EN bits when
15301waking up, this is apparently required by some machines.
15302
15303When sleeping, clear the wake status only if SleepState is not S5.
15304
15305Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
15306pointer arithmetic advanced a string pointer too far.
15307
15308Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
15309could be returned if the requested table has not been loaded.
15310
15311Within the support for IRQ resources, restructured the handling of
15312the active and edge/level bits.
15313
15314Fixed a few problems in AcpiPsxExecute() where memory could be
15315leaked under certain error conditions.
15316
15317Improved error messages for the cases where the ACPI mode could
15318not be entered.
15319
15320Code and Data Size: Current and previous core subsystem library
15321sizes are shown below.  These are the code and data sizes for the
15322acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15323these values do not include any ACPI driver or OSPM code.  The
15324debug version of the code includes the debug output trace
15325mechanism and has a much larger code and data size.  Note that
15326these values will vary depending on the efficiency of the compiler
15327and the compiler options used during generation.
15328
15329  Previous Release (20031029):
15330    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
15331    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
15332  Current Release:
15333    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
15334    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
15335
153362) iASL Compiler/Disassembler:
15337
15338Implemented a fix for the iASL disassembler where a bad index was
15339generated.  This was most noticeable on 64-bit platforms
15340
15341
15342----------------------------------------
1534329 October 2003.  Summary of changes for version 20031029:
15344
153451) ACPI CA Core Subsystem:
15346
15347
15348Fixed a problem where a level-triggered GPE with an associated
15349_Lxx control method was incorrectly cleared twice.
15350
15351Fixed a problem with the Field support code where an access can
15352occur beyond the end-of-region if the field is non-aligned but
15353extends to the very end of the parent region (resulted in an
15354AE_AML_REGION_LIMIT exception.)
15355
15356Fixed a problem with ACPI Fixed Events where an RT Clock handler
15357would not get invoked on an RTC event.  The RTC event bitmasks for
15358the PM1 registers were not being initialized properly.
15359
15360Implemented support for executing _STA and _INI methods for
15361Processor objects.  Although this is currently not part of the
15362ACPI specification, there is existing ASL code that depends on the
15363init-time execution of these methods.
15364
15365Implemented and deployed a GetDescriptorName function to decode
15366the various types of internal descriptors.  Guards against null
15367descriptors during debug output also.
15368
15369Implemented and deployed a GetNodeName function to extract the 4-
15370character namespace node name.  This function simplifies the debug
15371and error output, as well as guarding against null pointers during
15372output.
15373
15374Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
15375simplify the debug and error output of 64-bit integers.  This
15376macro replaces the HIDWORD and LODWORD macros for dumping these
15377integers.
15378
15379Updated the implementation of the Stall() operator to only call
15380AcpiOsStall(), and also return an error if the operand is larger
15381than 255.  This preserves the required behavior of not
15382relinquishing the processor, as would happen if AcpiOsSleep() was
15383called for "long stalls".
15384
15385Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
15386initialized are now treated as NOOPs.
15387
15388Cleaned up a handful of warnings during 64-bit generation.
15389
15390Fixed a reported error where and incorrect GPE number was passed
15391to the GPE dispatch handler.  This value is only used for error
15392output, however.  Used this opportunity to clean up and streamline
15393the GPE dispatch code.
15394
15395Code and Data Size: Current and previous core subsystem library
15396sizes are shown below.  These are the code and data sizes for the
15397acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15398these values do not include any ACPI driver or OSPM code.  The
15399
15400debug version of the code includes the debug output trace
15401mechanism and has a much larger code and data size.  Note that
15402these values will vary depending on the efficiency of the compiler
15403and the compiler options used during generation.
15404
15405  Previous Release (20031002):
15406    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
15407    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
15408  Current Release:
15409    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
15410    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
15411
15412
154132) iASL Compiler/Disassembler:
15414
15415Updated the iASL compiler to return an error if the operand to the
15416Stall() operator is larger than 255.
15417
15418
15419----------------------------------------
1542002 October 2003.  Summary of changes for version 20031002:
15421
15422
154231) ACPI CA Core Subsystem:
15424
15425Fixed a problem with Index Fields where the index was not
15426incremented for fields that require multiple writes to the
15427index/data registers (Fields that are wider than the data
15428register.)
15429
15430Fixed a problem with all Field objects where a write could go
15431beyond the end-of-field if the field was larger than the access
15432granularity and therefore required multiple writes to complete the
15433request.  An extra write beyond the end of the field could happen
15434inadvertently.
15435
15436Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
15437would incorrectly be returned if the width of the Data Register
15438was larger than the specified field access width.
15439
15440Completed fixes for LoadTable() and Unload() and verified their
15441operation.  Implemented full support for the "DdbHandle" object
15442throughout the ACPI CA subsystem.
15443
15444Implemented full support for the MADT and ECDT tables in the ACPI
15445CA header files.  Even though these tables are not directly
15446consumed by ACPI CA, the header definitions are useful for ACPI
15447device drivers.
15448
15449Integrated resource descriptor fixes posted to the Linux ACPI
15450list.  This included checks for minimum descriptor length, and
15451support for trailing NULL strings within descriptors that have
15452optional string elements.
15453
15454Code and Data Size: Current and previous core subsystem library
15455sizes are shown below.  These are the code and data sizes for the
15456acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15457these values do not include any ACPI driver or OSPM code.  The
15458debug version of the code includes the debug output trace
15459mechanism and has a much larger code and data size.  Note that
15460these values will vary depending on the efficiency of the compiler
15461and the compiler options used during generation.
15462
15463  Previous Release (20030918):
15464    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
15465    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
15466  Current Release:
15467    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
15468    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
15469
15470
154712) iASL Compiler:
15472
15473Implemented detection of non-ASCII characters within the input
15474source ASL file.  This catches attempts to compile binary (AML)
15475files early in the compile, with an informative error message.
15476
15477Fixed a problem where the disassembler would fault if the output
15478filename could not be generated or if the output file could not be
15479opened.
15480
15481----------------------------------------
1548218 September 2003.  Summary of changes for version 20030918:
15483
15484
154851) ACPI CA Core Subsystem:
15486
15487Found and fixed a longstanding problem with the late execution of
15488the various deferred AML opcodes (such as Operation Regions,
15489Buffer Fields, Buffers, and Packages).  If the name string
15490specified for the name of the new object placed the object in a
15491scope other than the current scope, the initialization/execution
15492of the opcode failed.  The solution to this problem was to
15493implement a mechanism where the late execution of such opcodes
15494does not attempt to lookup/create the name a second time in an
15495incorrect scope.  This fixes the "region size computed
15496incorrectly" problem.
15497
15498Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
15499Global Lock AE_BAD_PARAMETER error.
15500
15501Fixed several 64-bit issues with prototypes, casting and data
15502types.
15503
15504Removed duplicate prototype from acdisasm.h
15505
15506Fixed an issue involving EC Operation Region Detach (Shaohua Li)
15507
15508Code and Data Size: Current and previous core subsystem library
15509sizes are shown below.  These are the code and data sizes for the
15510acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15511these values do not include any ACPI driver or OSPM code.  The
15512debug version of the code includes the debug output trace
15513mechanism and has a much larger code and data size.  Note that
15514these values will vary depending on the efficiency of the compiler
15515and the compiler options used during generation.
15516
15517  Previous Release:
15518
15519    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
15520    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
15521  Current Release:
15522    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
15523    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
15524
15525
155262) Linux:
15527
15528Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
15529correct sleep time in seconds.
15530
15531----------------------------------------
1553214 July 2003.  Summary of changes for version 20030619:
15533
155341) ACPI CA Core Subsystem:
15535
15536Parse SSDTs in order discovered, as opposed to reverse order
15537(Hrvoje Habjanic)
15538
15539Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
15540Klausner,
15541   Nate Lawson)
15542
15543
155442) Linux:
15545
15546Dynamically allocate SDT list (suggested by Andi Kleen)
15547
15548proc function return value cleanups (Andi Kleen)
15549
15550Correctly handle NMI watchdog during long stalls (Andrew Morton)
15551
15552Make it so acpismp=force works (reported by Andrew Morton)
15553
15554
15555----------------------------------------
1555619 June 2003.  Summary of changes for version 20030619:
15557
155581) ACPI CA Core Subsystem:
15559
15560Fix To/FromBCD, eliminating the need for an arch-specific #define.
15561
15562Do not acquire a semaphore in the S5 shutdown path.
15563
15564Fix ex_digits_needed for 0. (Takayoshi Kochi)
15565
15566Fix sleep/stall code reversal. (Andi Kleen)
15567
15568Revert a change having to do with control method calling
15569semantics.
15570
155712) Linux:
15572
15573acpiphp update (Takayoshi Kochi)
15574
15575Export acpi_disabled for sonypi (Stelian Pop)
15576
15577Mention acpismp=force in config help
15578
15579Re-add acpitable.c and acpismp=force. This improves backwards
15580
15581compatibility and also cleans up the code to a significant degree.
15582
15583Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
15584
15585----------------------------------------
1558622 May 2003.  Summary of changes for version 20030522:
15587
155881) ACPI CA Core Subsystem:
15589
15590Found and fixed a reported problem where an AE_NOT_FOUND error
15591occurred occasionally during _BST evaluation.  This turned out to
15592be an Owner ID allocation issue where a called method did not get
15593a new ID assigned to it.  Eventually, (after 64k calls), the Owner
15594ID UINT16 would wraparound so that the ID would be the same as the
15595caller's and the called method would delete the caller's
15596namespace.
15597
15598Implemented extended error reporting for control methods that are
15599aborted due to a run-time exception.  Output includes the exact
15600AML instruction that caused the method abort, a dump of the method
15601locals and arguments at the time of the abort, and a trace of all
15602nested control method calls.
15603
15604Modified the interpreter to allow the creation of buffers of zero
15605length from the AML code. Implemented new code to ensure that no
15606attempt is made to actually allocate a memory buffer (of length
15607zero) - instead, a simple buffer object with a NULL buffer pointer
15608and length zero is created.  A warning is no longer issued when
15609the AML attempts to create a zero-length buffer.
15610
15611Implemented a workaround for the "leading asterisk issue" in
15612_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
15613asterisk is automatically removed if present in any HID, UID, or
15614CID strings.  The iASL compiler will still flag this asterisk as
15615an error, however.
15616
15617Implemented full support for _CID methods that return a package of
15618multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
15619now additionally returns a device _CID list if present.  This
15620required a change to the external interface in order to pass an
15621ACPI_BUFFER object as a parameter since the _CID list is of
15622variable length.
15623
15624Fixed a problem with the new AE_SAME_HANDLER exception where
15625handler initialization code did not know about this exception.
15626
15627Code and Data Size: Current and previous core subsystem library
15628sizes are shown below.  These are the code and data sizes for the
15629acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15630these values do not include any ACPI driver or OSPM code.  The
15631debug version of the code includes the debug output trace
15632mechanism and has a much larger code and data size.  Note that
15633these values will vary depending on the efficiency of the compiler
15634and the compiler options used during generation.
15635
15636  Previous Release (20030509):
15637    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
15638    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
15639  Current Release:
15640    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
15641    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
15642
15643
156442) Linux:
15645
15646Fixed a bug in which we would reinitialize the ACPI interrupt
15647after it was already working, thus disabling all ACPI and the IRQs
15648for any other device sharing the interrupt. (Thanks to Stian
15649Jordet)
15650
15651Toshiba driver update (John Belmonte)
15652
15653Return only 0 or 1 for our interrupt handler status (Andrew
15654Morton)
15655
15656
156573) iASL Compiler:
15658
15659Fixed a reported problem where multiple (nested) ElseIf()
15660statements were not handled correctly by the compiler, resulting
15661in incorrect warnings and incorrect AML code.  This was a problem
15662in both the ASL parser and the code generator.
15663
15664
156654) Documentation:
15666
15667Added changes to existing interfaces, new exception codes, and new
15668text concerning reference count object management versus garbage
15669collection.
15670
15671----------------------------------------
1567209 May 2003.  Summary of changes for version 20030509.
15673
15674
156751) ACPI CA Core Subsystem:
15676
15677Changed the subsystem initialization sequence to hold off
15678installation of address space handlers until the hardware has been
15679initialized and the system has entered ACPI mode.  This is because
15680the installation of space handlers can cause _REG methods to be
15681run.  Previously, the _REG methods could potentially be run before
15682ACPI mode was enabled.
15683
15684Fixed some memory leak issues related to address space handler and
15685notify handler installation.  There were some problems with the
15686reference count mechanism caused by the fact that the handler
15687objects are shared across several namespace objects.
15688
15689Fixed a reported problem where reference counts within the
15690namespace were not properly updated when named objects created by
15691method execution were deleted.
15692
15693Fixed a reported problem where multiple SSDTs caused a deletion
15694issue during subsystem termination.  Restructured the table data
15695structures to simplify the linked lists and the related code.
15696
15697Fixed a problem where the table ID associated with secondary
15698tables (SSDTs) was not being propagated into the namespace objects
15699created by those tables.  This would only present a problem for
15700tables that are unloaded at run-time, however.
15701
15702Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
15703type as the length parameter (instead of UINT32).
15704
15705Solved a long-standing problem where an ALREADY_EXISTS error
15706appears on various systems.  This problem could happen when there
15707are multiple PCI_Config operation regions under a single PCI root
15708bus.  This doesn't happen very frequently, but there are some
15709systems that do this in the ASL.
15710
15711Fixed a reported problem where the internal DeleteNode function
15712was incorrectly handling the case where a namespace node was the
15713first in the parent's child list, and had additional peers (not
15714the only child, but first in the list of children.)
15715
15716Code and Data Size: Current core subsystem library sizes are shown
15717below.  These are the code and data sizes for the acpica.lib
15718produced by the Microsoft Visual C++ 6.0 compiler, and these
15719values do not include any ACPI driver or OSPM code.  The debug
15720version of the code includes the debug output trace mechanism and
15721has a much larger code and data size.  Note that these values will
15722vary depending on the efficiency of the compiler and the compiler
15723options used during generation.
15724
15725  Previous Release
15726    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
15727    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
15728  Current Release:
15729    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
15730    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
15731
15732
157332) Linux:
15734
15735Allow ":" in OS override string (Ducrot Bruno)
15736
15737Kobject fix (Greg KH)
15738
15739
157403 iASL Compiler/Disassembler:
15741
15742Fixed a problem in the generation of the C source code files (AML
15743is emitted in C source statements for BIOS inclusion) where the
15744Ascii dump that appears within a C comment at the end of each line
15745could cause a compile time error if the AML sequence happens to
15746have an open comment or close comment sequence embedded.
15747
15748
15749----------------------------------------
1575024 April 2003.  Summary of changes for version 20030424.
15751
15752
157531) ACPI CA Core Subsystem:
15754
15755Support for big-endian systems has been implemented.  Most of the
15756support has been invisibly added behind big-endian versions of the
15757ACPI_MOVE_* macros.
15758
15759Fixed a problem in AcpiHwDisableGpeBlock() and
15760AcpiHwClearGpeBlock() where an incorrect offset was passed to the
15761low level hardware write routine.  The offset parameter was
15762actually eliminated from the low level read/write routines because
15763they had become obsolete.
15764
15765Fixed a problem where a handler object was deleted twice during
15766the removal of a fixed event handler.
15767
15768
157692) Linux:
15770
15771A fix for SMP systems with link devices was contributed by
15772
15773Compaq's Dan Zink.
15774
15775(2.5) Return whether we handled the interrupt in our IRQ handler.
15776(Linux ISRs no longer return void, so we can propagate the handler
15777return value from the ACPI CA core back to the OS.)
15778
15779
15780
157813) Documentation:
15782
15783The ACPI CA Programmer Reference has been updated to reflect new
15784interfaces and changes to existing interfaces.
15785
15786----------------------------------------
1578728 March 2003.  Summary of changes for version 20030328.
15788
157891) ACPI CA Core Subsystem:
15790
15791The GPE Block Device support has been completed.  New interfaces
15792are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
15793interfaces (enable, disable, clear, getstatus) have been split
15794into separate interfaces for Fixed Events and General Purpose
15795Events (GPEs) in order to support GPE Block Devices properly.
15796
15797Fixed a problem where the error message "Failed to acquire
15798semaphore" would appear during operations on the embedded
15799controller (EC).
15800
15801Code and Data Size: Current core subsystem library sizes are shown
15802below.  These are the code and data sizes for the acpica.lib
15803produced by the Microsoft Visual C++ 6.0 compiler, and these
15804values do not include any ACPI driver or OSPM code.  The debug
15805version of the code includes the debug output trace mechanism and
15806has a much larger code and data size.  Note that these values will
15807vary depending on the efficiency of the compiler and the compiler
15808options used during generation.
15809
15810  Previous Release
15811    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
15812    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
15813  Current Release:
15814    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
15815    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
15816
15817
15818----------------------------------------
1581928 February 2003.  Summary of changes for version 20030228.
15820
15821
158221) ACPI CA Core Subsystem:
15823
15824The GPE handling and dispatch code has been completely overhauled
15825in preparation for support of GPE Block Devices (ID ACPI0006).
15826This affects internal data structures and code only; there should
15827be no differences visible externally.  One new file has been
15828added, evgpeblk.c
15829
15830The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
15831fields that are used to determine the GPE block lengths.  The
15832REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
15833structures are ignored.  This is per the ACPI specification but it
15834isn't very clear.  The full 256 Block 0/1 GPEs are now supported
15835(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
15836
15837In the SCI interrupt handler, removed the read of the PM1_CONTROL
15838register to look at the SCI_EN bit.  On some machines, this read
15839causes an SMI event and greatly slows down SCI events.  (This may
15840in fact be the cause of slow battery status response on some
15841systems.)
15842
15843Fixed a problem where a store of a NULL string to a package object
15844could cause the premature deletion of the object.  This was seen
15845during execution of the battery _BIF method on some systems,
15846resulting in no battery data being returned.
15847
15848Added AcpiWalkResources interface to simplify parsing of resource
15849lists.
15850
15851Code and Data Size: Current core subsystem library sizes are shown
15852below.  These are the code and data sizes for the acpica.lib
15853produced by the Microsoft Visual C++ 6.0 compiler, and these
15854values do not include any ACPI driver or OSPM code.  The debug
15855version of the code includes the debug output trace mechanism and
15856has a much larger code and data size.  Note that these values will
15857vary depending on the efficiency of the compiler and the compiler
15858options used during generation.
15859
15860  Previous Release
15861    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15862    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15863  Current Release:
15864    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
15865    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
15866
15867
158682) Linux
15869
15870S3 fixes (Ole Rohne)
15871
15872Update ACPI PHP driver with to use new acpi_walk_resource API
15873(Bjorn Helgaas)
15874
15875Add S4BIOS support (Pavel Machek)
15876
15877Map in entire table before performing checksum (John Stultz)
15878
15879Expand the mem= cmdline to allow the specification of reserved and
15880ACPI DATA blocks (Pavel Machek)
15881
15882Never use ACPI on VISWS
15883
15884Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
15885
15886Revert a change that allowed P_BLK lengths to be 4 or 5. This is
15887causing us to think that some systems support C2 when they really
15888don't.
15889
15890Do not count processor objects for non-present CPUs (Thanks to
15891Dominik Brodowski)
15892
15893
158943) iASL Compiler:
15895
15896Fixed a problem where ASL include files could not be found and
15897opened.
15898
15899Added support for the _PDC reserved name.
15900
15901
15902----------------------------------------
1590322 January 2003.  Summary of changes for version 20030122.
15904
15905
159061) ACPI CA Core Subsystem:
15907
15908Added a check for constructs of the form:  Store (Local0, Local0)
15909where Local0 is not initialized.  Apparently, some BIOS
15910programmers believe that this is a NOOP.  Since this store doesn't
15911do anything anyway, the new prototype behavior will ignore this
15912error.  This is a case where we can relax the strict checking in
15913the interpreter in the name of compatibility.
15914
15915
159162) Linux
15917
15918The AcpiSrc Source Conversion Utility has been released with the
15919Linux package for the first time.  This is the utility that is
15920used to convert the ACPI CA base source code to the Linux version.
15921
15922(Both) Handle P_BLK lengths shorter than 6 more gracefully
15923
15924(Both) Move more headers to include/acpi, and delete an unused
15925header.
15926
15927(Both) Move drivers/acpi/include directory to include/acpi
15928
15929(Both) Boot functions don't use cmdline, so don't pass it around
15930
15931(Both) Remove include of unused header (Adrian Bunk)
15932
15933(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
15934the
15935former now also includes the latter, acpiphp.h only needs the one,
15936now.
15937
15938(2.5) Make it possible to select method of bios restoring after S3
15939resume. [=> no more ugly ifdefs] (Pavel Machek)
15940
15941(2.5) Make proc write interfaces work (Pavel Machek)
15942
15943(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
15944
15945(2.5) Break out ACPI Perf code into its own module, under cpufreq
15946(Dominik Brodowski)
15947
15948(2.4) S4BIOS support (Ducrot Bruno)
15949
15950(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
15951Visinoni)
15952
15953
159543) iASL Compiler:
15955
15956Added support to disassemble SSDT and PSDTs.
15957
15958Implemented support to obtain SSDTs from the Windows registry if
15959available.
15960
15961
15962----------------------------------------
1596309 January 2003.  Summary of changes for version 20030109.
15964
159651) ACPI CA Core Subsystem:
15966
15967Changed the behavior of the internal Buffer-to-String conversion
15968function.  The current ACPI specification states that the contents
15969of the buffer are "converted to a string of two-character
15970hexadecimal numbers, each separated by a space".  Unfortunately,
15971this definition is not backwards compatible with existing ACPI 1.0
15972implementations (although the behavior was not defined in the ACPI
159731.0 specification).  The new behavior simply copies data from the
15974buffer to the string until a null character is found or the end of
15975the buffer is reached.  The new String object is always null
15976terminated.  This problem was seen during the generation of _BIF
15977battery data where incorrect strings were returned for battery
15978type, etc.  This will also require an errata to the ACPI
15979specification.
15980
15981Renamed all instances of NATIVE_UINT and NATIVE_INT to
15982ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
15983
15984Copyright in all module headers (both Linux and non-Linux) has be
15985updated to 2003.
15986
15987Code and Data Size: Current core subsystem library sizes are shown
15988below.  These are the code and data sizes for the acpica.lib
15989produced by the Microsoft Visual C++ 6.0 compiler, and these
15990values do not include any ACPI driver or OSPM code.  The debug
15991version of the code includes the debug output trace mechanism and
15992has a much larger code and data size.  Note that these values will
15993vary depending on the efficiency of the compiler and the compiler
15994options used during generation.
15995
15996  Previous Release
15997    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15998    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15999  Current Release:
16000    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
16001    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
16002
16003
160042) Linux
16005
16006Fixed an oops on module insertion/removal (Matthew Tippett)
16007
16008(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
16009
16010(2.5) Replace pr_debug (Randy Dunlap)
16011
16012(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
16013
16014(Both) Eliminate spawning of thread from timer callback, in favor
16015of schedule_work()
16016
16017(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
16018
16019(Both) Added define for Fixed Function HW region (Matthew Wilcox)
16020
16021(Both) Add missing statics to button.c (Pavel Machek)
16022
16023Several changes have been made to the source code translation
16024utility that generates the Linux Code in order to make the code
16025more "Linux-like":
16026
16027All typedefs on structs and unions have been removed in keeping
16028with the Linux coding style.
16029
16030Removed the non-Linux SourceSafe module revision number from each
16031module header.
16032
16033Completed major overhaul of symbols to be lowercase for linux.
16034Doubled the number of symbols that are lowercase.
16035
16036Fixed a problem where identifiers within procedure headers and
16037within quotes were not fully lower cased (they were left with a
16038starting capital.)
16039
16040Some C macros whose only purpose is to allow the generation of 16-
16041bit code are now completely removed in the Linux code, increasing
16042readability and maintainability.
16043
16044----------------------------------------
16045
1604612 December 2002.  Summary of changes for version 20021212.
16047
16048
160491) ACPI CA Core Subsystem:
16050
16051Fixed a problem where the creation of a zero-length AML Buffer
16052would cause a fault.
16053
16054Fixed a problem where a Buffer object that pointed to a static AML
16055buffer (in an ACPI table) could inadvertently be deleted, causing
16056memory corruption.
16057
16058Fixed a problem where a user buffer (passed in to the external
16059ACPI CA interfaces) could be overwritten if the buffer was too
16060small to complete the operation, causing memory corruption.
16061
16062Fixed a problem in the Buffer-to-String conversion code where a
16063string of length one was always returned, regardless of the size
16064of the input Buffer object.
16065
16066Removed the NATIVE_CHAR data type across the entire source due to
16067lack of need and lack of consistent use.
16068
16069Code and Data Size: Current core subsystem library sizes are shown
16070below.  These are the code and data sizes for the acpica.lib
16071produced by the Microsoft Visual C++ 6.0 compiler, and these
16072values do not include any ACPI driver or OSPM code.  The debug
16073version of the code includes the debug output trace mechanism and
16074has a much larger code and data size.  Note that these values will
16075vary depending on the efficiency of the compiler and the compiler
16076options used during generation.
16077
16078  Previous Release
16079    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
16080    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
16081  Current Release:
16082    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
16083    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
16084
16085
16086----------------------------------------
1608705 December 2002.  Summary of changes for version 20021205.
16088
160891) ACPI CA Core Subsystem:
16090
16091Fixed a problem where a store to a String or Buffer object could
16092cause corruption of the DSDT if the object type being stored was
16093the same as the target object type and the length of the object
16094being stored was equal to or smaller than the original (existing)
16095target object.  This was seen to cause corruption of battery _BIF
16096buffers if the _BIF method modified the buffer on the fly.
16097
16098Fixed a problem where an internal error was generated if a control
16099method invocation was used in an OperationRegion, Buffer, or
16100Package declaration.  This was caused by the deferred parsing of
16101the control method and thus the deferred creation of the internal
16102method object.  The solution to this problem was to create the
16103internal method object at the moment the method is encountered in
16104the first pass - so that subsequent references to the method will
16105able to obtain the required parameter count and thus properly
16106parse the method invocation.  This problem presented itself as an
16107AE_AML_INTERNAL during the pass 1 parse phase during table load.
16108
16109Fixed a problem where the internal String object copy routine did
16110not always allocate sufficient memory for the target String object
16111and caused memory corruption.  This problem was seen to cause
16112"Allocation already present in list!" errors as memory allocation
16113became corrupted.
16114
16115Implemented a new function for the evaluation of namespace objects
16116that allows the specification of the allowable return object
16117types.  This simplifies a lot of code that checks for a return
16118object of one or more specific objects returned from the
16119evaluation (such as _STA, etc.)  This may become and external
16120function if it would be useful to ACPI-related drivers.
16121
16122Completed another round of prefixing #defines with "ACPI_" for
16123clarity.
16124
16125Completed additional code restructuring to allow more modular
16126linking for iASL compiler and AcpiExec.  Several files were split
16127creating new files.  New files:  nsparse.c dsinit.c evgpe.c
16128
16129Implemented an abort mechanism to terminate an executing control
16130method via the AML debugger.  This feature is useful for debugging
16131control methods that depend (wait) for specific hardware
16132responses.
16133
16134Code and Data Size: Current core subsystem library sizes are shown
16135below.  These are the code and data sizes for the acpica.lib
16136produced by the Microsoft Visual C++ 6.0 compiler, and these
16137values do not include any ACPI driver or OSPM code.  The debug
16138version of the code includes the debug output trace mechanism and
16139has a much larger code and data size.  Note that these values will
16140vary depending on the efficiency of the compiler and the compiler
16141options used during generation.
16142
16143  Previous Release
16144    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16145    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
16146  Current Release:
16147    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
16148    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
16149
16150
161512) iASL Compiler/Disassembler
16152
16153Fixed a compiler code generation problem for "Interrupt" Resource
16154Descriptors.  If specified in the ASL, the optional "Resource
16155Source Index" and "Resource Source" fields were not inserted into
16156the correct location within the AML resource descriptor, creating
16157an invalid descriptor.
16158
16159Fixed a disassembler problem for "Interrupt" resource descriptors.
16160The optional "Resource Source Index" and "Resource Source" fields
16161were ignored.
16162
16163
16164----------------------------------------
1616522 November 2002.  Summary of changes for version 20021122.
16166
16167
161681) ACPI CA Core Subsystem:
16169
16170Fixed a reported problem where an object stored to a Method Local
16171or Arg was not copied to a new object during the store - the
16172object pointer was simply copied to the Local/Arg.  This caused
16173all subsequent operations on the Local/Arg to also affect the
16174original source of the store operation.
16175
16176Fixed a problem where a store operation to a Method Local or Arg
16177was not completed properly if the Local/Arg contained a reference
16178(from RefOf) to a named field.  The general-purpose store-to-
16179namespace-node code is now used so that this case is handled
16180automatically.
16181
16182Fixed a problem where the internal object copy routine would cause
16183a protection fault if the object being copied was a Package and
16184contained either 1) a NULL package element or 2) a nested sub-
16185package.
16186
16187Fixed a problem with the GPE initialization that resulted from an
16188ambiguity in the ACPI specification.  One section of the
16189specification states that both the address and length of the GPE
16190block must be zero if the block is not supported.  Another section
16191implies that only the address need be zero if the block is not
16192supported.  The code has been changed so that both the address and
16193the length must be non-zero to indicate a valid GPE block (i.e.,
16194if either the address or the length is zero, the GPE block is
16195invalid.)
16196
16197Code and Data Size: Current core subsystem library sizes are shown
16198below.  These are the code and data sizes for the acpica.lib
16199produced by the Microsoft Visual C++ 6.0 compiler, and these
16200values do not include any ACPI driver or OSPM code.  The debug
16201version of the code includes the debug output trace mechanism and
16202has a much larger code and data size.  Note that these values will
16203vary depending on the efficiency of the compiler and the compiler
16204options used during generation.
16205
16206  Previous Release
16207    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
16208    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
16209  Current Release:
16210    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16211    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
16212
16213
162142) Linux
16215
16216Cleaned up EC driver. Exported an external EC read/write
16217interface. By going through this, other drivers (most notably
16218sonypi) will be able to serialize access to the EC.
16219
16220
162213) iASL Compiler/Disassembler
16222
16223Implemented support to optionally generate include files for both
16224ASM and C (the -i switch).  This simplifies BIOS development by
16225automatically creating include files that contain external
16226declarations for the symbols that are created within the
16227
16228(optionally generated) ASM and C AML source files.
16229
16230
16231----------------------------------------
1623215 November 2002.  Summary of changes for version 20021115.
16233
162341) ACPI CA Core Subsystem:
16235
16236Fixed a memory leak problem where an error during resolution of
16237
16238method arguments during a method invocation from another method
16239failed to cleanup properly by deleting all successfully resolved
16240argument objects.
16241
16242Fixed a problem where the target of the Index() operator was not
16243correctly constructed if the source object was a package.  This
16244problem has not been detected because the use of a target operand
16245with Index() is very rare.
16246
16247Fixed a problem with the Index() operator where an attempt was
16248made to delete the operand objects twice.
16249
16250Fixed a problem where an attempt was made to delete an operand
16251twice during execution of the CondRefOf() operator if the target
16252did not exist.
16253
16254Implemented the first of perhaps several internal create object
16255functions that create and initialize a specific object type.  This
16256consolidates duplicated code wherever the object is created, thus
16257shrinking the size of the subsystem.
16258
16259Implemented improved debug/error messages for errors that occur
16260during nested method invocations.  All executing method pathnames
16261are displayed (with the error) as the call stack is unwound - thus
16262simplifying debug.
16263
16264Fixed a problem introduced in the 10/02 release that caused
16265premature deletion of a buffer object if a buffer was used as an
16266ASL operand where an integer operand is required (Thus causing an
16267implicit object conversion from Buffer to Integer.)  The change in
16268the 10/02 release was attempting to fix a memory leak (albeit
16269incorrectly.)
16270
16271Code and Data Size: Current core subsystem library sizes are shown
16272below.  These are the code and data sizes for the acpica.lib
16273produced by the Microsoft Visual C++ 6.0 compiler, and these
16274values do not include any ACPI driver or OSPM code.  The debug
16275version of the code includes the debug output trace mechanism and
16276has a much larger code and data size.  Note that these values will
16277vary depending on the efficiency of the compiler and the compiler
16278options used during generation.
16279
16280  Previous Release
16281    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
16282    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
16283  Current Release:
16284    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
16285    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
16286
16287
162882) Linux
16289
16290Changed the implementation of the ACPI semaphores to use down()
16291instead of down_interruptable().  It is important that the
16292execution of ACPI control methods not be interrupted by signals.
16293Methods must run to completion, or the system may be left in an
16294unknown/unstable state.
16295
16296Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
16297(Shawn Starr)
16298
16299
163003) iASL Compiler/Disassembler
16301
16302
16303Changed the default location of output files.  All output files
16304are now placed in the current directory by default instead of in
16305the directory of the source file.  This change may affect some
16306existing makefiles, but it brings the behavior of the compiler in
16307line with other similar tools.  The location of the output files
16308can be overridden with the -p command line switch.
16309
16310
16311----------------------------------------
1631211 November 2002.  Summary of changes for version 20021111.
16313
16314
163150) ACPI Specification 2.0B is released and is now available at:
16316http://www.acpi.info/index.html
16317
16318
163191) ACPI CA Core Subsystem:
16320
16321Implemented support for the ACPI 2.0 SMBus Operation Regions.
16322This includes the early detection and handoff of the request to
16323the SMBus region handler (avoiding all of the complex field
16324support code), and support for the bidirectional return packet
16325from an SMBus write operation.  This paves the way for the
16326development of SMBus drivers in each host operating system.
16327
16328Fixed a problem where the semaphore WAIT_FOREVER constant was
16329defined as 32 bits, but must be 16 bits according to the ACPI
16330specification.  This had the side effect of causing ASL
16331Mutex/Event timeouts even though the ASL code requested a wait
16332forever.  Changed all internal references to the ACPI timeout
16333parameter to 16 bits to prevent future problems.  Changed the name
16334of WAIT_FOREVER to ACPI_WAIT_FOREVER.
16335
16336Code and Data Size: Current core subsystem library sizes are shown
16337below.  These are the code and data sizes for the acpica.lib
16338produced by the Microsoft Visual C++ 6.0 compiler, and these
16339values do not include any ACPI driver or OSPM code.  The debug
16340version of the code includes the debug output trace mechanism and
16341has a much larger code and data size.  Note that these values will
16342vary depending on the efficiency of the compiler and the compiler
16343options used during generation.
16344
16345  Previous Release
16346    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16347    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
16348  Current Release:
16349    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
16350    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
16351
16352
163532) Linux
16354
16355Module loading/unloading fixes (John Cagle)
16356
16357
163583) iASL Compiler/Disassembler
16359
16360Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
16361
16362Implemented support for the disassembly of all SMBus protocol
16363keywords (SMBQuick, SMBWord, etc.)
16364
16365----------------------------------------
1636601 November 2002.  Summary of changes for version 20021101.
16367
16368
163691) ACPI CA Core Subsystem:
16370
16371Fixed a problem where platforms that have a GPE1 block but no GPE0
16372block were not handled correctly.  This resulted in a "GPE
16373overlap" error message.  GPE0 is no longer required.
16374
16375Removed code added in the previous release that inserted nodes
16376into the namespace in alphabetical order.  This caused some side-
16377effects on various machines.  The root cause of the problem is
16378still under investigation since in theory, the internal ordering
16379of the namespace nodes should not matter.
16380
16381
16382Enhanced error reporting for the case where a named object is not
16383found during control method execution.  The full ACPI namepath
16384(name reference) of the object that was not found is displayed in
16385this case.
16386
16387Note: as a result of the overhaul of the namespace object types in
16388the previous release, the namespace nodes for the predefined
16389scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
16390instead of ACPI_TYPE_ANY.  This simplifies the namespace
16391management code but may affect code that walks the namespace tree
16392looking for specific object types.
16393
16394Code and Data Size: Current core subsystem library sizes are shown
16395below.  These are the code and data sizes for the acpica.lib
16396produced by the Microsoft Visual C++ 6.0 compiler, and these
16397values do not include any ACPI driver or OSPM code.  The debug
16398version of the code includes the debug output trace mechanism and
16399has a much larger code and data size.  Note that these values will
16400vary depending on the efficiency of the compiler and the compiler
16401options used during generation.
16402
16403  Previous Release
16404    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
16405    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
16406  Current Release:
16407    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16408    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
16409
16410
164112) Linux
16412
16413Fixed a problem introduced in the previous release where the
16414Processor and Thermal objects were not recognized and installed in
16415/proc.  This was related to the scope type change described above.
16416
16417
164183) iASL Compiler/Disassembler
16419
16420Implemented the -g option to get all of the required ACPI tables
16421from the registry and save them to files (Windows version of the
16422compiler only.)  The required tables are the FADT, FACS, and DSDT.
16423
16424Added ACPI table checksum validation during table disassembly in
16425order to catch corrupted tables.
16426
16427
16428----------------------------------------
1642922 October 2002.  Summary of changes for version 20021022.
16430
164311) ACPI CA Core Subsystem:
16432
16433Implemented a restriction on the Scope operator that the target
16434must already exist in the namespace at the time the operator is
16435encountered (during table load or method execution).  In other
16436words, forward references are not allowed and Scope() cannot
16437create a new object. This changes the previous behavior where the
16438interpreter would create the name if not found.  This new behavior
16439correctly enables the search-to-root algorithm during namespace
16440lookup of the target name.  Because of this upsearch, this fixes
16441the known Compaq _SB_.OKEC problem and makes both the AML
16442interpreter and iASL compiler compatible with other ACPI
16443implementations.
16444
16445Completed a major overhaul of the internal ACPI object types for
16446the ACPI Namespace and the associated operand objects.  Many of
16447these types had become obsolete with the introduction of the two-
16448pass namespace load.  This cleanup simplifies the code and makes
16449the entire namespace load mechanism much clearer and easier to
16450understand.
16451
16452Improved debug output for tracking scope opening/closing to help
16453diagnose scoping issues.  The old scope name as well as the new
16454scope name are displayed.  Also improved error messages for
16455problems with ASL Mutex objects and error messages for GPE
16456problems.
16457
16458Cleaned up the namespace dump code, removed obsolete code.
16459
16460All string output (for all namespace/object dumps) now uses the
16461common ACPI string output procedure which handles escapes properly
16462and does not emit non-printable characters.
16463
16464Fixed some issues with constants in the 64-bit version of the
16465local C library (utclib.c)
16466
16467
164682) Linux
16469
16470EC Driver:  No longer attempts to acquire the Global Lock at
16471interrupt level.
16472
16473
164743) iASL Compiler/Disassembler
16475
16476Implemented ACPI 2.0B grammar change that disallows all Type 1 and
164772 opcodes outside of a control method.  This means that the
16478"executable" operators (versus the "namespace" operators) cannot
16479be used at the table level; they can only be used within a control
16480method.
16481
16482Implemented the restriction on the Scope() operator where the
16483target must already exist in the namespace at the time the
16484operator is encountered (during ASL compilation). In other words,
16485forward references are not allowed and Scope() cannot create a new
16486object.  This makes the iASL compiler compatible with other ACPI
16487implementations and makes the Scope() implementation adhere to the
16488ACPI specification.
16489
16490Fixed a problem where namepath optimization for the Alias operator
16491was optimizing the wrong path (of the two namepaths.)  This caused
16492a "Missing alias link" error message.
16493
16494Fixed a problem where an "unknown reserved name" warning could be
16495incorrectly generated for names like "_SB" when the trailing
16496underscore is not used in the original ASL.
16497
16498Fixed a problem where the reserved name check did not handle
16499NamePaths with multiple NameSegs correctly.  The first nameseg of
16500the NamePath was examined instead of the last NameSeg.
16501
16502
16503----------------------------------------
16504
1650502 October 2002.  Summary of changes for this release.
16506
16507
165081) ACPI CA Core Subsystem version 20021002:
16509
16510Fixed a problem where a store/copy of a string to an existing
16511string did not always set the string length properly in the String
16512object.
16513
16514Fixed a reported problem with the ToString operator where the
16515behavior was identical to the ToHexString operator instead of just
16516simply converting a raw buffer to a string data type.
16517
16518Fixed a problem where CopyObject and the other "explicit"
16519conversion operators were not updating the internal namespace node
16520type as part of the store operation.
16521
16522Fixed a memory leak during implicit source operand conversion
16523where the original object was not deleted if it was converted to a
16524new object of a different type.
16525
16526Enhanced error messages for all problems associated with namespace
16527lookups.  Common procedure generates and prints the lookup name as
16528well as the formatted status.
16529
16530Completed implementation of a new design for the Alias support
16531within the namespace.  The existing design did not handle the case
16532where a new object was assigned to one of the two names due to the
16533use of an explicit conversion operator, resulting in the two names
16534pointing to two different objects.  The new design simply points
16535the Alias name to the original name node - not to the object.
16536This results in a level of indirection that must be handled in the
16537name resolution mechanism.
16538
16539Code and Data Size: Current core subsystem library sizes are shown
16540below.  These are the code and data sizes for the acpica.lib
16541produced by the Microsoft Visual C++ 6.0 compiler, and these
16542values do not include any ACPI driver or OSPM code.  The debug
16543version of the code includes the debug output trace mechanism and
16544has a larger code and data size.  Note that these values will vary
16545depending on the efficiency of the compiler and the compiler
16546options used during generation.
16547
16548  Previous Release
16549    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
16550    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
16551  Current Release:
16552    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
16553    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
16554
16555
165562) Linux
16557
16558Initialize thermal driver's timer before it is used. (Knut
16559Neumann)
16560
16561Allow handling negative celsius values. (Kochi Takayoshi)
16562
16563Fix thermal management and make trip points. R/W (Pavel Machek)
16564
16565Fix /proc/acpi/sleep. (P. Christeas)
16566
16567IA64 fixes. (David Mosberger)
16568
16569Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
16570
16571Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
16572Brodowski)
16573
16574
165753) iASL Compiler/Disassembler
16576
16577Clarified some warning/error messages.
16578
16579
16580----------------------------------------
1658118 September 2002.  Summary of changes for this release.
16582
16583
165841) ACPI CA Core Subsystem version 20020918:
16585
16586Fixed a reported problem with reference chaining (via the Index()
16587and RefOf() operators) in the ObjectType() and SizeOf() operators.
16588The definition of these operators includes the dereferencing of
16589all chained references to return information on the base object.
16590
16591Fixed a problem with stores to indexed package elements - the
16592existing code would not complete the store if an "implicit
16593conversion" was not performed.  In other words, if the existing
16594object (package element) was to be replaced completely, the code
16595didn't handle this case.
16596
16597Relaxed typechecking on the ASL "Scope" operator to allow the
16598target name to refer to an object of type Integer, String, or
16599Buffer, in addition to the scoping object types (Device,
16600predefined Scopes, Processor, PowerResource, and ThermalZone.)
16601This allows existing AML code that has workarounds for a bug in
16602Windows to function properly.  A warning is issued, however.  This
16603affects both the AML interpreter and the iASL compiler. Below is
16604an example of this type of ASL code:
16605
16606      Name(DEB,0x00)
16607      Scope(DEB)
16608      {
16609
16610Fixed some reported problems with 64-bit integer support in the
16611local implementation of C library functions (clib.c)
16612
16613
166142) Linux
16615
16616Use ACPI fix map region instead of IOAPIC region, since it is
16617undefined in non-SMP.
16618
16619Ensure that the SCI has the proper polarity and trigger, even on
16620systems that do not have an interrupt override entry in the MADT.
16621
166222.5 big driver reorganization (Pat Mochel)
16623
16624Use early table mapping code from acpitable.c (Andi Kleen)
16625
16626New blacklist entries (Andi Kleen)
16627
16628Blacklist improvements. Split blacklist code out into a separate
16629file. Move checking the blacklist to very early. Previously, we
16630would use ACPI tables, and then halfway through init, check the
16631blacklist -- too late. Now, it's early enough to completely fall-
16632back to non-ACPI.
16633
16634
166353) iASL Compiler/Disassembler version 20020918:
16636
16637Fixed a problem where the typechecking code didn't know that an
16638alias could point to a method.  In other words, aliases were not
16639being dereferenced during typechecking.
16640
16641
16642----------------------------------------
1664329 August 2002.  Summary of changes for this release.
16644
166451) ACPI CA Core Subsystem Version 20020829:
16646
16647If the target of a Scope() operator already exists, it must be an
16648object type that actually opens a scope -- such as a Device,
16649Method, Scope, etc.  This is a fatal runtime error.  Similar error
16650check has been added to the iASL compiler also.
16651
16652Tightened up the namespace load to disallow multiple names in the
16653same scope.  This previously was allowed if both objects were of
16654the same type.  (i.e., a lookup was the same as entering a new
16655name).
16656
16657
166582) Linux
16659
16660Ensure that the ACPI interrupt has the proper trigger and
16661polarity.
16662
16663local_irq_disable is extraneous. (Matthew Wilcox)
16664
16665Make "acpi=off" actually do what it says, and not use the ACPI
16666interpreter *or* the tables.
16667
16668Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
16669Takayoshi)
16670
16671
166723) iASL Compiler/Disassembler  Version 20020829:
16673
16674Implemented namepath optimization for name declarations.  For
16675example, a declaration like "Method (\_SB_.ABCD)" would get
16676optimized to "Method (ABCD)" if the declaration is within the
16677\_SB_ scope.  This optimization is in addition to the named
16678reference path optimization first released in the previous
16679version. This would seem to complete all possible optimizations
16680for namepaths within the ASL/AML.
16681
16682If the target of a Scope() operator already exists, it must be an
16683object type that actually opens a scope -- such as a Device,
16684Method, Scope, etc.
16685
16686Implemented a check and warning for unreachable code in the same
16687block below a Return() statement.
16688
16689Fixed a problem where the listing file was not generated if the
16690compiler aborted if the maximum error count was exceeded (200).
16691
16692Fixed a problem where the typechecking of method return values was
16693broken.  This includes the check for a return value when the
16694method is invoked as a TermArg (a return value is expected.)
16695
16696Fixed a reported problem where EOF conditions during a quoted
16697string or comment caused a fault.
16698
16699
16700----------------------------------------
1670115 August 2002.  Summary of changes for this release.
16702
167031) ACPI CA Core Subsystem Version 20020815:
16704
16705Fixed a reported problem where a Store to a method argument that
16706contains a reference did not perform the indirect store correctly.
16707This problem was created during the conversion to the new
16708reference object model - the indirect store to a method argument
16709code was not updated to reflect the new model.
16710
16711Reworked the ACPI mode change code to better conform to ACPI 2.0,
16712handle corner cases, and improve code legibility (Kochi Takayoshi)
16713
16714Fixed a problem with the pathname parsing for the carat (^)
16715prefix.  The heavy use of the carat operator by the new namepath
16716optimization in the iASL compiler uncovered a problem with the AML
16717interpreter handling of this prefix.  In the case where one or
16718more carats precede a single nameseg, the nameseg was treated as
16719standalone and the search rule (to root) was inadvertently
16720applied.  This could cause both the iASL compiler and the
16721interpreter to find the wrong object or to miss the error that
16722should occur if the object does not exist at that exact pathname.
16723
16724Found and fixed the problem where the HP Pavilion DSDT would not
16725load.  This was a relatively minor tweak to the table loading code
16726(a problem caused by the unexpected encounter with a method
16727invocation not within a control method), but it does not solve the
16728overall issue of the execution of AML code at the table level.
16729This investigation is still ongoing.
16730
16731Code and Data Size: Current core subsystem library sizes are shown
16732below.  These are the code and data sizes for the acpica.lib
16733produced by the Microsoft Visual C++ 6.0 compiler, and these
16734values do not include any ACPI driver or OSPM code.  The debug
16735version of the code includes the debug output trace mechanism and
16736has a larger code and data size.  Note that these values will vary
16737depending on the efficiency of the compiler and the compiler
16738options used during generation.
16739
16740  Previous Release
16741    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
16742    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
16743  Current Release:
16744    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
16745    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
16746
16747
167482) Linux
16749
16750Remove redundant slab.h include (Brad Hards)
16751
16752Fix several bugs in thermal.c (Herbert Nachtnebel)
16753
16754Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
16755
16756Change acpi_system_suspend to use updated irq functions (Pavel
16757Machek)
16758
16759Export acpi_get_firmware_table (Matthew Wilcox)
16760
16761Use proper root proc entry for ACPI (Kochi Takayoshi)
16762
16763Fix early-boot table parsing (Bjorn Helgaas)
16764
16765
167663) iASL Compiler/Disassembler
16767
16768Reworked the compiler options to make them more consistent and to
16769use two-letter options where appropriate.  We were running out of
16770sensible letters.   This may break some makefiles, so check the
16771current options list by invoking the compiler with no parameters.
16772
16773Completed the design and implementation of the ASL namepath
16774optimization option for the compiler.  This option optimizes all
16775references to named objects to the shortest possible path.  The
16776first attempt tries to utilize a single nameseg (4 characters) and
16777the "search-to-root" algorithm used by the interpreter.  If that
16778cannot be used (because either the name is not in the search path
16779or there is a conflict with another object with the same name),
16780the pathname is optimized using the carat prefix (usually a
16781shorter string than specifying the entire path from the root.)
16782
16783Implemented support to obtain the DSDT from the Windows registry
16784(when the disassembly option is specified with no input file).
16785Added this code as the implementation for AcpiOsTableOverride in
16786the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
16787utility) to scan memory for the DSDT to the AcpiOsTableOverride
16788function in the DOS OSL to make the disassembler truly OS
16789independent.
16790
16791Implemented a new option to disassemble and compile in one step.
16792When used without an input filename, this option will grab the
16793DSDT from the local machine, disassemble it, and compile it in one
16794step.
16795
16796Added a warning message for invalid escapes (a backslash followed
16797by any character other than the allowable escapes).  This catches
16798the quoted string error "\_SB_" (which should be "\\_SB_" ).
16799
16800Also, there are numerous instances in the ACPI specification where
16801this error occurs.
16802
16803Added a compiler option to disable all optimizations.  This is
16804basically the "compatibility mode" because by using this option,
16805the AML code will come out exactly the same as other ASL
16806compilers.
16807
16808Added error messages for incorrectly ordered dependent resource
16809functions.  This includes: missing EndDependentFn macro at end of
16810dependent resource list, nested dependent function macros (both
16811start and end), and missing StartDependentFn macro.  These are
16812common errors that should be caught at compile time.
16813
16814Implemented _OSI support for the disassembler and compiler.  _OSI
16815must be included in the namespace for proper disassembly (because
16816the disassembler must know the number of arguments.)
16817
16818Added an "optimization" message type that is optional (off by
16819default).  This message is used for all optimizations - including
16820constant folding, integer optimization, and namepath optimization.
16821
16822----------------------------------------
1682325 July 2002.  Summary of changes for this release.
16824
16825
168261) ACPI CA Core Subsystem Version 20020725:
16827
16828The AML Disassembler has been enhanced to produce compilable ASL
16829code and has been integrated into the iASL compiler (see below) as
16830well as the single-step disassembly for the AML debugger and the
16831disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
16832resource templates and macros are fully supported.  The
16833disassembler has been tested on over 30 different AML files,
16834producing identical AML when the resulting disassembled ASL file
16835is recompiled with the same ASL compiler.
16836
16837Modified the Resource Manager to allow zero interrupts and zero
16838dma channels during the GetCurrentResources call.  This was
16839causing problems on some platforms.
16840
16841Added the AcpiOsRedirectOutput interface to the OSL to simplify
16842output redirection for the AcpiOsPrintf and AcpiOsVprintf
16843interfaces.
16844
16845Code and Data Size: Current core subsystem library sizes are shown
16846below.  These are the code and data sizes for the acpica.lib
16847produced by the Microsoft Visual C++ 6.0 compiler, and these
16848values do not include any ACPI driver or OSPM code.  The debug
16849version of the code includes the debug output trace mechanism and
16850has a larger code and data size.  Note that these values will vary
16851depending on the efficiency of the compiler and the compiler
16852options used during generation.
16853
16854  Previous Release
16855    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
16856    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
16857  Current Release:
16858    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
16859    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
16860
16861
168622) Linux
16863
16864Fixed a panic in the EC driver (Dominik Brodowski)
16865
16866Implemented checksum of the R/XSDT itself during Linux table scan
16867(Richard Schaal)
16868
16869
168703) iASL compiler
16871
16872The AML disassembler is integrated into the compiler.  The "-d"
16873option invokes the disassembler  to completely disassemble an
16874input AML file, producing as output a text ASL file with the
16875extension ".dsl" (to avoid name collisions with existing .asl
16876source files.)  A future enhancement will allow the disassembler
16877to obtain the BIOS DSDT from the registry under Windows.
16878
16879Fixed a problem with the VendorShort and VendorLong resource
16880descriptors where an invalid AML sequence was created.
16881
16882Implemented a fix for BufferData term in the ASL parser.  It was
16883inadvertently defined twice, allowing invalid syntax to pass and
16884causing reduction conflicts.
16885
16886Fixed a problem where the Ones opcode could get converted to a
16887value of zero if "Ones" was used where a byte, word or dword value
16888was expected.  The 64-bit value is now truncated to the correct
16889size with the correct value.
16890
16891
16892
16893----------------------------------------
1689402 July 2002.  Summary of changes for this release.
16895
16896
168971) ACPI CA Core Subsystem Version 20020702:
16898
16899The Table Manager code has been restructured to add several new
16900features.  Tables that are not required by the core subsystem
16901(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
16902validated in any way and are returned from AcpiGetFirmwareTable if
16903requested.  The AcpiOsTableOverride interface is now called for
16904each table that is loaded by the subsystem in order to allow the
16905host to override any table it chooses.  Previously, only the DSDT
16906could be overridden.  Added one new files, tbrsdt.c and
16907tbgetall.c.
16908
16909Fixed a problem with the conversion of internal package objects to
16910external objects (when a package is returned from a control
16911method.)  The return buffer length was set to zero instead of the
16912proper length of the package object.
16913
16914Fixed a reported problem with the use of the RefOf and DeRefOf
16915operators when passing reference arguments to control methods.  A
16916new type of Reference object is used internally for references
16917produced by the RefOf operator.
16918
16919Added additional error messages in the Resource Manager to explain
16920AE_BAD_DATA errors when they occur during resource parsing.
16921
16922Split the AcpiEnableSubsystem into two primitives to enable a
16923finer granularity initialization sequence.  These two calls should
16924be called in this order: AcpiEnableSubsystem (flags),
16925AcpiInitializeObjects (flags).  The flags parameter remains the
16926same.
16927
16928
169292) Linux
16930
16931Updated the ACPI utilities module to understand the new style of
16932fully resolved package objects that are now returned from the core
16933subsystem.  This eliminates errors of the form:
16934
16935    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
16936    acpi_utils-0430 [145] acpi_evaluate_reference:
16937        Invalid element in package (not a device reference)
16938
16939The method evaluation utility uses the new buffer allocation
16940scheme instead of calling AcpiEvaluate Object twice.
16941
16942Added support for ECDT. This allows the use of the Embedded
16943
16944Controller before the namespace has been fully initialized, which
16945is necessary for ACPI 2.0 support, and for some laptops to
16946initialize properly. (Laptops using ECDT are still rare, so only
16947limited testing was performed of the added functionality.)
16948
16949Fixed memory leaks in the EC driver.
16950
16951Eliminated a brittle code structure in acpi_bus_init().
16952
16953Eliminated the acpi_evaluate() helper function in utils.c. It is
16954no longer needed since acpi_evaluate_object can optionally
16955allocate memory for the return object.
16956
16957Implemented fix for keyboard hang when getting battery readings on
16958some systems (Stephen White)
16959
16960PCI IRQ routing update (Dominik Brodowski)
16961
16962Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
16963support
16964
16965----------------------------------------
1696611 June 2002.  Summary of changes for this release.
16967
16968
169691) ACPI CA Core Subsystem Version 20020611:
16970
16971Fixed a reported problem where constants such as Zero and One
16972appearing within _PRT packages were not handled correctly within
16973the resource manager code.  Originally reported against the ASL
16974compiler because the code generator now optimizes integers to
16975their minimal AML representation (i.e. AML constants if possible.)
16976The _PRT code now handles all AML constant opcodes correctly
16977(Zero, One, Ones, Revision).
16978
16979Fixed a problem with the Concatenate operator in the AML
16980interpreter where a buffer result object was incorrectly marked as
16981not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
16982
16983All package sub-objects are now fully resolved before they are
16984returned from the external ACPI interfaces.  This means that name
16985strings are resolved to object handles, and constant operators
16986(Zero, One, Ones, Revision) are resolved to Integers.
16987
16988Implemented immediate resolution of the AML Constant opcodes
16989(Zero, One, Ones, Revision) to Integer objects upon detection
16990within the AML stream. This has simplified and reduced the
16991generated code size of the subsystem by eliminating about 10
16992switch statements for these constants (which previously were
16993contained in Reference objects.)  The complicating issues are that
16994the Zero opcode is used as a "placeholder" for unspecified
16995optional target operands and stores to constants are defined to be
16996no-ops.
16997
16998Code and Data Size: Current core subsystem library sizes are shown
16999below. These are the code and data sizes for the acpica.lib
17000produced by the Microsoft Visual C++ 6.0 compiler, and these
17001values do not include any ACPI driver or OSPM code.  The debug
17002version of the code includes the debug output trace mechanism and
17003has a larger code and data size.  Note that these values will vary
17004depending on the efficiency of the compiler and the compiler
17005options used during generation.
17006
17007  Previous Release
17008    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
17009    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
17010  Current Release:
17011    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
17012    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
17013
17014
170152) Linux
17016
17017
17018Added preliminary support for obtaining _TRA data for PCI root
17019bridges (Bjorn Helgaas).
17020
17021
170223) iASL Compiler Version X2046:
17023
17024Fixed a problem where the "_DDN" reserved name was defined to be a
17025control method with one argument.  There are no arguments, and
17026_DDN does not have to be a control method.
17027
17028Fixed a problem with the Linux version of the compiler where the
17029source lines printed with error messages were the wrong lines.
17030This turned out to be the "LF versus CR/LF" difference between
17031Windows and Unix.  This appears to be the longstanding issue
17032concerning listing output and error messages.
17033
17034Fixed a problem with the Linux version of compiler where opcode
17035names within error messages were wrong.  This was caused by a
17036slight difference in the output of the Flex tool on Linux versus
17037Windows.
17038
17039Fixed a problem with the Linux compiler where the hex output files
17040contained some garbage data caused by an internal buffer overrun.
17041
17042
17043----------------------------------------
1704417 May 2002.  Summary of changes for this release.
17045
17046
170471) ACPI CA Core Subsystem Version 20020517:
17048
17049Implemented a workaround to an BIOS bug discovered on the HP
17050OmniBook where the FADT revision number and the table size are
17051inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
17052behavior is to fallback to using only the ACPI 1.0 fields of the
17053FADT if the table is too small to be a ACPI 2.0 table as claimed
17054by the revision number.  Although this is a BIOS bug, this is a
17055case where the workaround is simple enough and with no side
17056effects, so it seemed prudent to add it.  A warning message is
17057issued, however.
17058
17059Implemented minimum size checks for the fixed-length ACPI tables -
17060- the FADT and FACS, as well as consistency checks between the
17061revision number and the table size.
17062
17063Fixed a reported problem in the table override support where the
17064new table pointer was incorrectly treated as a physical address
17065instead of a logical address.
17066
17067Eliminated the use of the AE_AML_ERROR exception and replaced it
17068with more descriptive codes.
17069
17070Fixed a problem where an exception would occur if an ASL Field was
17071defined with no named Field Units underneath it (used by some
17072index fields).
17073
17074Code and Data Size: Current core subsystem library sizes are shown
17075below.  These are the code and data sizes for the acpica.lib
17076produced by the Microsoft Visual C++ 6.0 compiler, and these
17077values do not include any ACPI driver or OSPM code.  The debug
17078version of the code includes the debug output trace mechanism and
17079has a larger code and data size.  Note that these values will vary
17080depending on the efficiency of the compiler and the compiler
17081options used during generation.
17082
17083  Previous Release
17084    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
17085    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
17086  Current Release:
17087    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
17088    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
17089
17090
17091
170922) Linux
17093
17094Much work done on ACPI init (MADT and PCI IRQ routing support).
17095(Paul D. and Dominik Brodowski)
17096
17097Fix PCI IRQ-related panic on boot (Sam Revitch)
17098
17099Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
17100
17101Fix "MHz" typo (Dominik Brodowski)
17102
17103Fix RTC year 2000 issue (Dominik Brodowski)
17104
17105Preclude multiple button proc entries (Eric Brunet)
17106
17107Moved arch-specific code out of include/platform/aclinux.h
17108
171093) iASL Compiler Version X2044:
17110
17111Implemented error checking for the string used in the EISAID macro
17112(Usually used in the definition of the _HID object.)  The code now
17113strictly enforces the PnP format - exactly 7 characters, 3
17114uppercase letters and 4 hex digits.
17115
17116If a raw string is used in the definition of the _HID object
17117(instead of the EISAID macro), the string must contain all
17118alphanumeric characters (e.g., "*PNP0011" is not allowed because
17119of the asterisk.)
17120
17121Implemented checking for invalid use of ACPI reserved names for
17122most of the name creation operators (Name, Device, Event, Mutex,
17123OperationRegion, PowerResource, Processor, and ThermalZone.)
17124Previously, this check was only performed for control methods.
17125
17126Implemented an additional check on the Name operator to emit an
17127error if a reserved name that must be implemented in ASL as a
17128control method is used.  We know that a reserved name must be a
17129method if it is defined with input arguments.
17130
17131The warning emitted when a namespace object reference is not found
17132during the cross reference phase has been changed into an error.
17133The "External" directive should be used for names defined in other
17134modules.
17135
17136
171374) Tools and Utilities
17138
17139The 16-bit tools (adump16 and aexec16) have been regenerated and
17140tested.
17141
17142Fixed a problem with the output of both acpidump and adump16 where
17143the indentation of closing parentheses and brackets was not
17144
17145aligned properly with the parent block.
17146
17147
17148----------------------------------------
1714903 May 2002.  Summary of changes for this release.
17150
17151
171521) ACPI CA Core Subsystem Version 20020503:
17153
17154Added support a new OSL interface that allows the host operating
17155
17156system software to override the DSDT found in the firmware -
17157AcpiOsTableOverride.  With this interface, the OSL can examine the
17158version of the firmware DSDT and replace it with a different one
17159if desired.
17160
17161Added new external interfaces for accessing ACPI registers from
17162device drivers and other system software - AcpiGetRegister and
17163AcpiSetRegister.  This was simply an externalization of the
17164existing AcpiHwBitRegister interfaces.
17165
17166Fixed a regression introduced in the previous build where the
17167ASL/AML CreateField operator always returned an error,
17168"destination must be a NS Node".
17169
17170Extended the maximum time (before failure) to successfully enable
17171ACPI mode to 3 seconds.
17172
17173Code and Data Size: Current core subsystem library sizes are shown
17174below.  These are the code and data sizes for the acpica.lib
17175produced by the Microsoft Visual C++ 6.0 compiler, and these
17176values do not include any ACPI driver or OSPM code.  The debug
17177version of the code includes the debug output trace mechanism and
17178has a larger code and data size.  Note that these values will vary
17179depending on the efficiency of the compiler and the compiler
17180options used during generation.
17181
17182  Previous Release
17183    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
17184    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
17185  Current Release:
17186    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
17187    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
17188
17189
171902) Linux
17191
17192Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
17193free. While 3 out of 4 of our in-house systems work fine, the last
17194one still hangs when testing the LAPIC timer.
17195
17196Renamed many files in 2.5 kernel release to omit "acpi_" from the
17197name.
17198
17199Added warning on boot for Presario 711FR.
17200
17201Sleep improvements (Pavel Machek)
17202
17203ACPI can now be built without CONFIG_PCI enabled.
17204
17205IA64: Fixed memory map functions (JI Lee)
17206
17207
172083) iASL Compiler Version X2043:
17209
17210Added support to allow the compiler to be integrated into the MS
17211VC++ development environment for one-button compilation of single
17212files or entire projects -- with error-to-source-line mapping.
17213
17214Implemented support for compile-time constant folding for the
17215Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
17216specification.  This allows the ASL writer to use expressions
17217instead of Integer/Buffer/String constants in terms that must
17218evaluate to constants at compile time and will also simplify the
17219emitted AML in any such sub-expressions that can be folded
17220(evaluated at compile-time.)  This increases the size of the
17221compiler significantly because a portion of the ACPI CA AML
17222interpreter is included within the compiler in order to pre-
17223evaluate constant expressions.
17224
17225
17226Fixed a problem with the "Unicode" ASL macro that caused the
17227compiler to fault.  (This macro is used in conjunction with the
17228_STR reserved name.)
17229
17230Implemented an AML opcode optimization to use the Zero, One, and
17231Ones opcodes where possible to further reduce the size of integer
17232constants and thus reduce the overall size of the generated AML
17233code.
17234
17235Implemented error checking for new reserved terms for ACPI version
172362.0A.
17237
17238Implemented the -qr option to display the current list of ACPI
17239reserved names known to the compiler.
17240
17241Implemented the -qc option to display the current list of ASL
17242operators that are allowed within constant expressions and can
17243therefore be folded at compile time if the operands are constants.
17244
17245
172464) Documentation
17247
17248Updated the Programmer's Reference for new interfaces, data types,
17249and memory allocation model options.
17250
17251Updated the iASL Compiler User Reference to apply new format and
17252add information about new features and options.
17253
17254----------------------------------------
1725519 April 2002.  Summary of changes for this release.
17256
172571) ACPI CA Core Subsystem Version 20020419:
17258
17259The source code base for the Core Subsystem has been completely
17260cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
17261versions.  The Lint option files used are included in the
17262/acpi/generate/lint directory.
17263
17264Implemented enhanced status/error checking across the entire
17265Hardware manager subsystem.  Any hardware errors (reported from
17266the OSL) are now bubbled up and will abort a running control
17267method.
17268
17269
17270Fixed a problem where the per-ACPI-table integer width (32 or 64)
17271was stored only with control method nodes, causing a fault when
17272non-control method code was executed during table loading.  The
17273solution implemented uses a global variable to indicate table
17274width across the entire ACPI subsystem.  Therefore, ACPI CA does
17275not support mixed integer widths across different ACPI tables
17276(DSDT, SSDT).
17277
17278Fixed a problem where NULL extended fields (X fields) in an ACPI
172792.0 ACPI FADT caused the table load to fail.  Although the
17280existing ACPI specification is a bit fuzzy on this topic, the new
17281behavior is to fall back on a ACPI 1.0 field if the corresponding
17282ACPI 2.0 X field is zero (even though the table revision indicates
17283a full ACPI 2.0 table.)  The ACPI specification will be updated to
17284clarify this issue.
17285
17286Fixed a problem with the SystemMemory operation region handler
17287where memory was always accessed byte-wise even if the AML-
17288specified access width was larger than a byte.  This caused
17289problems on systems with memory-mapped I/O.  Memory is now
17290accessed with the width specified.  On systems that do not support
17291non-aligned transfers, a check is made to guarantee proper address
17292alignment before proceeding in order to avoid an AML-caused
17293alignment fault within the kernel.
17294
17295
17296Fixed a problem with the ExtendedIrq resource where only one byte
17297of the 4-byte Irq field was extracted.
17298
17299Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
17300function was out of date and required a rewrite.
17301
17302Code and Data Size: Current core subsystem library sizes are shown
17303below.  These are the code and data sizes for the acpica.lib
17304produced by the Microsoft Visual C++ 6.0 compiler, and these
17305values do not include any ACPI driver or OSPM code.  The debug
17306version of the code includes the debug output trace mechanism and
17307has a larger code and data size.  Note that these values will vary
17308depending on the efficiency of the compiler and the compiler
17309options used during generation.
17310
17311  Previous Release
17312    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
17313    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
17314  Current Release:
17315    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
17316    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
17317
17318
173192) Linux
17320
17321PCI IRQ routing fixes (Dominik Brodowski)
17322
17323
173243) iASL Compiler Version X2042:
17325
17326Implemented an additional compile-time error check for a field
17327unit whose size + minimum access width would cause a run-time
17328access beyond the end-of-region.  Previously, only the field size
17329itself was checked.
17330
17331The Core subsystem and iASL compiler now share a common parse
17332object in preparation for compile-time evaluation of the type
173333/4/5 ASL operators.
17334
17335
17336----------------------------------------
17337Summary of changes for this release: 03_29_02
17338
173391) ACPI CA Core Subsystem Version 20020329:
17340
17341Implemented support for late evaluation of TermArg operands to
17342Buffer and Package objects.  This allows complex expressions to be
17343used in the declarations of these object types.
17344
17345Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
173461.0, if the field was larger than 32 bits, it was returned as a
17347buffer - otherwise it was returned as an integer.  In ACPI 2.0,
17348the field is returned as a buffer only if the field is larger than
1734964 bits.  The TableRevision is now considered when making this
17350conversion to avoid incompatibility with existing ASL code.
17351
17352Implemented logical addressing for AcpiOsGetRootPointer.  This
17353allows an RSDP with either a logical or physical address.  With
17354this support, the host OS can now override all ACPI tables with
17355one logical RSDP.  Includes implementation of  "typed" pointer
17356support to allow a common data type for both physical and logical
17357pointers internally.  This required a change to the
17358AcpiOsGetRootPointer interface.
17359
17360Implemented the use of ACPI 2.0 Generic Address Structures for all
17361GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
17362mapped I/O for these ACPI features.
17363
17364Initialization now ignores not only non-required tables (All
17365tables other than the FADT, FACS, DSDT, and SSDTs), but also does
17366not validate the table headers of unrecognized tables.
17367
17368Fixed a problem where a notify handler could only be
17369installed/removed on an object of type Device.  All "notify"
17370
17371objects are now supported -- Devices, Processor, Power, and
17372Thermal.
17373
17374Removed most verbosity from the ACPI_DB_INFO debug level.  Only
17375critical information is returned when this debug level is enabled.
17376
17377Code and Data Size: Current core subsystem library sizes are shown
17378below.  These are the code and data sizes for the acpica.lib
17379produced by the Microsoft Visual C++ 6.0 compiler, and these
17380values do not include any ACPI driver or OSPM code.  The debug
17381version of the code includes the debug output trace mechanism and
17382has a larger code and data size.  Note that these values will vary
17383depending on the efficiency of the compiler and the compiler
17384options used during generation.
17385
17386  Previous Release
17387    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
17388    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
17389  Current Release:
17390    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
17391    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
17392
17393
173942) Linux:
17395
17396The processor driver (acpi_processor.c) now fully supports ACPI
173972.0-based processor performance control (e.g. Intel(R)
17398SpeedStep(TM) technology) Note that older laptops that only have
17399the Intel "applet" interface are not supported through this.  The
17400'limit' and 'performance' interface (/proc) are fully functional.
17401[Note that basic policy for controlling performance state
17402transitions will be included in the next version of ospmd.]  The
17403idle handler was modified to more aggressively use C2, and PIIX4
17404errata handling underwent a complete overhaul (big thanks to
17405Dominik Brodowski).
17406
17407Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
17408based devices in the ACPI namespace are now dynamically bound
17409(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
17410This allows, among other things, ACPI to resolve bus numbers for
17411subordinate PCI bridges.
17412
17413Enhanced PCI IRQ routing to get the proper bus number for _PRT
17414entries defined underneath PCI bridges.
17415
17416Added IBM 600E to bad bios list due to invalid _ADR value for
17417PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
17418
17419In the process of adding full MADT support (e.g. IOAPIC) for IA32
17420(acpi.c, mpparse.c) -- stay tuned.
17421
17422Added back visual differentiation between fixed-feature and
17423control-method buttons in dmesg.  Buttons are also subtyped (e.g.
17424button/power/PWRF) to simplify button identification.
17425
17426We no longer use -Wno-unused when compiling debug. Please ignore
17427any "_THIS_MODULE defined but not used" messages.
17428
17429Can now shut down the system using "magic sysrq" key.
17430
17431
174323) iASL Compiler version 2041:
17433
17434Fixed a problem where conversion errors for hex/octal/decimal
17435constants were not reported.
17436
17437Implemented a fix for the General Register template Address field.
17438This field was 8 bits when it should be 64.
17439
17440Fixed a problem where errors/warnings were no longer being emitted
17441within the listing output file.
17442
17443Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
17444exactly 4 characters, alphanumeric only.
17445
17446
17447
17448
17449----------------------------------------
17450Summary of changes for this release: 03_08_02
17451
17452
174531) ACPI CA Core Subsystem Version 20020308:
17454
17455Fixed a problem with AML Fields where the use of the "AccessAny"
17456keyword could cause an interpreter error due to attempting to read
17457or write beyond the end of the parent Operation Region.
17458
17459Fixed a problem in the SystemMemory Operation Region handler where
17460an attempt was made to map memory beyond the end of the region.
17461This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
17462errors on some Linux systems.
17463
17464Fixed a problem where the interpreter/namespace "search to root"
17465algorithm was not functioning for some object types.  Relaxed the
17466internal restriction on the search to allow upsearches for all
17467external object types as well as most internal types.
17468
17469
174702) Linux:
17471
17472We now use safe_halt() macro versus individual calls to sti | hlt.
17473
17474Writing to the processor limit interface should now work. "echo 1"
17475will increase the limit, 2 will decrease, and 0 will reset to the
17476
17477default.
17478
17479
174803) ASL compiler:
17481
17482Fixed segfault on Linux version.
17483
17484
17485----------------------------------------
17486Summary of changes for this release: 02_25_02
17487
174881) ACPI CA Core Subsystem:
17489
17490
17491Fixed a problem where the GPE bit masks were not initialized
17492properly, causing erratic GPE behavior.
17493
17494Implemented limited support for multiple calling conventions.  The
17495code can be generated with either the VPL (variable parameter
17496list, or "C") convention, or the FPL (fixed parameter list, or
17497"Pascal") convention.  The core subsystem is about 3.4% smaller
17498when generated with FPL.
17499
17500
175012) Linux
17502
17503Re-add some /proc/acpi/event functionality that was lost during
17504the rewrite
17505
17506Resolved issue with /proc events for fixed-feature buttons showing
17507up as the system device.
17508
17509Fixed checks on C2/C3 latencies to be inclusive of maximum values.
17510
17511Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
17512
17513Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
17514
17515Fixed limit interface & usage to fix bugs with passive cooling
17516hysterisis.
17517
17518Restructured PRT support.
17519
17520
17521----------------------------------------
17522Summary of changes for this label: 02_14_02
17523
17524
175251) ACPI CA Core Subsystem:
17526
17527Implemented support in AcpiLoadTable to allow loading of FACS and
17528FADT tables.
17529
17530Support for the now-obsolete interim 0.71 64-bit ACPI tables has
17531been removed.  All 64-bit platforms should be migrated to the ACPI
175322.0 tables.  The actbl71.h header has been removed from the source
17533tree.
17534
17535All C macros defined within the subsystem have been prefixed with
17536"ACPI_" to avoid collision with other system include files.
17537
17538Removed the return value for the two AcpiOsPrint interfaces, since
17539it is never used and causes lint warnings for ignoring the return
17540value.
17541
17542Added error checking to all internal mutex acquire and release
17543calls.  Although a failure from one of these interfaces is
17544probably a fatal system error, these checks will cause the
17545immediate abort of the currently executing method or interface.
17546
17547Fixed a problem where the AcpiSetCurrentResources interface could
17548fault.  This was a side effect of the deployment of the new memory
17549allocation model.
17550
17551Fixed a couple of problems with the Global Lock support introduced
17552in the last major build.  The "common" (1.0/2.0) internal FACS was
17553being overwritten with the FACS signature and clobbering the
17554Global Lock pointer.  Also, the actual firmware FACS was being
17555unmapped after construction of the "common" FACS, preventing
17556access to the actual Global Lock field within it.  The "common"
17557internal FACS is no longer installed as an actual ACPI table; it
17558is used simply as a global.
17559
17560Code and Data Size: Current core subsystem library sizes are shown
17561below.  These are the code and data sizes for the acpica.lib
17562produced by the Microsoft Visual C++ 6.0 compiler, and these
17563values do not include any ACPI driver or OSPM code.  The debug
17564version of the code includes the debug output trace mechanism and
17565has a larger code and data size.  Note that these values will vary
17566depending on the efficiency of the compiler and the compiler
17567options used during generation.
17568
17569  Previous Release (02_07_01)
17570    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
17571    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
17572  Current Release:
17573    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
17574    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
17575
17576
175772) Linux
17578
17579Updated Linux-specific code for core macro and OSL interface
17580changes described above.
17581
17582Improved /proc/acpi/event. It now can be opened only once and has
17583proper poll functionality.
17584
17585Fixed and restructured power management (acpi_bus).
17586
17587Only create /proc "view by type" when devices of that class exist.
17588
17589Fixed "charging/discharging" bug (and others) in acpi_battery.
17590
17591Improved thermal zone code.
17592
17593
175943) ASL Compiler, version X2039:
17595
17596
17597Implemented the new compiler restriction on ASL String hex/octal
17598escapes to non-null, ASCII values.  An error results if an invalid
17599value is used.  (This will require an ACPI 2.0 specification
17600change.)
17601
17602AML object labels that are output to the optional C and ASM source
17603are now prefixed with both the ACPI table signature and table ID
17604to help guarantee uniqueness within a large BIOS project.
17605
17606
17607----------------------------------------
17608Summary of changes for this label: 02_01_02
17609
176101) ACPI CA Core Subsystem:
17611
17612ACPI 2.0 support is complete in the entire Core Subsystem and the
17613ASL compiler. All new ACPI 2.0 operators are implemented and all
17614other changes for ACPI 2.0 support are complete.  With
17615simultaneous code and data optimizations throughout the subsystem,
17616ACPI 2.0 support has been implemented with almost no additional
17617cost in terms of code and data size.
17618
17619Implemented a new mechanism for allocation of return buffers.  If
17620the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
17621be allocated on behalf of the caller.  Consolidated all return
17622buffer validation and allocation to a common procedure.  Return
17623buffers will be allocated via the primary OSL allocation interface
17624since it appears that a separate pool is not needed by most users.
17625If a separate pool is required for these buffers, the caller can
17626still use the original mechanism and pre-allocate the buffer(s).
17627
17628Implemented support for string operands within the DerefOf
17629operator.
17630
17631Restructured the Hardware and Event managers to be table driven,
17632simplifying the source code and reducing the amount of generated
17633code.
17634
17635Split the common read/write low-level ACPI register bitfield
17636procedure into a separate read and write, simplifying the code
17637considerably.
17638
17639Obsoleted the AcpiOsCallocate OSL interface.  This interface was
17640used only a handful of times and didn't have enough critical mass
17641for a separate interface.  Replaced with a common calloc procedure
17642in the core.
17643
17644Fixed a reported problem with the GPE number mapping mechanism
17645that allows GPE1 numbers to be non-contiguous with GPE0.
17646Reorganized the GPE information and shrunk a large array that was
17647originally large enough to hold info for all possible GPEs (256)
17648to simply large enough to hold all GPEs up to the largest GPE
17649number on the machine.
17650
17651Fixed a reported problem with resource structure alignment on 64-
17652bit platforms.
17653
17654Changed the AcpiEnableEvent and AcpiDisableEvent external
17655interfaces to not require any flags for the common case of
17656enabling/disabling a GPE.
17657
17658Implemented support to allow a "Notify" on a Processor object.
17659
17660Most TBDs in comments within the source code have been resolved
17661and eliminated.
17662
17663
17664Fixed a problem in the interpreter where a standalone parent
17665prefix (^) was not handled correctly in the interpreter and
17666debugger.
17667
17668Removed obsolete and unnecessary GPE save/restore code.
17669
17670Implemented Field support in the ASL Load operator.  This allows a
17671table to be loaded from a named field, in addition to loading a
17672table directly from an Operation Region.
17673
17674Implemented timeout and handle support in the external Global Lock
17675interfaces.
17676
17677Fixed a problem in the AcpiDump utility where pathnames were no
17678longer being generated correctly during the dump of named objects.
17679
17680Modified the AML debugger to give a full display of if/while
17681predicates instead of just one AML opcode at a time.  (The
17682predicate can have several nested ASL statements.)  The old method
17683was confusing during single stepping.
17684
17685Code and Data Size: Current core subsystem library sizes are shown
17686below. These are the code and data sizes for the acpica.lib
17687produced by the Microsoft Visual C++ 6.0 compiler, and these
17688values do not include any ACPI driver or OSPM code.  The debug
17689version of the code includes the debug output trace mechanism and
17690has a larger code and data size.  Note that these values will vary
17691depending on the efficiency of the compiler and the compiler
17692options used during generation.
17693
17694  Previous Release (12_18_01)
17695     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
17696     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
17697   Current Release:
17698     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
17699     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
17700
177012) Linux
17702
17703 Implemented fix for PIIX reverse throttling errata (Processor
17704driver)
17705
17706Added new Limit interface (Processor and Thermal drivers)
17707
17708New thermal policy (Thermal driver)
17709
17710Many updates to /proc
17711
17712Battery "low" event support (Battery driver)
17713
17714Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
17715
17716IA32 - IA64 initialization unification, no longer experimental
17717
17718Menuconfig options redesigned
17719
177203) ASL Compiler, version X2037:
17721
17722Implemented several new output features to simplify integration of
17723AML code into  firmware: 1) Output the AML in C source code with
17724labels for each named ASL object.  The    original ASL source code
17725is interleaved as C comments. 2) Output the AML in ASM source code
17726with labels and interleaved ASL    source. 3) Output the AML in
17727raw hex table form, in either C or ASM.
17728
17729Implemented support for optional string parameters to the
17730LoadTable operator.
17731
17732Completed support for embedded escape sequences within string
17733literals.  The compiler now supports all single character escapes
17734as well as the Octal and Hex escapes.  Note: the insertion of a
17735null byte into a string literal (via the hex/octal escape) causes
17736the string to be immediately terminated.  A warning is issued.
17737
17738Fixed a problem where incorrect AML was generated for the case
17739where an ASL namepath consists of a single parent prefix (
17740
17741) with no trailing name segments.
17742
17743The compiler has been successfully generated with a 64-bit C
17744compiler.
17745
17746
17747
17748
17749----------------------------------------
17750Summary of changes for this label: 12_18_01
17751
177521) Linux
17753
17754Enhanced blacklist with reason and severity fields. Any table's
17755signature may now be used to identify a blacklisted system.
17756
17757Call _PIC control method to inform the firmware which interrupt
17758model the OS is using. Turn on any disabled link devices.
17759
17760Cleaned up busmgr /proc error handling (Andreas Dilger)
17761
17762 2) ACPI CA Core Subsystem:
17763
17764Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
17765while loop)
17766
17767Completed implementation of the ACPI 2.0 "Continue",
17768"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
17769operators.  All new ACPI 2.0 operators are now implemented in both
17770the ASL compiler and the AML interpreter.  The only remaining ACPI
177712.0 task is support for the String data type in the DerefOf
17772operator.  Fixed a problem with AcquireMutex where the status code
17773was lost if the caller had to actually wait for the mutex.
17774
17775Increased the maximum ASL Field size from 64K bits to 4G bits.
17776
17777Completed implementation of the external Global Lock interfaces --
17778AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
17779Handler parameters were added.
17780
17781Completed another pass at removing warnings and issues when
17782compiling with 64-bit compilers.  The code now compiles cleanly
17783with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
17784add and subtract (diff) macros have changed considerably.
17785
17786
17787Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1778864-bit platforms, 32-bits on all others.  This type is used
17789wherever memory allocation and/or the C sizeof() operator is used,
17790and affects the OSL memory allocation interfaces AcpiOsAllocate
17791and AcpiOsCallocate.
17792
17793Implemented sticky user breakpoints in the AML debugger.
17794
17795Code and Data Size: Current core subsystem library sizes are shown
17796below. These are the code and data sizes for the acpica.lib
17797produced by the Microsoft Visual C++ 6.0 compiler, and these
17798values do not include any ACPI driver or OSPM code.  The debug
17799version of the code includes the debug output trace mechanism and
17800has a larger code and data size. Note that these values will vary
17801depending on the efficiency of the compiler and the compiler
17802options used during generation.
17803
17804  Previous Release (12_05_01)
17805     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
17806     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
17807   Current Release:
17808     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
17809     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
17810
17811 3) ASL Compiler, version X2034:
17812
17813Now checks for (and generates an error if detected) the use of a
17814Break or Continue statement without an enclosing While statement.
17815
17816
17817Successfully generated the compiler with the Intel 64-bit C
17818compiler.
17819
17820 ----------------------------------------
17821Summary of changes for this label: 12_05_01
17822
17823 1) ACPI CA Core Subsystem:
17824
17825The ACPI 2.0 CopyObject operator is fully implemented.  This
17826operator creates a new copy of an object (and is also used to
17827bypass the "implicit conversion" mechanism of the Store operator.)
17828
17829The ACPI 2.0 semantics for the SizeOf operator are fully
17830implemented.  The change is that performing a SizeOf on a
17831reference object causes an automatic dereference of the object to
17832the actual value before the size is evaluated. This behavior was
17833undefined in ACPI 1.0.
17834
17835The ACPI 2.0 semantics for the Extended IRQ resource descriptor
17836have been implemented.  The interrupt polarity and mode are now
17837independently set.
17838
17839Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
17840appearing in Package objects were not properly converted to
17841integers when the internal Package was converted to an external
17842object (via the AcpiEvaluateObject interface.)
17843
17844Fixed a problem with the namespace object deletion mechanism for
17845objects created by control methods.  There were two parts to this
17846problem: 1) Objects created during the initialization phase method
17847parse were not being deleted, and 2) The object owner ID mechanism
17848to track objects was broken.
17849
17850Fixed a problem where the use of the ASL Scope operator within a
17851control method would result in an invalid opcode exception.
17852
17853Fixed a problem introduced in the previous label where the buffer
17854length required for the _PRT structure was not being returned
17855correctly.
17856
17857Code and Data Size: Current core subsystem library sizes are shown
17858below. These are the code and data sizes for the acpica.lib
17859produced by the Microsoft Visual C++ 6.0 compiler, and these
17860values do not include any ACPI driver or OSPM code.  The debug
17861version of the code includes the debug output trace mechanism and
17862has a larger code and data size.  Note that these values will vary
17863depending on the efficiency of the compiler and the compiler
17864options used during generation.
17865
17866  Previous Release (11_20_01)
17867     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
17868     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
17869
17870  Current Release:
17871     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
17872     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
17873
17874 2) Linux:
17875
17876Updated all files to apply cleanly against 2.4.16.
17877
17878Added basic PCI Interrupt Routing Table (PRT) support for IA32
17879(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
17880version supports both static and dynamic PRT entries, but dynamic
17881entries are treated as if they were static (not yet
17882reconfigurable).  Architecture- specific code to use this data is
17883absent on IA32 but should be available shortly.
17884
17885Changed the initialization sequence to start the ACPI interpreter
17886(acpi_init) prior to initialization of the PCI driver (pci_init)
17887in init/main.c.  This ordering is required to support PRT and
17888facilitate other (future) enhancement.  A side effect is that the
17889ACPI bus driver and certain device drivers can no longer be loaded
17890as modules.
17891
17892Modified the 'make menuconfig' options to allow PCI Interrupt
17893Routing support to be included without the ACPI Bus and other
17894device drivers.
17895
17896 3) ASL Compiler, version X2033:
17897
17898Fixed some issues with the use of the new CopyObject and
17899DataTableRegion operators.  Both are fully functional.
17900
17901 ----------------------------------------
17902Summary of changes for this label: 11_20_01
17903
17904 20 November 2001.  Summary of changes for this release.
17905
17906 1) ACPI CA Core Subsystem:
17907
17908Updated Index support to match ACPI 2.0 semantics.  Storing a
17909Integer, String, or Buffer to an Index of a Buffer will store only
17910the least-significant byte of the source to the Indexed buffer
17911byte.  Multiple writes are not performed.
17912
17913Fixed a problem where the access type used in an AccessAs ASL
17914operator was not recorded correctly into the field object.
17915
17916Fixed a problem where ASL Event objects were created in a
17917signalled state. Events are now created in an unsignalled state.
17918
17919The internal object cache is now purged after table loading and
17920initialization to reduce the use of dynamic kernel memory -- on
17921the assumption that object use is greatest during the parse phase
17922of the entire table (versus the run-time use of individual control
17923methods.)
17924
17925ACPI 2.0 variable-length packages are now fully operational.
17926
17927Code and Data Size: Code and Data optimizations have permitted new
17928feature development with an actual reduction in the library size.
17929Current core subsystem library sizes are shown below.  These are
17930the code and data sizes for the acpica.lib produced by the
17931Microsoft Visual C++ 6.0 compiler, and these values do not include
17932any ACPI driver or OSPM code.  The debug version of the code
17933includes the debug output trace mechanism and has a larger code
17934and data size.  Note that these values will vary depending on the
17935efficiency of the compiler and the compiler options used during
17936generation.
17937
17938  Previous Release (11_09_01):
17939     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
17940     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
17941
17942  Current Release:
17943     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
17944     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
17945
17946 2) Linux:
17947
17948Enhanced the ACPI boot-time initialization code to allow the use
17949of Local APIC tables for processor enumeration on IA-32, and to
17950pave the way for a fully MPS-free boot (on SMP systems) in the
17951near future.  This functionality replaces
17952arch/i386/kernel/acpitables.c, which was introduced in an earlier
179532.4.15-preX release.  To enable this feature you must add
17954"acpi_boot=on" to the kernel command line -- see the help entry
17955for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
17956the works...
17957
17958Restructured the configuration options to allow boot-time table
17959parsing support without inclusion of the ACPI Interpreter (and
17960other) code.
17961
17962NOTE: This release does not include fixes for the reported events,
17963power-down, and thermal passive cooling issues (coming soon).
17964
17965 3) ASL Compiler:
17966
17967Added additional typechecking for Fields within restricted access
17968Operation Regions.  All fields within EC and CMOS regions must be
17969declared with ByteAcc. All fields within SMBus regions must be
17970declared with the BufferAcc access type.
17971
17972Fixed a problem where the listing file output of control methods
17973no longer interleaved the actual AML code with the ASL source
17974code.
17975
17976
17977
17978
17979----------------------------------------
17980Summary of changes for this label: 11_09_01
17981
179821) ACPI CA Core Subsystem:
17983
17984Implemented ACPI 2.0-defined support for writes to fields with a
17985Buffer, String, or Integer source operand that is smaller than the
17986target field. In these cases, the source operand is zero-extended
17987to fill the target field.
17988
17989Fixed a problem where a Field starting bit offset (within the
17990parent operation region) was calculated incorrectly if the
17991
17992alignment of the field differed from the access width.  This
17993affected CreateWordField, CreateDwordField, CreateQwordField, and
17994possibly other fields that use the "AccessAny" keyword.
17995
17996Fixed a problem introduced in the 11_02_01 release where indirect
17997stores through method arguments did not operate correctly.
17998
179992) Linux:
18000
18001Implemented boot-time ACPI table parsing support
18002(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
18003facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
18004legacy BIOS interfaces (e.g. MPS) for the configuration of system
18005processors, memory, and interrupts during setup_arch().  Note that
18006this patch does not include the required architecture-specific
18007changes required to apply this information -- subsequent patches
18008will be posted for both IA32 and IA64 to achieve this.
18009
18010Added low-level sleep support for IA32 platforms, courtesy of Pat
18011Mochel. This allows IA32 systems to transition to/from various
18012sleeping states (e.g. S1, S3), although the lack of a centralized
18013driver model and power-manageable drivers will prevent its
18014(successful) use on most systems.
18015
18016Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
18017submenu, unified IA32 and IA64 options, added new "Boot using ACPI
18018tables" option, etc.
18019
18020Increased the default timeout for the EC driver from 1ms to 10ms
18021(1000 cycles of 10us) to try to address AE_TIME errors during EC
18022transactions.
18023
18024 ----------------------------------------
18025Summary of changes for this label: 11_02_01
18026
180271) ACPI CA Core Subsystem:
18028
18029ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
18030(QWordAcc keyword). All ACPI 2.0 64-bit support is now
18031implemented.
18032
18033OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
18034changes to support ACPI 2.0 Qword field access.  Read/Write
18035PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
18036accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
18037the value parameter for the address space handler interface is now
18038an ACPI_INTEGER.  OSL implementations of these interfaces must now
18039handle the case where the Width parameter is 64.
18040
18041Index Fields: Fixed a problem where unaligned bit assembly and
18042disassembly for IndexFields was not supported correctly.
18043
18044Index and Bank Fields:  Nested Index and Bank Fields are now
18045supported. During field access, a check is performed to ensure
18046that the value written to an Index or Bank register is not out of
18047the range of the register.  The Index (or Bank) register is
18048written before each access to the field data. Future support will
18049include allowing individual IndexFields to be wider than the
18050DataRegister width.
18051
18052Fields: Fixed a problem where the AML interpreter was incorrectly
18053attempting to write beyond the end of a Field/OpRegion.  This was
18054a boundary case that occurred when a DWORD field was written to a
18055BYTE access OpRegion, forcing multiple writes and causing the
18056interpreter to write one datum too many.
18057
18058Fields: Fixed a problem with Field/OpRegion access where the
18059starting bit address of a field was incorrectly calculated if the
18060current access type was wider than a byte (WordAcc, DwordAcc, or
18061QwordAcc).
18062
18063Fields: Fixed a problem where forward references to individual
18064FieldUnits (individual Field names within a Field definition) were
18065not resolved during the AML table load.
18066
18067Fields: Fixed a problem where forward references from a Field
18068definition to the parent Operation Region definition were not
18069resolved during the AML table load.
18070
18071Fields: Duplicate FieldUnit names within a scope are now detected
18072during AML table load.
18073
18074Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
18075returned an incorrect name for the root node.
18076
18077Code and Data Size: Code and Data optimizations have permitted new
18078feature development with an actual reduction in the library size.
18079Current core subsystem library sizes are shown below.  These are
18080the code and data sizes for the acpica.lib produced by the
18081Microsoft Visual C++ 6.0 compiler, and these values do not include
18082any ACPI driver or OSPM code.  The debug version of the code
18083includes the debug output trace mechanism and has a larger code
18084and data size.  Note that these values will vary depending on the
18085efficiency of the compiler and the compiler options used during
18086generation.
18087
18088  Previous Release (10_18_01):
18089     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
18090     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
18091
18092  Current Release:
18093     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
18094     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
18095
18096 2) Linux:
18097
18098Improved /proc processor output (Pavel Machek) Re-added
18099MODULE_LICENSE("GPL") to all modules.
18100
18101 3) ASL Compiler version X2030:
18102
18103Duplicate FieldUnit names within a scope are now detected and
18104flagged as errors.
18105
18106 4) Documentation:
18107
18108Programmer Reference updated to reflect OSL and address space
18109handler interface changes described above.
18110
18111----------------------------------------
18112Summary of changes for this label: 10_18_01
18113
18114ACPI CA Core Subsystem:
18115
18116Fixed a problem with the internal object reference count mechanism
18117that occasionally caused premature object deletion. This resolves
18118all of the outstanding problem reports where an object is deleted
18119in the middle of an interpreter evaluation.  Although this problem
18120only showed up in rather obscure cases, the solution to the
18121problem involved an adjustment of all reference counts involving
18122objects attached to namespace nodes.
18123
18124Fixed a problem with Field support in the interpreter where
18125writing to an aligned field whose length is an exact multiple (2
18126or greater) of the field access granularity would cause an attempt
18127to write beyond the end of the field.
18128
18129The top level AML opcode execution functions within the
18130interpreter have been renamed with a more meaningful and
18131consistent naming convention.  The modules exmonad.c and
18132exdyadic.c were eliminated.  New modules are exoparg1.c,
18133exoparg2.c, exoparg3.c, and exoparg6.c.
18134
18135Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
18136
18137Fixed a problem where the AML debugger was causing some internal
18138objects to not be deleted during subsystem termination.
18139
18140Fixed a problem with the external AcpiEvaluateObject interface
18141where the subsystem would fault if the named object to be
18142evaluated referred to a constant such as Zero, Ones, etc.
18143
18144Fixed a problem with IndexFields and BankFields where the
18145subsystem would fault if the index, data, or bank registers were
18146not defined in the same scope as the field itself.
18147
18148Added printf format string checking for compilers that support
18149this feature.  Corrected more than 50 instances of issues with
18150format specifiers within invocations of ACPI_DEBUG_PRINT
18151throughout the core subsystem code.
18152
18153The ASL "Revision" operator now returns the ACPI support level
18154implemented in the core - the value "2" since the ACPI 2.0 support
18155is more than 50% implemented.
18156
18157Enhanced the output of the AML debugger "dump namespace" command
18158to output in a more human-readable form.
18159
18160Current core subsystem library code sizes are shown below.  These
18161
18162are the code and data sizes for the acpica.lib produced by the
18163Microsoft Visual C++ 6.0 compiler, and these values do not include
18164any ACPI driver or OSPM code.  The debug version of the code
18165includes the full debug trace mechanism -- leading to a much
18166
18167larger code and data size.  Note that these values will vary
18168depending on the efficiency of the compiler and the compiler
18169options used during generation.
18170
18171     Previous Label (09_20_01):
18172     Non-Debug Version:    65K Code,     5K Data,     70K Total
18173     Debug Version:       138K Code,    58K Data,    196K Total
18174
18175     This Label:
18176
18177     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
18178     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
18179
18180Linux:
18181
18182Implemented a "Bad BIOS Blacklist" to track machines that have
18183known ASL/AML problems.
18184
18185Enhanced the /proc interface for the thermal zone driver and added
18186support for _HOT (the critical suspend trip point).  The 'info'
18187file now includes threshold/policy information, and allows setting
18188of _SCP (cooling preference) and _TZP (polling frequency) values
18189to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
18190frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
18191preference to the passive/quiet mode (if supported by the ASL).
18192
18193Implemented a workaround for a gcc bug that resuted in an OOPs
18194when loading the control method battery driver.
18195
18196 ----------------------------------------
18197Summary of changes for this label: 09_20_01
18198
18199 ACPI CA Core Subsystem:
18200
18201The AcpiEnableEvent and AcpiDisableEvent interfaces have been
18202modified to allow individual GPE levels to be flagged as wake-
18203enabled (i.e., these GPEs are to remain enabled when the platform
18204sleeps.)
18205
18206The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
18207support wake-enabled GPEs.  This means that upon entering the
18208sleep state, all GPEs that are not wake-enabled are disabled.
18209When leaving the sleep state, these GPEs are re-enabled.
18210
18211A local double-precision divide/modulo module has been added to
18212enhance portability to OS kernels where a 64-bit math library is
18213not available.  The new module is "utmath.c".
18214
18215Several optimizations have been made to reduce the use of CPU
18216stack.  Originally over 2K, the maximum stack usage is now below
182172K at 1860  bytes (1.82k)
18218
18219Fixed a problem with the AcpiGetFirmwareTable interface where the
18220root table pointer was not mapped into a logical address properly.
18221
18222Fixed a problem where a NULL pointer was being dereferenced in the
18223interpreter code for the ASL Notify operator.
18224
18225Fixed a problem where the use of the ASL Revision operator
18226returned an error. This operator now returns the current version
18227of the ACPI CA core subsystem.
18228
18229Fixed a problem where objects passed as control method parameters
18230to AcpiEvaluateObject were always deleted at method termination.
18231However, these objects may end up being stored into the namespace
18232by the called method.  The object reference count mechanism was
18233applied to these objects instead of a force delete.
18234
18235Fixed a problem where static strings or buffers (contained in the
18236AML code) that are declared as package elements within the ASL
18237code could cause a fault because the interpreter would attempt to
18238delete them.  These objects are now marked with the "static
18239object" flag to prevent any attempt to delete them.
18240
18241Implemented an interpreter optimization to use operands directly
18242from the state object instead of extracting the operands to local
18243variables.  This reduces stack use and code size, and improves
18244performance.
18245
18246The module exxface.c was eliminated as it was an unnecessary extra
18247layer of code.
18248
18249Current core subsystem library code sizes are shown below.  These
18250are the code and data sizes for the acpica.lib produced by the
18251Microsoft Visual C++ 6.0 compiler, and these values do not include
18252any ACPI driver or OSPM code.  The debug version of the code
18253includes the full debug trace mechanism -- leading to a much
18254larger code and data size.  Note that these values will vary
18255depending on the efficiency of the compiler and the compiler
18256options used during generation.
18257
18258  Non-Debug Version:  65K Code,   5K Data,   70K Total
18259(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
18260Total  (Previously 195K)
18261
18262Linux:
18263
18264Support for ACPI 2.0 64-bit integers has been added.   All ACPI
18265Integer objects are now 64 bits wide
18266
18267All Acpi data types and structures are now in lower case.  Only
18268Acpi macros are upper case for differentiation.
18269
18270 Documentation:
18271
18272Changes to the external interfaces as described above.
18273
18274 ----------------------------------------
18275Summary of changes for this label: 08_31_01
18276
18277 ACPI CA Core Subsystem:
18278
18279A bug with interpreter implementation of the ASL Divide operator
18280was found and fixed.  The implicit function return value (not the
18281explicit store operands) was returning the remainder instead of
18282the quotient.  This was a longstanding bug and it fixes several
18283known outstanding issues on various platforms.
18284
18285The ACPI_DEBUG_PRINT and function trace entry/exit macros have
18286been further optimized for size.  There are 700 invocations of the
18287DEBUG_PRINT macro alone, so each optimization reduces the size of
18288the debug version of the subsystem significantly.
18289
18290A stack trace mechanism has been implemented.  The maximum stack
18291usage is about 2K on 32-bit platforms.  The debugger command "stat
18292stack" will display the current maximum stack usage.
18293
18294All public symbols and global variables within the subsystem are
18295now prefixed with the string "Acpi".  This keeps all of the
18296symbols grouped together in a kernel map, and avoids conflicts
18297with other kernel subsystems.
18298
18299Most of the internal fixed lookup tables have been moved into the
18300code segment via the const operator.
18301
18302Several enhancements have been made to the interpreter to both
18303reduce the code size and improve performance.
18304
18305Current core subsystem library code sizes are shown below.  These
18306are the code and data sizes for the acpica.lib produced by the
18307Microsoft Visual C++ 6.0 compiler, and these values do not include
18308any ACPI driver or OSPM code.  The debug version of the code
18309includes the full debug trace mechanism which contains over 700
18310invocations of the DEBUG_PRINT macro, 500 function entry macro
18311invocations, and over 900 function exit macro invocations --
18312leading to a much larger code and data size.  Note that these
18313values will vary depending on the efficiency of the compiler and
18314the compiler options used during generation.
18315
18316        Non-Debug Version:  64K Code,   5K Data,   69K Total
18317Debug Version:     137K Code,  58K Data,  195K Total
18318
18319 Linux:
18320
18321Implemented wbinvd() macro, pending a kernel-wide definition.
18322
18323Fixed /proc/acpi/event to handle poll() and short reads.
18324
18325 ASL Compiler, version X2026:
18326
18327Fixed a problem introduced in the previous label where the AML
18328
18329code emitted for package objects produced packages with zero
18330length.
18331
18332 ----------------------------------------
18333Summary of changes for this label: 08_16_01
18334
18335ACPI CA Core Subsystem:
18336
18337The following ACPI 2.0 ASL operators have been implemented in the
18338AML interpreter (These are already supported by the Intel ASL
18339compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
18340ToBuffer.  Support for 64-bit AML constants is implemented in the
18341AML parser, debugger, and disassembler.
18342
18343The internal memory tracking mechanism (leak detection code) has
18344been upgraded to reduce the memory overhead (a separate tracking
18345block is no longer allocated for each memory allocation), and now
18346supports all of the internal object caches.
18347
18348The data structures and code for the internal object caches have
18349been coelesced and optimized so that there is a single cache and
18350memory list data structure and a single group of functions that
18351implement generic cache management.  This has reduced the code
18352size in both the debug and release versions of the subsystem.
18353
18354The DEBUG_PRINT macro(s) have been optimized for size and replaced
18355by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
18356different, because it generates a single call to an internal
18357function.  This results in a savings of about 90 bytes per
18358invocation, resulting in an overall code and data savings of about
1835916% in the debug version of the subsystem.
18360
18361 Linux:
18362
18363Fixed C3 disk corruption problems and re-enabled C3 on supporting
18364machines.
18365
18366Integrated low-level sleep code by Patrick Mochel.
18367
18368Further tweaked source code Linuxization.
18369
18370Other minor fixes.
18371
18372 ASL Compiler:
18373
18374Support for ACPI 2.0 variable length packages is fixed/completed.
18375
18376Fixed a problem where the optional length parameter for the ACPI
183772.0 ToString operator.
18378
18379Fixed multiple extraneous error messages when a syntax error is
18380detected within the declaration line of a control method.
18381
18382 ----------------------------------------
18383Summary of changes for this label: 07_17_01
18384
18385ACPI CA Core Subsystem:
18386
18387Added a new interface named AcpiGetFirmwareTable to obtain any
18388ACPI table via the ACPI signature.  The interface can be called at
18389any time during kernel initialization, even before the kernel
18390virtual memory manager is initialized and paging is enabled.  This
18391allows kernel subsystems to obtain ACPI tables very early, even
18392before the ACPI CA subsystem is initialized.
18393
18394Fixed a problem where Fields defined with the AnyAcc attribute
18395could be resolved to the incorrect address under the following
18396conditions: 1) the field width is larger than 8 bits and 2) the
18397parent operation region is not defined on a DWORD boundary.
18398
18399Fixed a problem where the interpreter is not being locked during
18400namespace initialization (during execution of the _INI control
18401methods), causing an error when an attempt is made to release it
18402later.
18403
18404ACPI 2.0 support in the AML Interpreter has begun and will be
18405ongoing throughout the rest of this year.  In this label, The Mod
18406operator is implemented.
18407
18408Added a new data type to contain full PCI addresses named
18409ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
18410and Function values.
18411
18412 Linux:
18413
18414Enhanced the Linux version of the source code to change most
18415capitalized ACPI type names to lowercase. For example, all
18416instances of ACPI_STATUS are changed to acpi_status.  This will
18417result in a large diff, but the change is strictly cosmetic and
18418aligns the CA code closer to the Linux coding standard.
18419
18420OSL Interfaces:
18421
18422The interfaces to the PCI configuration space have been changed to
18423add the PCI Segment number and to split the single 32-bit combined
18424DeviceFunction field into two 16-bit fields.  This was
18425accomplished by moving the four values that define an address in
18426PCI configuration space (segment, bus, device, and function) to
18427the new ACPI_PCI_ID structure.
18428
18429The changes to the PCI configuration space interfaces led to a
18430reexamination of the complete set of address space access
18431interfaces for PCI, I/O, and Memory.  The previously existing 18
18432interfaces have proven difficult to maintain (any small change
18433must be propagated across at least 6 interfaces) and do not easily
18434allow for future expansion to 64 bits if necessary.  Also, on some
18435systems, it would not be appropriate to demultiplex the access
18436width (8, 16, 32,or 64) before calling the OSL if the
18437corresponding native OS interfaces contain a similar access width
18438parameter.  For these reasons, the 18 address space interfaces
18439have been replaced by these 6 new ones:
18440
18441AcpiOsReadPciConfiguration
18442AcpiOsWritePciConfiguration
18443AcpiOsReadMemory
18444AcpiOsWriteMemory
18445AcpiOsReadPort
18446AcpiOsWritePort
18447
18448Added a new interface named AcpiOsGetRootPointer to allow the OSL
18449to perform the platform and/or OS-specific actions necessary to
18450obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
18451interface will simply call down to the CA core to perform the low-
18452memory search for the table.  On IA-64, the RSDP is obtained from
18453EFI.  Migrating this interface to the OSL allows the CA core to
18454
18455remain OS and platform independent.
18456
18457Added a new interface named AcpiOsSignal to provide a generic
18458"function code and pointer" interface for various miscellaneous
18459signals and notifications that must be made to the host OS.   The
18460first such signals are intended to support the ASL Fatal and
18461Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
18462interface has been obsoleted.
18463
18464The definition of the AcpiFormatException interface has been
18465changed to simplify its use.  The caller no longer must supply a
18466buffer to the call; A pointer to a const string is now returned
18467directly.  This allows the call to be easily used in printf
18468statements, etc. since the caller does not have to manage a local
18469buffer.
18470
18471
18472 ASL Compiler, Version X2025:
18473
18474The ACPI 2.0 Switch/Case/Default operators have been implemented
18475and are fully functional.  They will work with all ACPI 1.0
18476interpreters, since the operators are simply translated to If/Else
18477pairs.
18478
18479The ACPI 2.0 ElseIf operator is implemented and will also work
18480with 1.0 interpreters, for the same reason.
18481
18482Implemented support for ACPI 2.0 variable-length packages.  These
18483packages have a separate opcode, and their size is determined by
18484the interpreter at run-time.
18485
18486Documentation The ACPI CA Programmer Reference has been updated to
18487reflect the new interfaces and changes to existing interfaces.
18488
18489 ------------------------------------------
18490Summary of changes for this label: 06_15_01
18491
18492 ACPI CA Core Subsystem:
18493
18494Fixed a problem where a DWORD-accessed field within a Buffer
18495object would get its byte address inadvertently rounded down to
18496the nearest DWORD.  Buffers are always Byte-accessible.
18497
18498 ASL Compiler, version X2024:
18499
18500Fixed a problem where the Switch() operator would either fault or
18501hang the compiler.  Note however, that the AML code for this ACPI
185022.0 operator is not yet implemented.
18503
18504Compiler uses the new AcpiOsGetTimer interface to obtain compile
18505timings.
18506
18507Implementation of the CreateField operator automatically converts
18508a reference to a named field within a resource descriptor from a
18509byte offset to a bit offset if required.
18510
18511Added some missing named fields from the resource descriptor
18512support. These are the names that are automatically created by the
18513compiler to reference fields within a descriptor.  They are only
18514valid at compile time and are not passed through to the AML
18515interpreter.
18516
18517Resource descriptor named fields are now typed as Integers and
18518subject to compile-time typechecking when used in expressions.
18519
18520 ------------------------------------------
18521Summary of changes for this label: 05_18_01
18522
18523 ACPI CA Core Subsystem:
18524
18525Fixed a couple of problems in the Field support code where bits
18526from adjacent fields could be returned along with the proper field
18527bits. Restructured the field support code to improve performance,
18528readability and maintainability.
18529
18530New DEBUG_PRINTP macro automatically inserts the procedure name
18531into the output, saving hundreds of copies of procedure name
18532strings within the source, shrinking the memory footprint of the
18533debug version of the core subsystem.
18534
18535 Source Code Structure:
18536
18537The source code directory tree was restructured to reflect the
18538current organization of the component architecture.  Some files
18539and directories have been moved and/or renamed.
18540
18541 Linux:
18542
18543Fixed leaking kacpidpc processes.
18544
18545Fixed queueing event data even when /proc/acpi/event is not
18546opened.
18547
18548 ASL Compiler, version X2020:
18549
18550Memory allocation performance enhancement - over 24X compile time
18551improvement on large ASL files.  Parse nodes and namestring
18552buffers are now allocated from a large internal compiler buffer.
18553
18554The temporary .SRC file is deleted unless the "-s" option is
18555specified
18556
18557The "-d" debug output option now sends all output to the .DBG file
18558instead of the console.
18559
18560"External" second parameter is now optional
18561
18562"ElseIf" syntax now properly allows the predicate
18563
18564Last operand to "Load" now recognized as a Target operand
18565
18566Debug object can now be used anywhere as a normal object.
18567
18568ResourceTemplate now returns an object of type BUFFER
18569
18570EISAID now returns an object of type INTEGER
18571
18572"Index" now works with a STRING operand
18573
18574"LoadTable" now accepts optional parameters
18575
18576"ToString" length parameter is now optional
18577
18578"Interrupt (ResourceType," parse error fixed.
18579
18580"Register" with a user-defined region space parse error fixed
18581
18582Escaped backslash at the end of a string ("\\") scan/parse error
18583fixed
18584
18585"Revision" is now an object of type INTEGER.
18586
18587
18588
18589------------------------------------------
18590Summary of changes for this label: 05_02_01
18591
18592Linux:
18593
18594/proc/acpi/event now blocks properly.
18595
18596Removed /proc/sys/acpi. You can still dump your DSDT from
18597/proc/acpi/dsdt.
18598
18599 ACPI CA Core Subsystem:
18600
18601Fixed a problem introduced in the previous label where some of the
18602"small" resource descriptor types were not recognized.
18603
18604Improved error messages for the case where an ASL Field is outside
18605the range of the parent operation region.
18606
18607 ASL Compiler, version X2018:
18608
18609
18610Added error detection for ASL Fields that extend beyond the length
18611of the parent operation region (only if the length of the region
18612is known at compile time.)  This includes fields that have a
18613minimum access width that is smaller than the parent region, and
18614individual field units that are partially or entirely beyond the
18615extent of the parent.
18616
18617
18618
18619------------------------------------------
18620Summary of changes for this label: 04_27_01
18621
18622 ACPI CA Core Subsystem:
18623
18624Fixed a problem where the namespace mutex could be released at the
18625wrong time during execution of AcpiRemoveAddressSpaceHandler.
18626
18627Added optional thread ID output for debug traces, to simplify
18628debugging of multiple threads.  Added context switch notification
18629when the debug code realizes that a different thread is now
18630executing ACPI code.
18631
18632Some additional external data types have been prefixed with the
18633string "ACPI_" for consistency.  This may effect existing code.
18634The data types affected are the external callback typedefs - e.g.,
18635
18636WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
18637
18638 Linux:
18639
18640Fixed an issue with the OSL semaphore implementation where a
18641thread was waking up with an error from receiving a SIGCHLD
18642signal.
18643
18644Linux version of ACPI CA now uses the system C library for string
18645manipulation routines instead of a local implementation.
18646
18647Cleaned up comments and removed TBDs.
18648
18649 ASL Compiler, version X2017:
18650
18651Enhanced error detection and reporting for all file I/O
18652operations.
18653
18654 Documentation:
18655
18656Programmer Reference updated to version 1.06.
18657
18658
18659
18660------------------------------------------
18661Summary of changes for this label: 04_13_01
18662
18663 ACPI CA Core Subsystem:
18664
18665Restructured support for BufferFields and RegionFields.
18666BankFields support is now fully operational.  All known 32-bit
18667limitations on field sizes have been removed.  Both BufferFields
18668and (Operation) RegionFields are now supported by the same field
18669management code.
18670
18671Resource support now supports QWORD address and IO resources. The
1867216/32/64 bit address structures and the Extended IRQ structure
18673have been changed to properly handle Source Resource strings.
18674
18675A ThreadId of -1 is now used to indicate a "mutex not acquired"
18676condition internally and must never be returned by AcpiOsThreadId.
18677This reserved value was changed from 0 since Unix systems allow a
18678thread ID of 0.
18679
18680Linux:
18681
18682Driver code reorganized to enhance portability
18683
18684Added a kernel configuration option to control ACPI_DEBUG
18685
18686Fixed the EC driver to honor _GLK.
18687
18688ASL Compiler, version X2016:
18689
18690Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
18691address space was set to 0, not 0x7f as it should be.
18692
18693 ------------------------------------------
18694Summary of changes for this label: 03_13_01
18695
18696 ACPI CA Core Subsystem:
18697
18698During ACPI initialization, the _SB_._INI method is now run if
18699present.
18700
18701Notify handler fix - notifies are deferred until the parent method
18702completes execution.  This fixes the "mutex already acquired"
18703issue seen occasionally.
18704
18705Part of the "implicit conversion" rules in ACPI 2.0 have been
18706found to cause compatibility problems with existing ASL/AML.  The
18707convert "result-to-target-type" implementation has been removed
18708for stores to method Args and Locals.  Source operand conversion
18709is still fully implemented.  Possible changes to ACPI 2.0
18710specification pending.
18711
18712Fix to AcpiRsCalculatePciRoutingTableLength to return correct
18713length.
18714
18715Fix for compiler warnings for 64-bit compiles.
18716
18717 Linux:
18718
18719/proc output aligned for easier parsing.
18720
18721Release-version compile problem fixed.
18722
18723New kernel configuration options documented in Configure.help.
18724
18725IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
18726context" message.
18727
18728 OSPM:
18729
18730Power resource driver integrated with bus manager.
18731
18732Fixed kernel fault during active cooling for thermal zones.
18733
18734Source Code:
18735
18736The source code tree has been restructured.
18737
18738
18739
18740------------------------------------------
18741Summary of changes for this label: 03_02_01
18742
18743 Linux OS Services Layer (OSL):
18744
18745Major revision of all Linux-specific code.
18746
18747Modularized all ACPI-specific drivers.
18748
18749Added new thermal zone and power resource drivers.
18750
18751Revamped /proc interface (new functionality is under /proc/acpi).
18752
18753New kernel configuration options.
18754
18755 Linux known issues:
18756
18757New kernel configuration options not documented in Configure.help
18758yet.
18759
18760
18761Module dependencies not currently implemented. If used, they
18762should be loaded in this order: busmgr, power, ec, system,
18763processor, battery, ac_adapter, button, thermal.
18764
18765Modules will not load if CONFIG_MODVERSION is set.
18766
18767IBM 600E - entering S5 may reboot instead of shutting down.
18768
18769IBM 600E - Sleep button may generate "Invalid <NULL> context"
18770message.
18771
18772Some systems may fail with "execution mutex already acquired"
18773message.
18774
18775 ACPI CA Core Subsystem:
18776
18777Added a new OSL Interface, AcpiOsGetThreadId.  This was required
18778for the  deadlock detection code. Defined to return a non-zero, 32-
18779bit thread ID for the currently executing thread.  May be a non-
18780zero constant integer on single-thread systems.
18781
18782Implemented deadlock detection for internal subsystem mutexes.  We
18783may add conditional compilation for this code (debug only) later.
18784
18785ASL/AML Mutex object semantics are now fully supported.  This
18786includes multiple acquires/releases by owner and support for the
18787
18788Mutex SyncLevel parameter.
18789
18790A new "Force Release" mechanism automatically frees all ASL
18791Mutexes that have been acquired but not released when a thread
18792exits the interpreter.  This forces conformance to the ACPI spec
18793("All mutexes must be released when an invocation exits") and
18794prevents deadlocked ASL threads.  This mechanism can be expanded
18795(later) to monitor other resource acquisitions if OEM ASL code
18796continues to misbehave (which it will).
18797
18798Several new ACPI exception codes have been added for the Mutex
18799support.
18800
18801Recursive method calls are now allowed and supported (the ACPI
18802spec does in fact allow recursive method calls.)  The number of
18803recursive calls is subject to the restrictions imposed by the
18804SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
18805parameter.
18806
18807Implemented support for the SyncLevel parameter for control
18808methods (ACPI 2.0 feature)
18809
18810Fixed a deadlock problem when multiple threads attempted to use
18811the interpreter.
18812
18813Fixed a problem where the string length of a String package
18814element was not always set in a package returned from
18815AcpiEvaluateObject.
18816
18817Fixed a problem where the length of a String package element was
18818not always included in the length of the overall package returned
18819from AcpiEvaluateObject.
18820
18821Added external interfaces (Acpi*) to the ACPI debug memory
18822manager.  This manager keeps a list of all outstanding
18823allocations, and can therefore detect memory leaks and attempts to
18824free memory blocks more than once. Useful for code such as the
18825power manager, etc.  May not be appropriate for device drivers.
18826Performance with the debug code enabled is slow.
18827
18828The ACPI Global Lock is now an optional hardware element.
18829
18830 ASL Compiler Version X2015:
18831
18832Integrated changes to allow the compiler to be generated on
18833multiple platforms.
18834
18835Linux makefile added to generate the compiler on Linux
18836
18837 Source Code:
18838
18839All platform-specific headers have been moved to their own
18840subdirectory, Include/Platform.
18841
18842New source file added, Interpreter/ammutex.c
18843
18844New header file, Include/acstruct.h
18845
18846 Documentation:
18847
18848The programmer reference has been updated for the following new
18849interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
18850
18851 ------------------------------------------
18852Summary of changes for this label: 02_08_01
18853
18854Core ACPI CA Subsystem: Fixed a problem where an error was
18855incorrectly returned if the return resource buffer was larger than
18856the actual data (in the resource interfaces).
18857
18858References to named objects within packages are resolved to the
18859
18860full pathname string before packages are returned directly (via
18861the AcpiEvaluateObject interface) or indirectly via the resource
18862interfaces.
18863
18864Linux OS Services Layer (OSL):
18865
18866Improved /proc battery interface.
18867
18868
18869Added C-state debugging output and other miscellaneous fixes.
18870
18871ASL Compiler Version X2014:
18872
18873All defined method arguments can now be used as local variables,
18874including the ones that are not actually passed in as parameters.
18875The compiler tracks initialization of the arguments and issues an
18876exception if they are used without prior assignment (just like
18877locals).
18878
18879The -o option now specifies a filename prefix that is used for all
18880output files, including the AML output file.  Otherwise, the
18881default behavior is as follows:  1) the AML goes to the file
18882specified in the DSDT.  2) all other output files use the input
18883source filename as the base.
18884
18885 ------------------------------------------
18886Summary of changes for this label: 01_25_01
18887
18888Core ACPI CA Subsystem: Restructured the implementation of object
18889store support within the  interpreter.  This includes support for
18890the Store operator as well  as any ASL operators that include a
18891target operand.
18892
18893Partially implemented support for Implicit Result-to-Target
18894conversion. This is when a result object is converted on the fly
18895to the type of  an existing target object.  Completion of this
18896support is pending  further analysis of the ACPI specification
18897concerning this matter.
18898
18899CPU-specific code has been removed from the subsystem (hardware
18900directory).
18901
18902New Power Management Timer functions added
18903
18904Linux OS Services Layer (OSL): Moved system state transition code
18905to the core, fixed it, and modified  Linux OSL accordingly.
18906
18907Fixed C2 and C3 latency calculations.
18908
18909
18910We no longer use the compilation date for the version message on
18911initialization, but retrieve the version from AcpiGetSystemInfo().
18912
18913Incorporated for fix Sony VAIO machines.
18914
18915Documentation:  The Programmer Reference has been updated and
18916reformatted.
18917
18918
18919ASL Compiler:  Version X2013: Fixed a problem where the line
18920numbering and error reporting could get out  of sync in the
18921presence of multiple include files.
18922
18923 ------------------------------------------
18924Summary of changes for this label: 01_15_01
18925
18926Core ACPI CA Subsystem:
18927
18928Implemented support for type conversions in the execution of the
18929ASL  Concatenate operator (The second operand is converted to
18930match the type  of the first operand before concatenation.)
18931
18932Support for implicit source operand conversion is partially
18933implemented.   The ASL source operand types Integer, Buffer, and
18934String are freely  interchangeable for most ASL operators and are
18935converted by the interpreter  on the fly as required.  Implicit
18936Target operand conversion (where the  result is converted to the
18937target type before storing) is not yet implemented.
18938
18939Support for 32-bit and 64-bit BCD integers is implemented.
18940
18941Problem fixed where a field read on an aligned field could cause a
18942read  past the end of the field.
18943
18944New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
18945does not return a value, but the caller expects one.  (The ASL
18946compiler flags this as a warning.)
18947
18948ASL Compiler:
18949
18950Version X2011:
189511. Static typechecking of all operands is implemented. This
18952prevents the use of invalid objects (such as using a Package where
18953an Integer is required) at compile time instead of at interpreter
18954run-time.
189552. The ASL source line is printed with ALL errors and warnings.
189563. Bug fix for source EOF without final linefeed.
189574. Debug option is split into a parse trace and a namespace trace.
189585. Namespace output option (-n) includes initial values for
18959integers and strings.
189606. Parse-only option added for quick syntax checking.
189617. Compiler checks for duplicate ACPI name declarations
18962
18963Version X2012:
189641. Relaxed typechecking to allow interchangeability between
18965strings, integers, and buffers.  These types are now converted by
18966the interpreter at runtime.
189672. Compiler reports time taken by each internal subsystem in the
18968debug         output file.
18969
18970
18971 ------------------------------------------
18972Summary of changes for this label: 12_14_00
18973
18974ASL Compiler:
18975
18976This is the first official release of the compiler. Since the
18977compiler requires elements of the Core Subsystem, this label
18978synchronizes everything.
18979
18980------------------------------------------
18981Summary of changes for this label: 12_08_00
18982
18983
18984Fixed a problem where named references within the ASL definition
18985of both OperationRegions and CreateXXXFields did not work
18986properly.  The symptom was an AE_AML_OPERAND_TYPE during
18987initialization of the region/field. This is similar (but not
18988related internally) to the problem that was fixed in the last
18989label.
18990
18991Implemented both 32-bit and 64-bit support for the BCD ASL
18992functions ToBCD and FromBCD.
18993
18994Updated all legal headers to include "2000" in the copyright
18995years.
18996
18997 ------------------------------------------
18998Summary of changes for this label: 12_01_00
18999
19000Fixed a problem where method invocations within the ASL definition
19001of both OperationRegions and CreateXXXFields did not work
19002properly.  The symptom was an AE_AML_OPERAND_TYPE during
19003initialization of the region/field:
19004
19005  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
19006[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
19007(0x3005)
19008
19009Fixed a problem where operators with more than one nested
19010subexpression would fail.  The symptoms were varied, by mostly
19011AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
19012problem that has gone unnoticed until now.
19013
19014  Subtract (Add (1,2), Multiply (3,4))
19015
19016Fixed a problem where AcpiGetHandle didn't quite get fixed in the
19017previous build (The prefix part of a relative path was handled
19018incorrectly).
19019
19020Fixed a problem where Operation Region initialization failed if
19021the operation region name was a "namepath" instead of a simple
19022"nameseg". Symptom was an AE_NO_OPERAND error.
19023
19024Fixed a problem where an assignment to a local variable via the
19025indirect RefOf mechanism only worked for the first such
19026assignment.  Subsequent assignments were ignored.
19027
19028 ------------------------------------------
19029Summary of changes for this label: 11_15_00
19030
19031ACPI 2.0 table support with backwards support for ACPI 1.0 and the
190320.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
19033the AML  interpreter does NOT have support for the new 2.0 ASL
19034grammar terms at this time.
19035
19036All ACPI hardware access is via the GAS structures in the ACPI 2.0
19037FADT.
19038
19039All physical memory addresses across all platforms are now 64 bits
19040wide. Logical address width remains dependent on the platform
19041(i.e., "void *").
19042
19043AcpiOsMapMemory interface changed to a 64-bit physical address.
19044
19045The AML interpreter integer size is now 64 bits, as per the ACPI
190462.0 specification.
19047
19048For backwards compatibility with ACPI 1.0, ACPI tables with a
19049revision number less than 2 use 32-bit integers only.
19050
19051Fixed a problem where the evaluation of OpRegion operands did not
19052always resolve them to numbers properly.
19053
19054------------------------------------------
19055Summary of changes for this label: 10_20_00
19056
19057Fix for CBN_._STA issue.  This fix will allow correct access to
19058CBN_ OpRegions when the _STA returns 0x8.
19059
19060Support to convert ACPI constants (Ones, Zeros, One) to actual
19061values before a package object is returned
19062
19063Fix for method call as predicate to if/while construct causing
19064incorrect if/while behavior
19065
19066Fix for Else block package lengths sometimes calculated wrong (if
19067block > 63 bytes)
19068
19069Fix for Processor object length field, was always zero
19070
19071Table load abort if FACP sanity check fails
19072
19073Fix for problem with Scope(name) if name already exists
19074
19075Warning emitted if a named object referenced cannot be found
19076(resolved) during method execution.
19077
19078
19079
19080
19081
19082------------------------------------------
19083Summary of changes for this label: 9_29_00
19084
19085New table initialization interfaces: AcpiInitializeSubsystem no
19086longer has any parameters AcpiFindRootPointer - Find the RSDP (if
19087necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
19088>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
19089AcpiLoadTables
19090
19091Note: These interface changes require changes to all existing OSDs
19092
19093The PCI_Config default address space handler is always installed
19094at the root namespace object.
19095
19096-------------------------------------------
19097Summary of changes for this label: 09_15_00
19098
19099The new initialization architecture is implemented.  New
19100interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
19101AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
19102
19103(Namespace is automatically loaded when a table is loaded)
19104
19105The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1910652 bytes to 32 bytes.  There is usually one of these for every
19107namespace object, so the memory savings is significant.
19108
19109Implemented just-in-time evaluation of the CreateField operators.
19110
19111Bug fixes for IA-64 support have been integrated.
19112
19113Additional code review comments have been implemented
19114
19115The so-called "third pass parse" has been replaced by a final walk
19116through the namespace to initialize all operation regions (address
19117spaces) and fields that have not yet been initialized during the
19118execution of the various _INI and REG methods.
19119
19120New file - namespace/nsinit.c
19121
19122-------------------------------------------
19123Summary of changes for this label: 09_01_00
19124
19125Namespace manager data structures have been reworked to change the
19126primary  object from a table to a single object.  This has
19127resulted in dynamic memory  savings of 3X within the namespace and
191282X overall in the ACPI CA subsystem.
19129
19130Fixed problem where the call to AcpiEvFindPciRootBuses was
19131inadvertently left  commented out.
19132
19133Reduced the warning count when generating the source with the GCC
19134compiler.
19135
19136Revision numbers added to each module header showing the
19137SourceSafe version of the file.  Please refer to this version
19138number when giving us feedback or comments on individual modules.
19139
19140The main object types within the subsystem have been renamed to
19141clarify their  purpose:
19142
19143ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
19144ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
19145ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
19146
19147NOTE: no changes to the initialization sequence are included in
19148this label.
19149
19150-------------------------------------------
19151Summary of changes for this label: 08_23_00
19152
19153Fixed problem where TerminateControlMethod was being called
19154multiple times per  method
19155
19156Fixed debugger problem where single stepping caused a semaphore to
19157be  oversignalled
19158
19159Improved performance through additional parse object caching -
19160added  ACPI_EXTENDED_OP type
19161
19162-------------------------------------------
19163Summary of changes for this label: 08_10_00
19164
19165Parser/Interpreter integration:  Eliminated the creation of
19166complete parse trees  for ACPI tables and control methods.
19167Instead, parse subtrees are created and  then deleted as soon as
19168they are processed (Either entered into the namespace or  executed
19169by the interpreter).  This reduces the use of dynamic kernel
19170memory  significantly. (about 10X)
19171
19172Exception codes broken into classes and renumbered.  Be sure to
19173recompile all  code that includes acexcep.h.  Hopefully we won't
19174have to renumber the codes  again now that they are split into
19175classes (environment, programmer, AML code,  ACPI table, and
19176internal).
19177
19178Fixed some additional alignment issues in the Resource Manager
19179subcomponent
19180
19181Implemented semaphore tracking in the AcpiExec utility, and fixed
19182several places  where mutexes/semaphores were being unlocked
19183without a corresponding lock  operation.  There are no known
19184semaphore or mutex "leaks" at this time.
19185
19186Fixed the case where an ASL Return operator is used to return an
19187unnamed  package.
19188
19189-------------------------------------------
19190Summary of changes for this label: 07_28_00
19191
19192Fixed a problem with the way addresses were calculated in
19193AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
19194manifested itself when a Field was  created with WordAccess or
19195DwordAccess, but the field unit defined within the  Field was less
19196
19197than a Word or Dword.
19198
19199Fixed a problem in AmlDumpOperands() module's loop to pull
19200operands off of the  operand stack to display information. The
19201problem manifested itself as a TLB  error on 64-bit systems when
19202accessing an operand stack with two or more  operands.
19203
19204Fixed a problem with the PCI configuration space handlers where
19205context was  getting confused between accesses. This required a
19206change to the generic address  space handler and address space
19207setup definitions. Handlers now get both a  global handler context
19208(this is the one passed in by the user when executing
19209AcpiInstallAddressSpaceHandler() and a specific region context
19210that is unique to  each region (For example, the _ADR, _SEG and
19211_BBN values associated with a  specific region). The generic
19212function definitions have changed to the  following:
19213
19214typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
19215UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
19216*HandlerContext, // This used to be void *Context void
19217*RegionContext); // This is an additional parameter
19218
19219typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
19220RegionHandle, UINT32 Function, void *HandlerContext,  void
19221**RegionContext); // This used to be **ReturnContext
19222
19223-------------------------------------------
19224Summary of changes for this label: 07_21_00
19225
19226Major file consolidation and rename.  All files within the
19227interpreter have been  renamed as well as most header files.  This
19228was done to prevent collisions with  existing files in the host
19229OSs -- filenames such as "config.h" and "global.h"  seem to be
19230quite common.  The VC project files have been updated.  All
19231makefiles  will require modification.
19232
19233The parser/interpreter integration continues in Phase 5 with the
19234implementation  of a complete 2-pass parse (the AML is parsed
19235twice) for each table;  This  avoids the construction of a huge
19236parse tree and therefore reduces the amount of  dynamic memory
19237required by the subsystem.  Greater use of the parse object cache
19238means that performance is unaffected.
19239
19240Many comments from the two code reviews have been rolled in.
19241
19242The 64-bit alignment support is complete.
19243
19244-------------------------------------------
19245Summary of changes for this label: 06_30_00
19246
19247With a nod and a tip of the hat to the technology of yesteryear,
19248we've added  support in the source code for 80 column output
19249devices.  The code is now mostly  constrained to 80 columns or
19250less to support environments and editors that 1)  cannot display
19251or print more than 80 characters on a single line, and 2) cannot
19252disable line wrapping.
19253
19254A major restructuring of the namespace data structure has been
19255completed.  The  result is 1) cleaner and more
19256understandable/maintainable code, and 2) a  significant reduction
19257in the dynamic memory requirement for each named ACPI  object
19258(almost half).
19259
19260-------------------------------------------
19261Summary of changes for this label: 06_23_00
19262
19263Linux support has been added.  In order to obtain approval to get
19264the ACPI CA  subsystem into the Linux kernel, we've had to make
19265quite a few changes to the  base subsystem that will affect all
19266users (all the changes are generic and OS- independent).  The
19267effects of these global changes have been somewhat far  reaching.
19268Files have been merged and/or renamed and interfaces have been
19269renamed.   The major changes are described below.
19270
19271Osd* interfaces renamed to AcpiOs* to eliminate namespace
19272pollution/confusion  within our target kernels.  All OSD
19273interfaces must be modified to match the new  naming convention.
19274
19275Files merged across the subsystem.  A number of the smaller source
19276and header  files have been merged to reduce the file count and
19277increase the density of the  existing files.  There are too many
19278to list here.  In general, makefiles that  call out individual
19279files will require rebuilding.
19280
19281Interpreter files renamed.  All interpreter files now have the
19282prefix am*  instead of ie* and is*.
19283
19284Header files renamed:  The acapi.h file is now acpixf.h.  The
19285acpiosd.h file is  now acpiosxf.h.  We are removing references to
19286the acronym "API" since it is  somewhat windowsy. The new name is
19287"external interface" or xface or xf in the  filenames.j
19288
19289
19290All manifest constants have been forced to upper case (some were
19291mixed case.)   Also, the string "ACPI_" has been prepended to many
19292(not all) of the constants,  typedefs, and structs.
19293
19294The globals "DebugLevel" and "DebugLayer" have been renamed
19295"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
19296
19297All other globals within the subsystem are now prefixed with
19298"AcpiGbl_" Internal procedures within the subsystem are now
19299prefixed with "Acpi" (with only  a few exceptions).  The original
19300two-letter abbreviation for the subcomponent  remains after "Acpi"
19301- for example, CmCallocate became AcpiCmCallocate.
19302
19303Added a source code translation/conversion utility.  Used to
19304generate the Linux  source code, it can be modified to generate
19305other types of source as well. Can  also be used to cleanup
19306existing source by removing extraneous spaces and blank  lines.
19307Found in tools/acpisrc/*
19308
19309OsdUnMapMemory was renamed to OsdUnmapMemory and then
19310AcpiOsUnmapMemory.  (UnMap  became Unmap).
19311
19312A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
19313When set to  one, this indicates that the caller wants to use the
19314
19315semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
19316both types.  However, implementers of this  call may want to use
19317different OS primitives depending on the type of semaphore
19318requested.  For example, some operating systems provide separate
19319
19320"mutex" and  "semaphore" interfaces - where the mutex interface is
19321much faster because it  doesn't have all the overhead of a full
19322semaphore implementation.
19323
19324Fixed a deadlock problem where a method that accesses the PCI
19325address space can  block forever if it is the first access to the
19326space.
19327
19328-------------------------------------------
19329Summary of changes for this label: 06_02_00
19330
19331Support for environments that cannot handle unaligned data
19332accesses (e.g.  firmware and OS environments devoid of alignment
19333handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
19334been added (via configurable macros) in  these three areas: -
19335Transfer of data from the raw AML byte stream is done via byte
19336moves instead of    word/dword/qword moves. - External objects are
19337aligned within the user buffer, including package   elements (sub-
19338objects). - Conversion of name strings to UINT32 Acpi Names is now
19339done byte-wise.
19340
19341The Store operator was modified to mimic Microsoft's
19342implementation when storing  to a Buffer Field.
19343
19344Added a check of the BM_STS bit before entering C3.
19345
19346The methods subdirectory has been obsoleted and removed.  A new
19347file, cmeval.c  subsumes the functionality.
19348
19349A 16-bit (DOS) version of AcpiExec has been developed.  The
19350makefile is under  the acpiexec directory.
19351