xref: /dragonfly/sys/contrib/dev/acpica/changes.txt (revision c9c5aa9e)
1----------------------------------------
2
3
413 November 2020. Summary of changes for version 20201113:
5
6This release is available at https://acpica.org/downloads
7
8
91) ACPICA kernel-resident subsystem:
10
11Interpreter: fixed a memory leak by using use existing buffer in _HID
12repair. There was a memory leak that occurred when a _CID object is
13defined as a package containing string objects. When _CID is checked for
14any possible repairs, it calls a helper function to repair _HID (because
15_CID basically contains multiple _HID entries). The _HID repair function
16assumes that string objects are standalone objects that are not contained
17inside of any packages. The _HID repair function replaced the string
18object with a brand new object and attempted to delete the old object by
19decrementing the reference count of the old object. Strings inside of
20packages have a reference count of 2 so the _HID repair function leaves
21this object in a dangling state and causes a memory leak. Instead of
22allocating a brand new object and removing the old object, use the
23existing object when repairing the _HID object.
24
25Added function trace macros to improve namespace debugging. The namespace
26repair mechanism does not have function tracing macros. Add several trace
27macros to improve debuggability.
28
29Handle "orphan" _REG methods for GPIO OpRegions. Before this change
30AcpiEvExecuteRegMethods() had special handling to handle "orphan" (no
31matching OpRegion declared) _REG methods for EC nodes. On Intel Cherry
32Trail devices there are 2 possible ACPI OpRegions for accessing GPIOs.
33The standard GeneralPurposeIo OpRegion and the Cherry Trail - specific
34UserDefined 0x9X OpRegions. Having 2 different types of OpRegions leads
35to potential issues with checks for OpRegion availability, or in other
36words checks if _REG has been called for the OpRegion which the ACPI code
37wants to use. Except for the "orphan" EC handling, ACPICA core does not
38call _REG on an ACPI node which does not define an OpRegion matching the
39type being registered; and the reference design DSDT, from which most
40Cherry Trail DSDTs are derived, does not define GeneralPurposeIo, nor
41UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because no pins
42were assigned ACPI controlled functions in the reference design. Together
43this leads to the perfect storm, at least on the Cherry Trail based
44Medion Akayo E1239T. This design does use a GPO2 pin from its ACPI code
45and has added the Cherry Trail specific UserDefined(0x93) opregion to its
46GPO2 ACPI node to access this pin. But it uses a "has _REG been called"
47availability check for the standard GeneralPurposeIo OpRegion. This
48clearly is a bug in the DSDT, but this does work under Windows. This
49issue leads to the intel vbtn driver reporting the device always being in
50tablet-mode at boot, even if it is in laptop mode. Which in turn causes
51userspace to ignore touchpad events. So in other words, this issue causes
52the touchpad to not work at boot. This change fixes this by extending the
53"orphan" _REG method handling to also apply to GPIO address-space
54handlers.
55
56
572) iASL Compiler/Disassembler and ACPICA tools:
58
59iASL: Added more info to namespace dump file (-ln option). In a separate
60section of the dump file (after the main namespace dump), emit the full
61pathname for each namespace node, its type, and the ASL filename and line
62number where it is declared.
63
64AcpiHelp: Added an option to display/decode iASL exceptions. Option is: -
65x [Hex Value] where "Hex Value" is the iASL exception code. If Hex Value
66is omitted, all iASL exceptions are displayed.
67
68iASL: Use StringLiteral instead of StringData for some ASL macros. The
69use of the stringData rule allows for some "string" oriented opcodes
70(Such as ToString, ToHexString, etc.) None of which make sense with the
71macros in question. This change modifies the StringData part of the rule
72for these macros to a simple string  literal - thus disallowing the use
73of ToString, ToHexString, etc.
74The following ASL operators (macros) are affected:
75EisaId
76Fprintf
77Printf
78ToUuid
79Unicode
80Note: The MS compiler requires the use of string literals for these
81operators also.
82
83iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND. Search
84the list of "known" UUIDs for the input to the ToUUID macro.
85
86Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the
87NFIT table.
88
89
90----------------------------------------
91
9225 September 2020. Summary of changes for version 20200925:
93
94This release is available at https://acpica.org/downloads
95
96
971) ACPICA kernel-resident subsystem:
98
99Preserve memory opregion mappings. The ACPICA's strategy with respect to
100the handling of memory mappings associated with memory operation regions
101is to avoid mapping the entire region at once which may be problematic at
102least in principle (for example, it may lead to conflicts with
103overlapping mappings having different attributes created by drivers).  It
104may also be wasteful, because memory opregions on some systems take up
105vastchunks of address space while the fields in those regions actually
106accessed by AML are sparsely distributed.
107
108For this reason, a one-page "window" is mapped for a given opregion on
109the first memory access through it and if that "window" does not cover an
110address range accessed through that opregion subsequently, it is unmapped
111and a new "window" is mapped to replace it.  Next, if the new "window" is
112not sufficient to access memory through the opregion in question in the
113future, it will be replaced with yet another "window" and so on.  That
114may lead to a suboptimal sequence of memory mapping and unmapping
115operations, for example if two fields in one opregion separated from each
116other by a sufficiently wide chunk of unused address space are accessed
117in an alternating pattern.
118
119Added support for 64 bit risc-v compilation.  Useful for acpica tools and
120incorporating ACPICA into the Firmware Test Suite. Colin Ian King
121<colin.king@canonical.com>.
122
123Added support for SMBus predefined names (from SMBus Control Method
124Interface Specification, Version 1.0, December 10, 1999. New predefined
125names:
126    _SBA
127    _SBI
128    _SBR
129    _SBT
130    _SBW
131
132AML Disassembler: Added a new command, "All <NameSeg>". This command will
133evaluate all objects in the current namespace whose NameString contains
134the input NameSeg as the last element of the NameString. Useful for
135debugging.
136
137
1382) iASL Compiler/Disassembler and ACPICA tools:
139
140iASL: fixed a crash that occurred when predefined objects return packages
141with lengths that exceed the initializer list.
142
143iASL: added more detail to external resolution error message when
144compiling multiple definition blocks.
145
146iASL: added a remark for an attempt to create a nameseg or namestring
147containing lower-case letters. This should prevent declaring multiple
148namesegs or namestrings in an attempt to refer to different objects (with
149different cases), but actually refer to the same object(s).
150
151iASL: improve alias analysis by saving object type. If the alias is a
152method type, the parameter count is also recorded.
153
154AcpiExec: Increase the default loop timeout value. Was 1 second, is now
15510 seconds. Prevents unnecessary timeouts when executing control methods
156from the command line.
157
158AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal
159list. Includes:
160    Memory Device
161    Generic Buttons Device
162    NVDIMM Root Device
163    Control Method Battery
164    Device Graphs for _DSD method
165    Hierarchical Data Extension
166....ARM CoreSight Graph
167
168----------------------------------------
169
170
17117 July 2020. Summary of changes for version 20200717:
172
173This release is available at https://acpica.org/downloads
174
175
1761) ACPICA kernel-resident subsystem:
177
178Do not increment OperationRegion reference counts for field units. Recent
179server firmware has revealed that this reference count can overflow on
180large servers that declare many field units (thousands) under the same
181OperationRegion. This occurs because each field unit declaration will add
182a reference count to the source OperationRegion. This release solves the
183reference count overflow for OperationRegion objects by preventing
184fieldUnits from incrementing their parent OperationRegion's reference
185count.
186
187Replaced one-element arrays with flexible-arrays, which were introduced
188in C99.
189
190Restored the readme file containing the directions for generation of
191ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is
192located at: generate/msvc2017/readme.txt
193
1942) iASL Compiler/Disassembler and ACPICA tools:
195
196iASL: Fixed a regression found in version 20200214. Prevent iASL from
197emitting an extra byte of garbage data when control methods declared a
198single parameter type without using braces. This extra byte is known to
199cause a blue screen on the Windows AML interpreter.
200
201iASL: Made a change to allow external declarations to specify the type of
202a named object even when some name segments are not defined.
203This change allows the following ASL code to compile (When DEV0 is not
204defined or not defined yet):
205
206    External (\_SB.DEV0.OBJ1, IntObj)
207    External (\_SB.DEV0, DeviceObj)
208
209iASL: Fixed a problem where method names in "Alias ()" statement could be
210misinterpreted. They are now interpreted correctly as method invocations.
211
212iASL: capture a method parameter count (Within the Method info segment,
213as well as the argument node) when using parameter type lists.
214
215----------------------------------------
216
217
21828 May 2020. Summary of changes for version 20200528:
219
220
2211) ACPICA kernel-resident subsystem:
222
223Removed old/obsolete Visual Studio files which were used to build the
224Windows versions of the ACPICA tools. Since we have moved to Visual
225Studio 2017, we are no longer supporting Visual Studio 2006 and 2009
226project files. The new subdirectory and solution file are located at:
227
228    acpica/generate/msvc2017/AcpiComponents.sln
229
230
2312) iASL Compiler/Disassembler and ACPICA tools:
232
233iASL: added support for a new OperationRegion Address Space (subtype):
234PlatformRtMechanism. Support for this new keyword is being released for
235early prototyping. It will appear in the next release of the ACPI
236specification.
237
238iASL: do not optimize the NameString parameter of the CondRefOf operator.
239In the previous iASL compiler release, the NameString parameter of the
240CondRefOf was optimized. There is evidence that some implementations of
241the AML interpreter do not perform the recursive search-to-parent search
242during the execution of the CondRefOf operator. Therefore, the CondRefOf
243operator behaves differently when the NameString parameter is a single
244name segment (a NameSeg) as opposed to a full NamePath (starting at the
245root scope) or a NameString containing parent prefixes.
246
247iASL: Prevent an inadvertent remark message. This change prevents a
248remark if within a control method the following exist:
2491) An Operation Region is defined, and
2502) A Field operator is defined that refers to the region.
251This happens because at the top level, the Field operator does not
252actually create a new named object, it simply references the operation
253region.
254
255Removed support for the acpinames utility. The acpinames was a simple
256utility used to populate and display the ACPI namespace without executing
257any AML code. However, ACPICA now supports executable opcodes outside of
258control methods. This means that executable AML opcodes such as If and
259Store opcodes need to be executed during table load. Therefore, acpinames
260would need to be updated to match the same behavior as the acpiexec
261utility and since acpiexec can already dump the entire namespace (via the
262'namespace' command), we no longer have the need to maintain acpinames.
263
264    In order to dump the contents of the ACPI namespace using acpiexec,
265execute the following command from the command line:
266
267        acpiexec -b "n" [aml files]
268
269----------------------------------------
270
271
27230 April 2020. Summary of changes for version 20200430:
273
2741) ACPICA kernel-resident subsystem:
275
276Cleaned up the coding style of a couple of global variables
277(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers.
278AcpiProtocolLengths was made static, and the definition of
279AcpiGbl_NextCmdNum was moved to acglobal.h.
280
281
2822) iASL Compiler/Disassembler and ACPICA tools:
283
284iASL DataTable Compiler:  Fixed a segfault on errors that aren't directly
285associated with a field.
286
287Disassembler: has been made more resilient so that it will continue to
288parse AML even if the AML generates ACPI namespace errors. This enables
289iASL to disassemble some AML that may have been compiled using older
290versions of iASL that no longer compile with newer versions of iASL.
291
292iASL: Fixed the required parameters for _NIH and _NIG. Previously, there
293was a mixup where _NIG required one parameter and _NIH required zero
294parameters. This change swaps these parameter requirements. Now it is
295required that _NIH must be called with one parameter and _NIG requires
296zero parameters.
297
298iASL: Allow use of undefined externals as long as they are protected by
299an if (CondRefOf (...)) block when compiling multiple definition blocks.
300
301iASL: Fixed the type override behavior of named objects that are declared
302as External. External declarations will no longer override the type of
303the actual definition if it already exists.
304
305AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable
306command line wildcard support on Windows. Note: the AcpiNames utility is
307essentially redundant with the AcpiExec utility (using the "namespace"
308command) and is therefore deprecated. It will be removed in future
309releases of ACPICA.
310
311Disassembler: ignore AE_ALREADY_EXISTS status when parsing create*
312operators. The disassembler is intended to emit existing ASL code as-is.
313Therefore, error messages emitted during disassembly should be ignored or
314handled in a way such that the disassembler can continue to parse the
315AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op
316parsing for create operators in order to complete parsing ASL termlists.
317
318iASL DataTable Compiler: IVRS table: fix potentially uninitialized
319variable warning. Some compilers catch potential uninitialized variables.
320This is done by examining branches of if/else statements. This change
321replaces an "else if" with an "else" to fix the uninitialized variable
322warning.
323
324
325----------------------------------------
32626 March 2020. Summary of changes for version 20200326:
327
328
3291) ACPICA kernel-resident subsystem:
330
331Performed a code clean-up to prevent build errors on early versions of
332GCC-10.
333
334Added the NHLT table signature. iASL data table compiler/disassembler
335support for this table is coming soon.
336
337
3382) iASL Compiler/Disassembler and ACPICA tools:
339
340AcpiExec: Fixed several problems with the namespace initialization file
341(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS
342errors, several seg faults, and enhancements to line parsing within the
343init file. In addition, each object found in the init file and it's new
344value is displayed, as well as any such entries that do not have a
345corresponding name in the namespace. For reference, the syntax for the
346various supported data types are presented below:
347	PCHG 0x777788889999BBBB	// Integer
348	\DEV1.STR1 "XYZ"			// String
349	BUF1 (88 99 AA)			// Buffer
350	PKG1 [0x1111 0x2222]		// Package
351	\BF1 0x7980				// BufferField
352	RCRV 0x0123456789ABCDEF	// Field Unit
353
354iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro
355can be used anywhere in a given ASL file to configure iASL to expect an
356iASL compiler error code on the line where this macro was placed. If the
357error code does not exist, an error is generated. This is intended to be
358used for ACPICA's ASL test suite, but can be used by ASL developers as
359well.
360
361iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD
362IVRS table parsing supported only IVHD type 10h structures. Parsing an
363IVHD type 11h caused the iasl to report unknown subtable type. Add
364necessary structure definition for IVHD type 11h and apply correct
365parsing method based on subtable type. Micha? ?ygowski.
366
367iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name
368According to AMD IOMMU Specification Revision 3.05 the reserved field
369should be IOMMU Feature Reporting. Change the name of the field to the
370correct one. Micha? ?ygowski.
371
372acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch
373based on suggestions by David Seifert and Benjamin Berg.
374
375iASL: table compiler: removed an unused variable (DtCompilerParserResult)
376causing linking errors. Patch based on suggestions by David Seifert and
377Benjamin Berg.
378
379iASL: table compiler: make LexBuffer static to avoid linking errors in
380newer compilers. Patch based on suggestions by David Seifert and Benjamin
381Berg.
382
383iASL: fixed type matching between External and Named objects. External
384object types can only be expressed with ACPI object type values that are
385defined in the ACPI spec. However, iASL uses ACPI object type values that
386are local to ACPICA in addition to the values defined in the ACPI spec.
387This change implements type matching to map some object type values
388specific to ACPICA to ones that are defined in the ACPI spec.
389
390iASL: Dropped the type mismatch compiler error that can arise from
391External declarations to a warning. This warning can occur when there is
392a type difference between the external declaration and the actual object
393declaration (when compiling multiple files/modules simultaneously).
394
395iASL: removed an incorrect error message regarding externals. This change
396removes an incorrect error that is emitted when a duplicate external
397declaration does not contain a type that opens a scope. This is incorrect
398because the duplicate external with conflicting types are already caught
399by iASL and it doesn't make any sense to enforce what this conflicting
400type should be.
401
402AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be
403surrounded by parens. Otherwise, a logical statement that applies a
404logical not operator to this macro could result in a computation that
405applies the operator to the left side of the logical and but not the
406right. Reported-by: John Levon <john.levon@joyent.com>
407
408Fixed a problem with the local version of sprint(): On 32-bit, the
409provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX,
410String + Size will wrap, meaning End < Start, and
411AcpiUtBoundStringOutput() will never output anything as a result. The
412symptom seen of this was acpixtract failing to output anything -- with a
413custom build that included utprint.c. Signed-off-by: John Levon
414<john.levon@joyent.com>
415
416iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the
417ACPI specification.
418
419
420----------------------------------------
42114 February 2020. Summary of changes for version 20200214:
422
423
4241) ACPICA kernel-resident subsystem:
425
426Enable sleep button on ACPI legacy wake:  Hibernation (S4) is triggered
427in a guest when it receives a sleep trigger from the hypervisor. When the
428guest resumes from this power state, it does not see the SleepEnabled
429bit. In other words, the sleepHibernation (S4) is triggered in a guest
430when it receives a sleep trigger from the hypervisor. When the guest
431resumes from this power state, it does not see the SleepEnabled bit. In
432other words, the sleep button is not enabled on waking from an S4 state.
433This causes subsequent invocation of sleep state to fail since the
434guest.button is not enabled on waking from an S4 state. This causes
435subsequent invocation of sleep state to fail in the guest. Fix this
436problem by enabling the sleep button in ACPI legacy wake. From Anchal
437Agarwal <anchalag@amazon.com>.
438
439Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used
440for checking the status bits of all enabled GPEs in one go. It is needed
441to distinguish spurious SCIs from genuine ones when deciding whether or
442not to wake up the system from suspend-to-idle.
443
444Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be
445using HOST in their environment to represent the host name for their
446machines. Avoid this problem by renaming this variable from HOST to
447ACPI_HOST.
448
449MSVC 2017 project files: Enable multiprocessor generation to improve
450build performance.
451
452Added a macro to get the byte width of a Generic Address structure. New
453ACPI_ACCESS_BYTE_WIDTH is in addition to the existing
454ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg.
455
456
4572) iASL Compiler/Disassembler and ACPICA tools:
458
459iASL: Implemented full support for the (optional, rarely used) ReturnType
460and ParameterTypesList for the Method, Function, and External operators.
461For Method declarations, the number of individual ParameterTypes must
462match the declaration of the number of arguments (NumArgs). This also
463Fixes a problem with the External operator where extra/extraneous bytes
464were emitted in the AML code if the optional ReturnType/ParameterTypes
465were specified for a MethodObj declaration.
466New error message:
4671) Method NumArgs count does not match length of ParameterTypes list
468
469iASL: Implemented detection of type mismatches between External
470declarations and named object declarations. Also, detect type mismatches
471between multiple External declarations of the same Name.
472New error messages:
4731) Type mismatch between external declaration and actual object
474declaration detected
4752) Type mismatch between multiple external declarations detected
476
477iASL: Implemented new error messages for External operators that specify
478a ReturnType and/or ParameterTypesList for any object type other than
479control methods (MethodObj).
480New error messages:
4811) Return type is only allowed for Externals declared as MethodObj
4822) Parameter type is only allowed for Externals declared as MethodObj
483
484iASL: Implemented two new remark/warning messages for ASL code that
485creates named objects from within a control method. This is very
486inefficient since the named object must be created and deleted each time
487the method is executed.
488New messages:
4891) Creation of named objects within a method is highly inefficient, use
490globals or method local variables instead (remark)
4912) Static OperationRegion should be declared outside control method
492(warning)
493
494iASL: Improved illegal forward reference detection by adding support to
495detect forward-reference method invocations.
496
497iASL: Detect and issue an error message for NameStrings that contain too
498many individual NameSegs (>255). This is an AML limitation that is
499defined in the ACPI specification.
500New message:
5011) NameString contains too many NameSegs (>255)
502
503acpidump: windows: use GetSystemFirmwareTable API for all tables except
504SSDT. By using this API, acpidump is able to get all tables in the XSDT
505
506iASL: Removed unused parser file and updated msvc2017 project files.
507Removed the obsolete AslCompiler.y from the repository.
508
509iASL: msvc2017: Fixed macros in the file dependency list to prevent
510unnecessary rebuilds. Replace %(Directory) with %(RelativeDir).
511
512Disassembler: Prevent spilling error messages to the output file. All
513errors are directed to the console instead. These error messages
514prevented re-compilation of the resulting disassembled ASL output file
515(.DSL).
516
517
518----------------------------------------
51910 January 2020. Summary of changes for version 20200110:
520
521
5221) ACPICA kernel-resident subsystem:
523
524Updated all copyrights to 2020. This affects all ACPICA source code
525modules.
526
527
5282) iASL Compiler/Disassembler and ACPICA tools:
529
530ASL test suite (ASLTS): Updated all copyrights to 2020.
531
532Tools and utilities: Updated all signon copyrights to 2020.
533
534iASL: fix forward reference analysis for field declarations. Fixes
535forward reference analysis for field declarations by searching the
536parent scope for the named object when the object is not present in
537the current scope.
538
539iASL: Improved the error output for ALREADY_EXISTS errors. Now, the
540full pathname of the name that already exists is printed.
541
542iASL: Enhance duplicate Case() detection for buffers. Add check for
543buffers with no initializer list (these buffers will be filled with
544zeros at runtime.)
545
546
547----------------------------------------
54813 December 2019. Summary of changes for version 20191213:
549
550
5511) ACPICA kernel-resident subsystem:
552
553Return a Buffer object for all fields created via the CreateField
554operator. Previously, an Integer would be returned if the size of
555the field was less than or equal to the current size of an Integer.
556Although this goes against the ACPI specification, it provides
557compatibility with other ACPI implementations. Also updated the
558ASLTS test suite to reflect this new behavior.
559
5602) iASL Compiler/Disassembler and ACPICA tools:
561
562iASL: Implemented detection of (and throw an error for) duplicate
563values for Case statements within a single Switch statement. Duplicate
564Integers, Strings, and Buffers are supported.
565
566iASL: Fix error logging issue during multiple file compilation --
567Switch to the correct input file during error node creation.
568
569iASL: For duplicate named object creation, now emit an error instead
570of a warning - since this will cause a runtime error.
571
572AcpiSrc: Add unix line-ending support for non-Windows builds.
573
574iASL: Add an error condition for an attempt to create a NameString
575with > 255 NameSegs (the max allowable via the AML definition).
576
577
578----------------------------------------
57918 October 2019. Summary of changes for version 20191018:
580
581
5821) ACPICA kernel-resident subsystem:
583
584Debugger: added a new command: ?Fields [address space ID]?. This command
585dumps the contents of all field units that are defined within the
586namespace with a particular address space ID.
587
588Modified the external interface AcpiLoadTable() to return a table index.
589This table index can be used for unloading a table for debugging.
590    ACPI_STATUS
591    AcpiLoadTable (
592        ACPI_TABLE_HEADER       *Table,
593        UINT32                  *TableIndex))
594
595Implemented a new external interface: AcpiUnloadTable() This new function
596takes a table index as an argument and unloads the table. Useful for
597debugging only.
598    ACPI_STATUS
599    AcpiUnloadTable (
600        UINT32                  TableIndex))
601
602Ported the AcpiNames utility to use the new table initialization
603sequence. The utility was broken before this change. Also, it was
604required to include most of the AML interpreter into the utility in order
605to process table initialization (module-level code execution.)
606
607Update for results from running Clang V8.0.1. This fixes all "dead
608assignment" warnings. There are still several "Dereference of NULL
609pointer" warnings, but these have been found to be false positive
610warnings.
611
612
6132) iASL Compiler/Disassembler and ACPICA tools:
614
615iASL: numerous table compiler changes to ensure that the usage of
616yacc/bison syntax is POSIX-compliant.
617
618iASL/disassembler: several simple bug fixes in the data table
619disassembler.
620
621Acpiexec: expanded the initialization file (the -fi option) to initialize
622strings, buffers, packages, and field units.
623
624
625----------------------------------------
62616 August 2019. Summary of changes for version 20190816:
627
628This release is available at https://acpica.org/downloads
629
630
6311) ACPICA kernel-resident subsystem:
632
633Modified the OwnerId mechanism to allow for more Owner Ids. The previous
634limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT
635exceptions on machines with a large number of initialization threads,
636many CPU cores and nested initialization control methods.
637
638Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for
639checking if the given GPE (as represented by a GPE device handle and a
640GPE number) is currently active and dispatching it (if that's the case)
641outside of interrupt context.
642
643Table load: exit the interpreter before initializing objects within the
644new table This prevents re-acquiring the interpreter lock when loading
645tables
646
647Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
648uk Kim
649
650Macros: removed pointer math on a null pointer. Causes warnings on some
651compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR
652instead of using arithmetic.
653
654Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used
655across all "printf-like" internal functions. Also, cleanup all calls to
656such functions (both in 32-bit mode and 64-bit mode) now that they are
657analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
658
659
6602) iASL Compiler/Disassembler and ACPICA tools:
661
662iASL: implemented a new data table compiler flex/bison front-end. This
663change is internal and is not intended to result in changes to the
664compiled code. This new compiler front-end can be invoked using the -tp
665option for now, until the old mechanism is removed.
666
667ASLTS: Implemented a new data table compiler test suite. This test suite
668generates all table templates and compile/disassemble/re-compile/binary-
669compare each file.
670
671iASL: return -1 if AML files were not generated due to compiler errors
672
673iASL: added a warning on use of the now-legacy ASL Processor () keyword.
674
675iASL: added an error on _UID object declaration that returns a String
676within a Processor () declaration. A _UID for a processor must be an
677Integer.
678
679iASL: added a null terminator to name strings that consist only of
680multiple parent prefixes (^)
681
682iASL: added support to compile both ASL and data table files in a single
683command.
684
685Updated the tool generation project files that were recently migrated to
686MSVC 2017 to eliminate all new warnings. The new project files appear in
687the directory \acpica\generate\msvc2017. This change effectively
688deprecates the older project files in \acpica\generate\msvc9.
689
690
691----------------------------------------
69203 July 2019. Summary of changes for version 20190703:
693
694
6951) ACPICA kernel-resident subsystem:
696
697Remove legacy module-level support code. There were still some remnants
698of the legacy module-level code executions. Since we no longer support
699this option, this is essentially dead code and has been removed from the
700ACPICA source.
701
702iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
703scope. If these named objects are declared outside the root scope, they
704will not be invoked by any host Operating System.
705
706Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC
707one) can be enabled in two situations. First, the GPEs with existing _Lxx
708and _Exx methods are enabled implicitly by ACPICA during system
709initialization.  Second, the GPEs without these methods (like GPEs listed
710by _PRW objects for wakeup devices) need to be enabled directly by the
711code that is going to use them (e.g. ACPI power management or device
712drivers).
713
714In the former case, if the status of a given GPE is set to start with,
715its handler method (either _Lxx or _Exx) needs to be invoked to take care
716of the events (possibly) signaled before the GPE was enabled. In the
717latter case, however, the first caller of AcpiEnableGpe() for a given GPE
718should not be expected to care about any events that might be signaled
719through it earlier.  In that case, it is better to clear the status of
720the GPE before enabling it, to prevent stale events from triggering
721unwanted actions (like spurious system resume, for example).
722
723For this reason, modify AcpiEvAddGpeReference() to take an additional
724boolean argument indicating whether or not the GPE status needs to be
725cleared when its reference counter changes from zero to one and make
726AcpiEnableGpe() pass TRUE to it through that new argument.
727
728
7292) iASL Compiler/Disassembler and ACPICA tools:
730
731The tool generation process has been migrated to MSVC 2017, and all
732project files have been upgraded. The new project files appear in the
733directory \acpica\generate\msvc2017. This change effectively deprecates
734the older project files in \acpica\generate\msvc9.
735
736iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
737scope. If these named objects are declared outside the root scope, they
738will not be invoked by any host Operating System
739
740----------------------------------------
74109 May 2019. Summary of changes for version 20190509:
742
743
7441) ACPICA kernel-resident subsystem:
745
746Revert commit  6c43e1a ("ACPICA: Clear status of GPEs before enabling
747them") that causes problems with Thunderbolt controllers to occur if a
748dock device is connected at init time (the xhci_hcd and thunderbolt
749modules crash which prevents peripherals connected through them from
750working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA:
751Dispatch active GPEs at init time") to get undone, so the problem
752addressed by commit ecc1165b8b74 appears again as a result of it.
753
754
7552) iASL Compiler/Disassembler and ACPICA tools:
756
757Reverted iASL: Additional forward reference detection. This change
758reverts forward reference detection for field declarations. The feature
759unintentionally emitted AML bytecode with incorrect package lengths for
760some ASL code related to Fields and OperationRegions. This malformed AML
761can cause systems to crash
762during boot. The malformed AML bytecode is emitted in iASL version
76320190329 and 20190405.
764
765iASL: improve forward reference detection. This change improves forward
766reference detection for named objects inside of scopes. If a parse object
767has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to
768a named object that is declared later in the AML bytecode. This is
769allowed if the reference is inside of a method and the declaration is
770outside of a method like so:
771
772DefinitionBlock(...)
773{
774    Method (TEST)
775    {
776        Return (NUM0)
777    }
778    Name (NUM0,0)
779}
780
781However, if the declaration and reference are both in the same method or
782outside any methods, this is a forward reference and should be marked as
783an error because it would result in runtime errors.
784
785DefinitionBlock(...)
786{
787    Name (BUFF, Buffer (NUM0) {}) // Forward reference
788    Name (NUM0, 0x0)
789
790    Method (TEST)
791    {
792        Local0 = NUM1
793        Name (NUM1, 0x1) // Forward reference
794        return (Local0)
795    }
796}
797
798iASL: Implemented additional buffer overflow analysis for BufferField
799declarations. Check if a buffer index argument to a create buffer field
800operation is beyond the end of the target buffer.
801
802This affects these AML operators:
803
804   AML_CREATE_FIELD_OP
805   AML_CREATE_BIT_FIELD_OP
806   AML_CREATE_BYTE_FIELD_OP
807   AML_CREATE_WORD_FIELD_OP
808   AML_CREATE_DWORD_FIELD_OP
809   AML_CREATE_QWORD_FIELD_OP
810
811 There are three conditions that must be satisfied in order to allow this
812validation at compile time:
813
814   1) The length of the target buffer must be an integer constant
815   2) The index specified in the create* must be an integer constant
816   3) For CreateField, the bit length argument must be non-zero.
817
818Example:
819    Name (BUF1, Buffer() {1,2})
820    CreateField (BUF1, 7, 9, CF03)  // 3: ERR
821
822dsdt.asl     14:     CreateField (BUF1, 7, 9, CF03)  // 3: ERR
823Error    6165 -                           ^ Buffer index beyond end of
824target buffer
825
826
827----------------------------------------
82805 April 2019. Summary of changes for version 20190405:
829
830
8311) ACPICA kernel-resident subsystem:
832
833Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop
834unconditionally clearing ACPI IRQs during suspend/resume") was added
835earlier to stop clearing of event status bits unconditionally on suspend
836and resume paths. Though this change fixed an issue on suspend path, it
837introduced regressions on several resume paths. In the case of S0ix,
838events are enabled as part of device suspend path. If status bits for the
839events are set when they are enabled, it could result in premature wake
840from S0ix. If status is cleared for any event that is being enabled so
841that any stale events are cleared out. In case of S0ix, events are
842enabled as part of device suspend path. If status bits for the events are
843set when they are enabled, it could result in premature wake from S0ix.
844
845This change ensures that status is cleared for any event that is being
846enabled so that any stale events are cleared out.
847
848
8492) iASL Compiler/Disassembler and ACPICA tools:
850
851iASL: Implemented an enhanced multiple file compilation that combines
852named objects from all input files to a single namespace. With this
853feature, any unresolved external declarations as well as duplicate named
854object declarations can be detected during compilation rather than
855generating errors much later at runtime. The following commands are
856examples that utilize this feature:
857    iasl dsdt.asl ssdt.asl
858    iasl dsdt.asl ssdt1.asl ssdt2.asl
859    iasl dsdt.asl ssdt*.asl
860
861----------------------------------------
86229 March 2019. Summary of changes for version 20190329:
863
864
8651) ACPICA kernel-resident subsystem:
866
867Namespace support: Remove the address nodes from global list after method
868termination. The global address list contains pointers to namespace nodes
869that represent Operation Regions. This change properly removes Operation
870Region namespace nodes that are declared dynamically during method
871execution.
872
873Linux: Use a different debug default than ACPICA. There was a divergence
874between Linux and the ACPICA codebases. In order to resolve this
875divergence, Linux now declares its own debug default in aclinux.h
876
877Renamed some internal macros to improve code understanding and
878maintenance. The macros below all operate on single 4-character ACPI
879NameSegs, not generic strings (old -> new):
880    ACPI_NAME_SIZE    -> ACPI_NAMESEG_SIZE
881    ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
882    ACPI_MOVE_NAME    -> ACPI_COPY_NAMESEG
883
884Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
885table.
886
887Test suite: Update makefiles, add PCC operation region support
888
889
8902) iASL Compiler/Disassembler and Tools:
891
892iASL: Implemented additional illegal forward reference detection. Now
893detect and emit an error upon detection of a forward reference from a
894Field to an Operation Region. This will fail at runtime if allowed to
895pass the compiler.
896
897AcpiExec: Add an address list check for dynamic Operation Regions. This
898feature performs a sanity test for each node the global address list.
899This is done in order to ensure that all dynamic operation regions are
900properly removed from the global address list and no dangling pointers
901are left behind.
902
903Disassembler: Improved generation of resource pathnames. This change
904improves the code that generates resource descriptor and resource tag
905pathnames. The original code used a bunch of str* C library functions
906that caused warnings on some compilers.
907
908iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
909function can overwrite buffers if the calling code is not very careful.
910In the case of generating a module/table header, use of memmove is a
911better implementation.
912
913
9143) Status of new features that have not been completed at this time:
915
916iASL: Implementing an enhanced multiple file compilation into a single
917namespace feature (Status): This feature will be released soon, and
918allows multiple ASL files to be compiled into the same single namespace.
919By doing so, any unresolved external declarations as well as duplicate
920named object declarations can be detected during compilation (rather than
921later during runtime). The following commands are examples that utilize
922this feature:
923    iasl dsdt.asl ssdt.asl
924    iasl dsdt.asl ssdt1.asl ssdt2.asl
925    iasl dsdt.asl ssdt*.asl
926
927ASL tutorial status: Feedback is being gathered internally and the
928current plan is to publish this tutorial on the ACPICA website after a
929final review by a tech writer.
930
931----------------------------------------
93215 February 2019. Summary of changes for version 20190215:
933
934
9350) Support for ACPI specification version 6.3:
936
937Add PCC operation region support for the AML interpreter. This adds PCC
938operation region support in the AML interpreter and a default handler for
939acpiexec. The change also renames the PCC region address space keyword to
940PlatformCommChannel.
941
942Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG.
943These methods provide OSPM with health information and device boot
944status.
945
946PDTT: Add TriggerOrder to the PCC Identifier structure. The field value
947defines if the trigger needs to be invoked by OSPM before or at the end
948of kernel crash dump processing/handling operation.
949
950SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT
951is used for describing devices such as heterogeneous processors,
952accelerators, GPUs, and IO devices with integrated compute or DMA
953engines.
954
955MADT: Add support for statistical profiling in GICC. Statistical
956profiling extension (SPE) is an architecture-specific feature for ARM.
957
958MADT: Add online capable flag. If this bit is set, system hardware
959supports enabling this processor during OS runtime.
960
961New Error Disconnect Recover Notification value. There are a number of
962scenarios where system Firmware in collaboration with hardware may
963disconnect one or more devices from the rest of the system for purposes
964of error containment. Firmware can use this new notification value to
965alert OSPM of such a removal.
966
967PPTT: New additional fields in Processor Structure Flags. These flags
968provide more information about processor topology.
969
970NFIT/Disassembler: Change a field name from "Address Range" to "Region
971Type".
972
973HMAT updates: make several existing fields to be reserved as well as
974rename subtable 0 to "memory proximity domain attributes".
975
976GTDT: Add support for new GTDT Revision 3. This revision adds information
977for the EL2 timer.
978
979iASL: Update the HMAT example template for new fields.
980
981iASL: Add support for the new revision of the GTDT (Rev 3).
982
983
9841) ACPICA kernel-resident subsystem:
985
986AML Parser: fix the main AML parse loop to correctly skip erroneous
987extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
988byte extended opcodes. If an error occurs during an AML table load, the
989AML parser will continue loading the table by skipping the offending
990opcode. This implements a "load table at any cost" philosophy.
991
992
9932) iASL Compiler/Disassembler and Tools:
994
995iASL: Add checks for illegal object references, such as a reference
996outside of method to an object within a method. Such an object is only
997temporary.
998
999iASL: Emit error for creation of a zero-length operation region. Such a
1000region is rather pointless. If encountered, a runtime error is also
1001implemented in the interpreter.
1002
1003Debugger: Fix a possible fault with the "test objects" command.
1004
1005iASL: Makefile: support parent directory filenames containing embedded
1006spaces.
1007
1008iASL: Update the TPM2 template to revision 4.
1009
1010iASL: Add the ability to report specific warnings or remarks as errors.
1011
1012Disassembler: Disassemble OEMx tables as actual AML byte code.
1013Previously, these tables were treated as "unknown table".
1014
1015iASL: Add definition and disassembly for TPM2 revision 3.
1016
1017iASL: Add support for TPM2 rev 3 compilation.
1018
1019
1020----------------------------------------
102108 January 2019. Summary of changes for version 20190108:
1022
1023
10241) ACPICA kernel-resident subsystem:
1025
1026Updated all copyrights to 2019. This affects all source code modules.
1027
1028
10292) iASL Compiler/Disassembler and Tools:
1030
1031ASL test suite (ASLTS): Updated all copyrights to 2019.
1032
1033Tools: Updated all signon copyrights to 2019.
1034
1035AcpiExec: Added a new option to dump extra information concerning any
1036memory leaks detected by the internal object/cache tracking mechanism. -
1037va
1038
1039iASL: Updated the table template for the TPM2 table to the newest version
1040of the table (Revision 4)
1041
1042
1043----------------------------------------
104413 December 2018. Summary of changes for version 20181213:
1045
1046
10471) ACPICA Kernel-resident Subsystem:
1048
1049Fixed some buffer length issues with the GenericSerialBus, related to two
1050of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
1051which are rarely seen in the field. For these, the LEN field of the ASL
1052buffer is now ignored. Hans de Goede
1053
1054Implemented a new object evaluation trace mechanism for control methods
1055and data objects. This includes nested control methods. It is
1056particularly useful for examining the ACPI execution during system
1057initialization since the output is relatively terse. The flag below
1058enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
1059   #define ACPI_LV_EVALUATION          0x00080000
1060
1061Examples:
1062   Enter evaluation       :  _SB.PCI0._INI (Method)
1063   Exit evaluation        :  _SB.PCI0._INI
1064   Enter evaluation       :  _OSI (Method)
1065   Exit evaluation        :  _OSI
1066   Enter evaluation       :  _SB.PCI0.TEST (Method)
1067   Nested method call     :     _SB.PCI0.NST1
1068   Exit nested method     :     _SB.PCI0.NST1
1069   Exit evaluation        :  _SB.PCI0.TEST
1070
1071Added two recently-defined _OSI strings. See
1072https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
1073osi.
1074   "Windows 2018"
1075   "Windows 2018.2"
1076
1077Update for buffer-to-string conversions via the ToHexString ASL operator.
1078A "0x" is now prepended to each of the hex values in the output string.
1079This provides compatibility with other ACPI implementations. The ACPI
1080specification is somewhat vague on this issue.
1081   Example output string after conversion:
1082"0x01,0x02,0x03,0x04,0x05,0x06"
1083
1084Return a run-time error for TermArg expressions within individual package
1085elements. Although this is technically supported by the ASL grammar,
1086other ACPI implementations do not support this either. Also, this fixes a
1087fault if this type of construct is ever encountered (it never has been).
1088
1089
10902) iASL Compiler/Disassembler and Tools:
1091
1092iASL: Implemented a new compile option (-ww) that will promote individual
1093warnings and remarks to errors. This is intended to enhance the firmware
1094build process.
1095
1096AcpiExec: Implemented a new command-line option (-eo) to support the new
1097object evaluation trace mechanism described above.
1098
1099Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
1100instead of a "unknown table" message.
1101
1102AcpiHelp: Improved support for the "special" predefined names such as
1103_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be
1104used for "xx" and "x".
1105
1106----------------------------------------
110731 October 2018. Summary of changes for version 20181031:
1108
1109
1110An Operation Region regression was fixed by properly adding address
1111ranges to a global list during initialization. This allows OS to
1112accurately check for overlapping regions between native devices (such as
1113PCI) and Operation regions as well as checking for region conflicts
1114between two Operation Regions.
1115
1116Added support for the 2-byte extended opcodes in the code/feature that
1117attempts to continue parsing during the table load phase. Skip parsing
1118Device declarations (and other extended opcodes) when an error occurs
1119during parsing. Previously, only single-byte opcodes were supported.
1120
1121Cleanup: Simplified the module-level code support by eliminating a
1122useless global variable (AcpiGbl_GroupModuleLeveCode).
1123
1124
11252) iASL Compiler/Disassembler and Tools:
1126
1127iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
1128could cause a fault in the preprocessor. This was an inadvertent side-
1129effect from moving more allocations/frees to the local cache/memory
1130mechanism.
1131
1132iASL: Enhanced error detection by validating that all NameSeg elements
1133within a NamePatch actually exist. The previous behavior was spotty at
1134best, and such errors could be improperly ignored at compiler time (never
1135at runtime, however. There are two new error messages, as shown in the
1136examples below:
1137
1138dsdt.asl     33:     CreateByteField (TTTT.BXXX, 1, CBF1)
1139Error    6161 -                              ^ One or more objects within
1140the Pathname do not exist (TTTT.BXXX)
1141
1142dsdt.asl     34:     CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
1143Error    6160 -        One or more prefix Scopes do not exist ^
1144(BBBB.CBF1)
1145
1146iASL: Disassembler/table-compiler: Added support for the static data
1147table TPM2 revision 3 (an older version of TPM2). The support has been
1148added for the compiler and the disassembler.
1149
1150Fixed compilation of DOS format data table file on Unix/Linux systems.
1151iASL now properly detects line continuations (\) for DOS format data
1152table definition language files on when executing on Unix/Linux.
1153
1154----------------------------------------
115503 October 2018. Summary of changes for version 20181003:
1156
1157
11582) iASL Compiler/Disassembler and Tools:
1159
1160Fixed a regression introduced in version 20180927 that could cause the
1161compiler to fault, especially with NamePaths containing one or more
1162carats (^). Such as: ^^_SB_PCI0
1163
1164Added a new remark for the Sleep() operator when the sleep time operand
1165is larger than one second. This is a very long time for the ASL/BIOS code
1166and may not be what was intended by the ASL writer.
1167
1168----------------------------------------
116927 September 2018. Summary of changes for version 20180927:
1170
1171
11721) ACPICA kernel-resident subsystem:
1173
1174Updated the GPE support to clear the status of all ACPI events when
1175entering any/all sleep states in order to avoid premature wakeups. In
1176theory, this may cause some wakeup events to be missed, but the
1177likelihood of this is small. This change restores the original behavior
1178of the ACPICA code in order to fix a regression seen from the previous
1179"Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
1180This regression could cause some systems to incorrectly wake immediately.
1181
1182Updated the execution of the _REG methods during initialization and
1183namespace loading to bring the behavior into closer conformance to the
1184ACPI specification and other ACPI implementations:
1185
1186From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
1187    "Control methods must assume all operation regions are inaccessible
1188until the _REG(RegionSpace, 1) method is executed"
1189
1190    "The exceptions to this rule are:
11911.  OSPM must guarantee that the following operation regions are always
1192accessible:
1193    SystemIO operation regions.
1194    SystemMemory operation regions when accessing memory returned by the
1195System Address Map reporting interfaces."
1196
1197Since the state of both the SystemIO and SystemMemory address spaces are
1198defined by the specification to never change, this ACPICA change ensures
1199that now _REG is never called on them. This solves some problems seen in
1200the field and provides compatibility with other ACPI implementations. An
1201update to the upcoming new version of the ACPI specification will help
1202clarify this behavior.
1203
1204Updated the implementation of support for the Generic Serial Bus. For the
1205"bidirectional" protocols, the internal implementation now automatically
1206creates a return data buffer of the maximum size (255). This handles the
1207worst-case for data that is returned from the serial bus handler, and
1208fixes some problems seen in the field. This new buffer is directly
1209returned to the ASL. As such, there is no true "bidirectional" buffer,
1210which matches the ACPI specification. This is the reason for the "double
1211store" seen in the example ASL code in the specification, shown below:
1212
1213Word Process Call (AttribProcessCall):
1214    OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
1215    Field(TOP1, BufferAcc, NoLock, Preserve)
1216    {
1217        FLD1, 8, // Virtual register at command value 1.
1218    }
1219
1220    Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
1221                             // as BUFF
1222    CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
1223
1224    Store(0x5416, DATA)               // Save 0x5416 into the data buffer
1225    Store(Store(BUFF, FLD1), BUFF)    // Invoke a write/read Process Call
1226transaction
1227                           // This is the "double store". The write to
1228                           // FLD1 returns a new buffer, which is stored
1229                           // back into BUFF with the second Store.
1230
1231
12322) iASL Compiler/Disassembler and Tools:
1233
1234iASL: Implemented detection of extraneous/redundant uses of the Offset()
1235operator within a Field Unit list. A remark is now issued for these. For
1236example, the first two of the Offset() operators below are extraneous.
1237Because both the compiler and the interpreter track the offsets
1238automatically, these Offsets simply refer to the current offset and are
1239unnecessary. Note, when optimization is enabled, the iASL compiler will
1240in fact remove the redundant Offset operators and will not emit any AML
1241code for them.
1242
1243    OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
1244    Field (OPR1)
1245    {
1246        Offset (0),     // Never needed
1247        FLD1, 32,
1248        Offset (4),     // Redundant, offset is already 4 (bytes)
1249        FLD2, 8,
1250        Offset (64),    // OK use of Offset.
1251        FLD3, 16,
1252    }
1253dsdt.asl     14:         Offset (0),
1254Remark   2158 -                 ^ Unnecessary/redundant use of Offset
1255operator
1256
1257dsdt.asl     16:         Offset (4),
1258Remark   2158 -                 ^ Unnecessary/redundant use of Offset
1259operator
1260
1261----------------------------------------
126210 August 2018. Summary of changes for version 20180810:
1263
1264
12651) ACPICA kernel-resident subsystem:
1266
1267Initial ACPI table loading: Attempt to continue loading ACPI tables
1268regardless of malformed AML. Since migrating table initialization to the
1269new module-level code support, the AML interpreter rejected tables upon
1270any ACPI error encountered during table load. This is a problem because
1271non-serious ACPI errors during table load do not necessarily mean that
1272the entire definition block (DSDT or SSDT) is invalid. This change
1273improves the table loading by ignoring some types of errors that can be
1274generated by incorrect AML. This can range from object type errors, scope
1275errors, and index errors.
1276
1277Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
1278during suspend/resume. The status of ACPI events is no longer cleared
1279when entering the ACPI S5 system state (power off) which caused some
1280systems to power up immediately after turning off power in certain
1281situations. This was a functional regression. It was fixed by clearing
1282the status of all ACPI events again when entering S5 (for system-wide
1283suspend or hibernation the clearing of the status of all events is not
1284desirable, as it might cause the kernel to miss wakeup events sometimes).
1285Rafael Wysocki.
1286
1287
12882) iASL Compiler/Disassembler and Tools:
1289
1290AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
1291elements listed in the initialization file were previously initialized
1292after the table load and before executing module-level code blocks.
1293Recent changes in the module-level code support means that the table load
1294becomes a large control method execution. If fields are used within
1295module-level code and we are executing with the -fi option, the
1296initialization values were used to initialize the namespace object(s)
1297only after the table was finished loading. This change Provides an early
1298initialization of objects specified in the initialization file so that
1299field unit values are populated during the table load (not after the
1300load).
1301
1302AcpiExec: Fixed a small memory leak regression that could result in
1303warnings during exit of the utility. These warnings were similar to
1304these:
1305    0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
1306    0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
1307
1308----------------------------------------
130929 June 2018. Summary of changes for version 20180629:
1310
1311
13121) iASL Compiler/Disassembler and Tools:
1313
1314iASL: Fixed a regression related to the use of the ASL External
1315statement. Error checking for the use of the External() statement has
1316been relaxed. Previously, a restriction on the use of External meant that
1317the referenced named object was required to be defined in a different
1318table (an SSDT). Thus it would be an error to declare an object as an
1319external and then define the same named object in the same table. For
1320example:
1321    DefinitionBlock (...)
1322    {
1323        External (DEV1)
1324        Device (DEV1){...} // This was an error
1325    }
1326However, this behavior has caused regressions in some existing ASL code,
1327because there is code that depends on named objects and externals (with
1328the same name) being declared in the same table. This change will allow
1329the ASL code above to compile without errors or warnings.
1330
1331iASL: Implemented ASL language extensions for four operators to make some
1332of their arguments optional instead of required:
1333    1) Field (RegionName, AccessType, LockRule, UpdateRule)
1334    2) BankField (RegionName, BankName, BankValue,
1335                AccessType, LockRule, UpdateRule)
1336    3) IndexField (IndexName, DataName,
1337                AccessType, LockRule, UpdateRule)
1338For the Field operators above, the AccessType, LockRule, and UpdateRule
1339are now optional arguments. The default values are:
1340        AccessType: AnyAcc
1341        LockRule:   NoLock
1342        UpdateRule: Preserve
1343    4) Mutex (MutexName, SyncLevel)
1344For this operator, the SyncLevel argument is now optional. This argument
1345is rarely used in any meaningful way by ASL code, and thus it makes sense
1346to make it optional. The default value is:
1347        SyncLevel:  0
1348
1349iASL: Attempted use of the ASL Unload() operator now results in the
1350following warning:
1351    "Unload is not supported by all operating systems"
1352This is in fact very true, and the Unload operator may be completely
1353deprecated in the near future.
1354
1355AcpiExec: Fixed a regression for the -fi option (Namespace initialization
1356file. Recent changes in the ACPICA module-level code support altered the
1357table load/initialization sequence . This means that the table load has
1358become a large method execution of the table itself. If Operation Region
1359Fields are used within any module-level code and the -fi option was
1360specified, the initialization values were populated only after the table
1361had completely finished loading (and thus the module-level code had
1362already been executed). This change moves the initialization of objects
1363listed in the initialization file to before the table is executed as a
1364method. Field unit values are now initialized before the table execution
1365is performed.
1366
1367----------------------------------------
136831 May 2018. Summary of changes for version 20180531:
1369
1370
13711) ACPICA kernel-resident Subsystem:
1372
1373Implemented additional support to help ensure that a DSDT or SSDT is
1374fully loaded even if errors are incurred during the load. The majority of
1375the problems that are seen is the failure of individual AML operators
1376that occur during execution of any module-level code (MLC) existing in
1377the table. This support adds a mechanism to abort the current ASL
1378statement (AML opcode), emit an error message, and to simply move on to
1379the next opcode -- instead of aborting the entire table load. This is
1380different than the execution of a control method where the entire method
1381is aborted upon any error. The goal is to perform a very "best effort" to
1382load the ACPI tables. The most common MLC errors that have been seen in
1383the field are direct references to unresolved ASL/AML symbols (referenced
1384directly without the use of the CondRefOf operator to validate the
1385symbol). This new ACPICA behavior is now compatible with other ACPI
1386implementations.
1387
1388Interpreter: The Unload AML operator is no longer supported for the
1389reasons below. An AE_NOT_IMPLEMENTED exception is returned.
13901) A correct implementation on at least some hosts may not be possible.
13912) Other ACPI implementations do not correctly/fully support it.
13923) It requires host device driver support which is not known to exist.
1393    (To properly support namespace unload out from underneath.)
13944) This AML operator has never been seen in the field.
1395
1396Parser: Added a debug option to dump AML parse sub-trees as they are
1397being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
1398ACPI_DB_PARSE_TREES.
1399
1400Debugger: Reduced the verbosity for errors incurred during table load and
1401module-level code execution.
1402
1403Completed an investigation into adding a namespace node "owner list"
1404instead of the current "owner ID" associated with namespace nodes. This
1405list would link together all nodes that are owned by an individual
1406control method. The purpose would be to enhance control method execution
1407by speeding up cleanup during method exit (all namespace nodes created by
1408a method are deleted upon method termination.) Currently, the entire
1409namespace must be searched for matching owner IDs if (and only if) the
1410method creates named objects outside of the local scope. However, by far
1411the most common case is that methods create objects locally, not outside
1412the method scope. There is already an ACPICA optimization in place that
1413only searches the entire namespace in the rare case of a method creating
1414objects elsewhere in the namespace. Therefore, it is felt that the
1415overhead of adding an additional pointer to each namespace node to
1416implement the owner list makes this feature unnecessary.
1417
1418
14192) iASL Compiler/Disassembler and Tools:
1420
1421iASL, Disassembler, and Template generator: Implemented support for
1422Revision D of the IORT table. Adds a new subtable that is used to specify
1423SMMUv3 PMCGs. rmurphy-arm.
1424
1425Disassembler: Restored correct table header validation for the "special"
1426ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
1427table header and must be special-cased. This was a regression that has
1428been present for apparently a long time.
1429
1430AcpiExec: Reduced verbosity of the local exception handler implemented
1431within acpiexec. This handler is invoked by ACPICA upon any exceptions
1432generated during control method execution. A new option was added: -vh
1433restores the original verbosity level if desired.
1434
1435AcpiExec: Changed the default base from decimal to hex for the -x option
1436(set debug level). This simplifies the use of this option and matches the
1437behavior of the corresponding iASL -x option.
1438
1439AcpiExec: Restored a force-exit on multiple control-c (sigint)
1440interrupts. This allows program termination even if other issues cause
1441the control-c to fail.
1442
1443ASL test suite (ASLTS): Added tests for the recently implemented package
1444element resolution mechanism that allows forward references to named
1445objects from individual package elements (this mechanism provides
1446compatibility with other ACPI implementations.)
1447
1448
1449----------------------------------------
14508 May 2018. Summary of changes for version 20180508:
1451
1452
14531) ACPICA kernel-resident subsystem:
1454
1455Completed the new (recently deployed) package resolution mechanism for
1456the Load and LoadTable ASL/AML operators. This fixes a regression that
1457was introduced in version 20180209 that could result in an
1458AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
1459(SSDT) that contains package objects.
1460
1461
14622) iASL Compiler/Disassembler and Tools:
1463
1464AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
14651 MB. This change allows for table offsets within the acpidump file to be
1466up to 8 characters. These changes are backwards compatible with existing
1467acpidump files.
1468
1469
1470----------------------------------------
147127 April 2018. Summary of changes for version 20180427:
1472
1473
14741) ACPICA kernel-resident subsystem:
1475
1476Debugger: Added support for Package objects in the "Test Objects"
1477command. This command walks the entire namespace and evaluates all named
1478data objects (Integers, Strings, Buffers, and now Packages).
1479
1480Improved error messages for the namespace root node. Originally, the root
1481was referred to by the confusing string "\___". This has been replaced by
1482"Namespace Root" for clarification.
1483
1484Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
1485Ian King <colin.king@canonical.com>.
1486
1487
14882) iASL Compiler/Disassembler and Tools:
1489
1490iASL: Implemented support to detect and flag illegal forward references.
1491For compatibility with other ACPI implementations, these references are
1492now illegal at the root level of the DSDT or SSDTs. Forward references
1493have always been illegal within control methods. This change should not
1494affect existing ASL/AML code because of the fact that these references
1495have always been illegal in the other ACPI implementation.
1496
1497iASL: Added error messages for the case where a table OEM ID and OEM
1498TABLE ID strings are longer than the ACPI-defined length. Previously,
1499these strings were simply silently truncated.
1500
1501iASL: Enhanced the -tc option (which creates an AML hex file in C,
1502suitable for import into a firmware project):
1503  1) Create a unique name for the table, to simplify use of multiple
1504SSDTs.
1505  2) Add a protection #ifdef in the file, similar to a .h header file.
1506With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd,
1507evan.lloyd@arm.com
1508
1509AcpiExec: Added a new option, -df, to disable the local fault handler.
1510This is useful during debugging, where it may be desired to drop into a
1511debugger on a fault.
1512
1513----------------------------------------
151413 March 2018. Summary of changes for version 20180313:
1515
1516
15171) ACPICA kernel-resident subsystem:
1518
1519Implemented various improvements to the GPE support:
1520
15211) Dispatch all active GPEs at initialization time so that no GPEs are
1522lost.
15232) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
1524before devices are enumerated.
15253) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
1526IRQs are not lost.
15274) Add parallel GPE handling to eliminate the possibility of dispatching
1528the same GPE twice.
15295) Dispatch any pending GPEs after enabling for the first time.
1530
1531AcpiGetObjectInfo - removed support for the _STA method. This was causing
1532problems on some platforms.
1533
1534Added a new _OSI string, "Windows 2017.2".
1535
1536Cleaned up and simplified the module-level code support. These changes
1537are in preparation for the eventual removal of the legacy MLC support
1538(deferred execution), replaced by the new MLC architecture which executes
1539the MLC as a table is loaded (DSDT/SSDTs).
1540
1541Changed a compile-time option to a runtime option. Changes the option to
1542ignore ACPI table load-time package resolution errors into a runtime
1543option. Used only for platforms that generate many AE_NOT_FOUND errors
1544during boot. AcpiGbl_IgnorePackageResolutionErrors.
1545
1546Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
1547ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
1548compilation errors from unused variables (seen with some compilers).
1549
1550
15512) iASL Compiler/Disassembler and Tools:
1552
1553ASLTS: parallelized execution in order to achieve an (approximately) 2X
1554performance increase.
1555
1556ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
1557error reporting.
1558
1559----------------------------------------
156009 February 2018. Summary of changes for version 20180209:
1561
1562
15631) ACPICA kernel-resident subsystem:
1564
1565Completed the final integration of the recent changes to Package Object
1566handling and the module-level AML code support. This allows forward
1567references from individual package elements when the package object is
1568declared from within module-level code blocks. Provides compatibility
1569with other ACPI implementations.
1570
1571The new architecture for the AML module-level code has been completed and
1572is now the default for the ACPICA code. This new architecture executes
1573the module-level code in-line as the ACPI table is loaded/parsed instead
1574of the previous architecture which deferred this code until after the
1575table was fully loaded. This solves some ASL code ordering issues and
1576provides compatibility with other ACPI implementations. At this time,
1577there is an option to fallback to the earlier architecture, but this
1578support is deprecated and is planned to be completely removed later this
1579year.
1580
1581Added a compile-time option to ignore AE_NOT_FOUND exceptions during
1582resolution of named reference elements within Package objects. Although
1583this is potentially a serious problem, it can generate a lot of
1584noise/errors on platforms whose firmware carries around a bunch of unused
1585Package objects. To disable these errors, define
1586ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
1587errors are always reported for ACPICA applications such as AcpiExec.
1588
1589Fixed a regression related to the explicit type-conversion AML operators
1590(ToXXXX). The regression was introduced early in 2017 but was not seen
1591until recently because these operators are not fully supported by other
1592ACPI implementations and are thus rarely used by firmware developers. The
1593operators are defined by the ACPI specification to not implement the
1594"implicit result object conversion". The regression incorrectly
1595introduced this object conversion for the following explicit conversion
1596operators:
1597    ToInteger
1598    ToString
1599    ToBuffer
1600    ToDecimalString
1601    ToHexString
1602    ToBCD
1603    FromBCD
1604
1605
16062) iASL Compiler/Disassembler and Tools:
1607
1608iASL: Fixed a problem with the compiler constant folding feature as
1609related to the ToXXXX explicit conversion operators. These operators do
1610not support the "implicit result object conversion" by definition. Thus,
1611ASL expressions that use these operators cannot be folded to a simple
1612Store operator because Store implements the implicit conversion. This
1613change uses the CopyObject operator for the ToXXXX operator folding
1614instead. CopyObject is defined to not implement implicit result
1615conversions and is thus appropriate for folding the ToXXXX operators.
1616
1617iASL: Changed the severity of an error condition to a simple warning for
1618the case where a symbol is declared both locally and as an external
1619symbol. This accommodates existing ASL code.
1620
1621AcpiExec: The -ep option to enable the new architecture for module-level
1622code has been removed. It is replaced by the -dp option which instead has
1623the opposite effect: it disables the new architecture (the default) and
1624enables the legacy architecture. When the legacy code is removed in the
1625future, the -dp option will be removed also.
1626
1627----------------------------------------
162805 January 2018. Summary of changes for version 20180105:
1629
1630
16311) ACPICA kernel-resident subsystem:
1632
1633Updated all copyrights to 2018. This affects all source code modules.
1634
1635Fixed a possible build error caused by an unresolved reference to the
1636AcpiUtSafeStrncpy function.
1637
1638Removed NULL pointer arithmetic in the various pointer manipulation
1639macros. All "(void *) NULL" constructs are converted to "(void *) 0".
1640This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
1641
1642Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
1643Mittal.
1644
1645
16462) iASL Compiler/Disassembler and Tools:
1647
1648ASLTS: Updated all copyrights to 2018.
1649
1650Tools: Updated all signon copyrights to 2018.
1651
1652AcpiXtract: Fixed a regression related to ACPI table signatures where the
1653signature was truncated to 3 characters (instead of 4).
1654
1655AcpiExec: Restore the original terminal mode after the use of the -v and
1656-vd options.
1657
1658ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
1659
1660----------------------------------------
166114 December 2017. Summary of changes for version 20171214:
1662
1663
16641) ACPICA kernel-resident subsystem:
1665
1666Fixed a regression in the external (public) AcpiEvaluateObjectTyped
1667interface where the optional "pathname" argument had inadvertently become
1668a required argument returning an error if omitted (NULL pointer
1669argument).
1670
1671Fixed two possible memory leaks related to the recently developed "late
1672resolution" of reference objects within ASL Package Object definitions.
1673
1674Added two recently defined _OSI strings: "Windows 2016" and "Windows
16752017". Mario Limonciello.
1676
1677Implemented and deployed a safer version of the C library function
1678strncpy:  AcpiUtSafeStrncpy. The intent is to at least prevent the
1679creation of unterminated strings as a possible result of a standard
1680strncpy.
1681
1682Cleaned up and restructured the global variable file (acglobal.h). There
1683are many changes, but no functional changes.
1684
1685
16862) iASL Compiler/Disassembler and Tools:
1687
1688iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
1689optional OemData field at the end of the table was incorrectly required
1690for proper compilation. It is now correctly an optional field.
1691
1692ASLTS: The entire suite was converted from standard ASL to the ASL+
1693language, using the ASL-to-ASL+ converter which is integrated into the
1694iASL compiler. A binary compare of all output files has verified the
1695correctness of the conversion.
1696
1697iASL: Fixed the source code build for platforms where "char" is unsigned.
1698This affected the iASL lexer only. Jung-uk Kim.
1699
1700----------------------------------------
170110 November 2017. Summary of changes for version 20171110:
1702
1703
17041) ACPICA kernel-resident subsystem:
1705
1706This release implements full support for ACPI 6.2A:
1707    NFIT - Added a new subtable, "Platform Capabilities Structure"
1708No other changes to ACPICA were required, since ACPI 6.2A is primarily an
1709errata release of the specification.
1710
1711Other ACPI table changes:
1712    IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
1713    PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
1714Linton
1715
1716Utilities: Modified the string/integer conversion functions to use
1717internal 64-bit divide support instead of a native divide. On 32-bit
1718platforms, a 64-bit divide typically requires a library function which
1719may not be present in the build (kernel or otherwise).
1720
1721Implemented a targeted error message for timeouts returned from the
1722Embedded Controller device driver. This is seen frequently enough to
1723special-case an AE_TIME returned from an EC operation region access:
1724    "Timeout from EC hardware or EC device driver"
1725
1726Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
1727runtime error messages have the identical prefix.
1728
1729
17302) iASL Compiler/Disassembler and Tools:
1731
1732AcpiXtract: Fixed a problem with table header detection within the
1733acpidump file. Processing a table could be ended early if a 0x40 (@)
1734appears in the original binary table, resulting in the @ symbol appearing
1735in the decoded ASCII field at the end of the acpidump text line. The
1736symbol caused acpixtract to incorrectly think it had reached the end of
1737the current table and the beginning of a new table.
1738
1739AcpiXtract: Added an option (-f) to ignore some errors during table
1740extraction. This initial implementation ignores non-ASCII and non-
1741printable characters found in the acpidump text file.
1742
1743TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
1744for ASLTS. This feature is used to track memory allocations from
1745different memory caches within the ACPICA code. At the end of an ASLTS
1746run, these memory statistics are recorded and stored in a log file.
1747
1748Debugger (user-space version): Implemented a simple "Background" command.
1749Creates a new thread to execute a control method in the background, while
1750control returns to the debugger prompt to allow additional commands.
1751    Syntax: Background <Namepath> [Arguments]
1752
1753----------------------------------------
175429 September 2017. Summary of changes for version 20170929:
1755
1756
17571) ACPICA kernel-resident subsystem:
1758
1759Redesigned and implemented an improved ASL While() loop timeout
1760mechanism. This mechanism is used to prevent infinite loops in the kernel
1761AML interpreter caused by either non-responsive hardware or incorrect AML
1762code. The new implementation uses AcpiOsGetTimer instead of a simple
1763maximum loop count, and is thus more accurate and constant across
1764different machines. The default timeout is currently 30 seconds, but this
1765may be adjusted later.
1766
1767Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
1768better reflect the new implementation of the loop timeout mechanism.
1769
1770Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
1771and to fix an off-by-one error. Jung-uk Kim.
1772
1773Fixed an EFI build problem by updating the makefiles to for a new file
1774that was added, utstrsuppt.c
1775
1776
17772) iASL Compiler/Disassembler and Tools:
1778
1779Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
1780includes support in the table disassembler, compiler, and template
1781generator.
1782
1783iASL: Added an exception for an illegal type of recursive method
1784invocation. If a method creates named objects, the first recursive call
1785will fail at runtime. This change adds an error detection at compile time
1786to catch the problem up front. Note: Marking such a method as
1787"serialized" will not help with this problem, because the same thread can
1788acquire the method mutex more than once. Example compiler and runtime
1789output:
1790
1791    Method (MTH1)
1792    {
1793        Name (INT1, 1)
1794        MTH1 ()
1795    }
1796
1797    dsdt.asl     22: MTH1 ()
1798    Error    6152 -  ^ Illegal recursive call to method
1799                       that creates named objects (MTH1)
1800
1801Previous runtime exception:
1802    ACPI Error: [INT1] Namespace lookup failure,
1803    AE_ALREADY_EXISTS (20170831/dswload2-465)
1804
1805iASL: Updated support for External() opcodes to improve namespace
1806management and error detection. These changes are related to issues seen
1807with multiple-segment namespace pathnames within External declarations,
1808such as below:
1809
1810    External(\_SB.PCI0.GFX0, DeviceObj)
1811    External(\_SB.PCI0.GFX0.ALSI)
1812
1813iASL: Implemented support for multi-line error/warning messages. This
1814enables more detailed and helpful error messages as below, from the
1815initial deployment for the duplicate names error:
1816
1817    DSDT.iiii   1692:       Device(PEG2) {
1818    Error    6074 -                  ^ Name already exists in scope
1819(PEG2)
1820
1821        Original name creation/declaration below:
1822        DSDT.iiii     93:   External(\_SB.PCI0.PEG2, DeviceObj)
1823
1824AcpiXtract: Added additional flexibility to support differing input hex
1825dump formats. Specifically, hex dumps that contain partial disassembly
1826and/or comments within the ACPI table data definition. There exist some
1827dump utilities seen in the field that create this type of hex dump (such
1828as Simics). For example:
1829
1830    DSDT @ 0xdfffd0c0 (10999 bytes)
1831        Signature DSDT
1832        Length 10999
1833        Revision 1
1834        Checksum 0xf3 (Ok)
1835        OEM_ID BXPC
1836        OEM_table_id BXDSDT
1837        OEM_revision 1
1838        Creator_id 1280593481
1839        Creator_revision 537399345
1840      0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
1841      ...
1842      2af0: 5f 4c 30 46 00 a4 01
1843
1844Test suite: Miscellaneous changes/fixes:
1845    More cleanup and simplification of makefiles
1846    Continue compilation of test cases after a compile failure
1847    Do not perform binary compare unless both files actually exist
1848
1849iASL: Performed some code/module restructuring. Moved all memory
1850allocation functions to new modules. Two new files, aslallocate.c and
1851aslcache.c
1852
1853----------------------------------------
185431 August 2017. Summary of changes for version 20170831:
1855
1856
18571) ACPICA kernel-resident subsystem:
1858
1859Implemented internal support for full 64-bit addresses that appear in all
1860Generic Address Structure (GAS) structures. Previously, only the lower 32
1861bits were used. Affects the use of GAS structures in the FADT and other
1862tables, as well as the GAS structures passed to the AcpiRead and
1863AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
1864
1865Added header support for the PDTT ACPI table (Processor Debug Trigger
1866Table). Full support in the iASL Data Table Compiler and disassembler is
1867forthcoming.
1868
1869
18702) iASL Compiler/Disassembler and Tools:
1871
1872iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
1873Properties Topology Table) where a flag bit was specified in the wrong
1874bit position ("Line Size Valid", bit 6).
1875
1876iASL: Implemented support for Octal integer constants as defined by the
1877ASL language grammar, per the ACPI specification. Any integer constant
1878that starts with a zero is an octal constant. For example,
1879    Store (037777, Local0) /* Octal constant */
1880    Store (0x3FFF, Local0) /* Hex equivalent */
1881    Store (16383,  Local0) /* Decimal equivalent */
1882
1883iASL: Improved overflow detection for 64-bit string conversions during
1884compilation of integer constants. "Overflow" in this case means a string
1885that represents an integer that is too large to fit into a 64-bit value.
1886Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
1887the low-order 32 bits with a warning, as previously implemented. Several
1888new exceptions are defined that indicate a 64-bit overflow, as well as
1889the base (radix) that was used during the attempted conversion. Examples:
1890    Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF        // AE_HEX_OVERFLOW
1891    Local0 = 01111222233334444555566667777     // AE_OCTAL_OVERFLOW
1892    Local0 = 11112222333344445555666677778888  // AE_DECIMAL_OVERFLOW
1893
1894iASL: Added a warning for the case where a ResourceTemplate is declared
1895with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
1896this case, the resulting template is created with a single END_TAG
1897descriptor, which is essentially useless.
1898
1899iASL: Expanded the -vw option (ignore specific warnings/remarks) to
1900include compilation error codes as well.
1901
1902----------------------------------------
190328 July 2017. Summary of changes for version 20170728:
1904
1905
19061) ACPICA kernel-resident subsystem:
1907
1908Fixed a regression seen with small resource descriptors that could cause
1909an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
1910
1911AML interpreter: Implemented a new feature that allows forward references
1912from individual named references within package objects that are
1913contained within blocks of "module-level code". This provides
1914compatibility with other ACPI implementations and supports existing
1915firmware that depends on this feature. Example:
1916
1917    Name (ABCD, 1)
1918    If (ABCD)                       /* An If() at module-level */
1919    {
1920        Name (PKG1, Package()
1921        {
1922            INT1                    /* Forward reference to object INT1
1923*/
1924        })
1925        Name (INT1, 0x1234)
1926    }
1927
1928AML Interpreter: Fixed a problem with the Alias() operator where aliases
1929to some ASL objects were not handled properly. Objects affected are:
1930Mutex, Event, and OperationRegion.
1931
1932AML Debugger: Enhanced to properly handle AML Alias objects. These
1933objects have one level of indirection which was not fully supported by
1934the debugger.
1935
1936Table Manager: Added support to detect and ignore duplicate SSDTs within
1937the XSDT/RSDT. This error in the XSDT has been seen in the field.
1938
1939EFI and EDK2 support:
1940    Enabled /WX flag for MSVC builds
1941    Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
1942    Added local support for 64-bit multiply and shift operations
1943    Added support to compile acpidump.efi on Windows
1944    Added OSL function stubs for interfaces not used under EFI
1945
1946Added additional support for the _DMA predefined name. _DMA returns a
1947buffer containing a resource template. This change add support within the
1948resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
1949resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
1950
1951
19522) iASL Compiler/Disassembler and Tools:
1953
1954iASL: Fixed a problem where the internal input line buffer(s) could
1955overflow if there are very long lines in the input ASL source code file.
1956Implemented buffer management that automatically increases the size of
1957the buffers as necessary.
1958
1959iASL: Added an option (-vx) to "expect" particular remarks, warnings and
1960errors. If the specified exception is not raised during compilation, the
1961compiler emits an error. This is intended to support the ASL test suite,
1962but may be useful in other contexts.
1963
1964iASL: Implemented a new predefined macro, __METHOD__, which returns a
1965string containing the name of the current control method that is being
1966compiled.
1967
1968iASL: Implemented debugger and table compiler support for the SDEI ACPI
1969table (Software Delegated Exception Interface). James Morse
1970<james.morse@arm.com>
1971
1972Unix/Linux makefiles: Added an option to disable compile optimizations.
1973The disable occurs when the NOOPT flag is set to TRUE.
1974theracermaster@gmail.com
1975
1976Acpidump: Added support for multiple DSDT and FACS tables. This can occur
1977when there are different tables for 32-bit versus 64-bit.
1978
1979Enhanced error reporting for the ASL test suite (ASLTS) by removing
1980unnecessary/verbose text, and emit the actual line number where an error
1981has occurred. These changes are intended to improve the usefulness of the
1982test suite.
1983
1984----------------------------------------
198529 June 2017. Summary of changes for version 20170629:
1986
1987
19881) ACPICA kernel-resident subsystem:
1989
1990Tables: Implemented a deferred ACPI table verification. This is useful
1991for operating systems where the tables cannot be verified in the early
1992initialization stage due to early memory mapping limitations on some
1993architectures. Lv Zheng.
1994
1995Tables: Removed the signature validation for dynamically loaded tables.
1996Provides compatibility with other ACPI implementations. Previously, only
1997SSDT tables were allowed, as per the ACPI specification. Now, any table
1998signature can be used via the Load() operator. Lv Zheng.
1999
2000Tables: Fixed several mutex issues that could cause errors during table
2001acquisition. Lv Zheng.
2002
2003Tables: Fixed a problem where an ACPI warning could be generated if a
2004null pointer was passed to the AcpiPutTable interface. Lv Zheng.
2005
2006Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
2007AcpiPutTable interfaces. This applies to the "late stage" table loading
2008when the use of AcpiPutTable is no longer required (since the system
2009memory manager is fully running and available). Lv Zheng.
2010
2011Fixed/Reverted a regression during processing of resource descriptors
2012that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
2013exception in this case.
2014
2015Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
2016I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
2017
2018Interpreter: Fixed a possible fault if an Alias operator with an invalid
2019or duplicate target is encountered during Alias creation in
2020AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
2021
2022Added an option to use designated initializers for function pointers.
2023Kees Cook <keescook@google.com>
2024
2025
20262) iASL Compiler/Disassembler and Tools:
2027
2028iASL: Allow compilation of External declarations with target pathnames
2029that refer to existing named objects within the table. Erik Schmauss.
2030
2031iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
2032FieldUnit name also is declared via External in the same table. Erik
2033Schmauss.
2034
2035iASL: Allow existing scope names within pathnames used in External
2036statements. For example:
2037    External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
2038    Device (ABCD)
2039
2040iASL: IORT ACPI table: Implemented changes required to decode the new
2041Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
2042compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
2043
2044Disassembler: Don't abort disassembly on errors from External()
2045statements. Erik Schmauss.
2046
2047Disassembler: fixed a possible fault when one of the Create*Field
2048operators references a Resource Template. ACPICA Bugzilla 1396.
2049
2050iASL: In the source code, resolved some naming inconsistences across the
2051parsing support. Fixes confusion between "Parse Op" and "Parse Node".
2052Adds a new file, aslparseop.c
2053
2054----------------------------------------
205531 May 2017. Summary of changes for version 20170531:
2056
2057
20580) ACPI 6.2 support:
2059
2060The ACPI specification version 6.2 has been released and is available at
2061http://uefi.org/specifications
2062
2063This version of ACPICA fully supports the ACPI 6.2 specification. Changes
2064are summarized below.
2065
2066New ACPI tables (Table Compiler/Disassembler/Templates):
2067    HMAT (Heterogeneous Memory Attributes Table)
2068    WSMT (Windows SMM Security Mitigation Table)
2069    PPTT (Processor Properties Topology Table)
2070
2071New subtables for existing ACPI tables:
2072    HEST (New subtable, Arch-deferred machine check)
2073    SRAT (New subtable, Arch-specific affinity structure)
2074    PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
2075
2076Simple updates for existing ACPI tables:
2077    BGRT (two new flag bits)
2078    HEST (New bit defined for several subtables, GHES_ASSIST)
2079
2080New Resource Descriptors and Resource macros (Compiler/Disassembler):
2081    PinConfig()
2082    PinFunction()
2083    PinGroup()
2084    PinGroupConfig()
2085    PinGroupFunction()
2086    New type for hardware error notification (section 18.3.2.9)
2087
2088New predefined names/methods (Compiler/Interpreter):
2089    _HMA (Heterogeneous Memory Attributes)
2090    _LSI (Label Storage Information)
2091    _LSR (Label Storage Read)
2092    _LSW (Label Storage Write)
2093
2094ASL grammar/macro changes (Compiler):
2095    For() ASL macro, implemented with the AML while operator
2096    Extensions to Concatenate operator
2097    Support for multiple definition blocks in same ASL file
2098    Clarification for Buffer operator
2099    Allow executable AML code underneath all scopes (Devices, etc.)
2100    Clarification/change for the _OSI return value
2101    ASL grammar update for reference operators
2102    Allow a zero-length string for AML filename in DefinitionBlock
2103
2104Miscellaneous:
2105    New device object notification value
2106    Remove a notify value (0x0C) for graceful shutdown
2107    New UUIDs for processor/cache properties and
2108        physical package property
2109    New _HID, ACPI0014 (Wireless Power Calibration Device)
2110
2111
21121) ACPICA kernel-resident subsystem:
2113
2114Added support to disable ACPI events on hardware-reduced platforms.
2115Eliminates error messages of the form "Could not enable fixed event". Lv
2116Zheng
2117
2118Fixed a problem using Device/Thermal objects with the ObjectType and
2119DerefOf ASL operators. This support had not been fully/properly
2120implemented.
2121
2122Fixed a problem where if a Buffer object containing a resource template
2123was longer than the actual resource template, an error was generated --
2124even though the AML is legal. This case has been seen in the field.
2125
2126Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
2127The values for DUAL_PIC and MULTIPLE_APIC were reversed.
2128
2129Added header file changes for the TPM2 ACPI table. Update to new version
2130of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
2131
2132Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
2133These interfaces are intended to be used only in conjunction with the
2134predefined _DLM method (Device Lock Method). "This object appears in a
2135device scope when AML access to the device must be synchronized with the
2136OS environment".
2137
2138Example Code and Data Size: These are the sizes for the OS-independent
2139acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2140debug version of the code includes the debug output trace mechanism and
2141has a much larger code and data size.
2142
2143  Current Release:
2144    Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
2145    Debug Version:     204.0K Code, 84.3K Data, 288.3K Total
2146  Previous Release:
2147    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
2148    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
2149
2150
21512) iASL Compiler/Disassembler and Tools:
2152
2153iASL: Fixed a problem where an External() declaration could not refer to
2154a Field Unit. Erik Schmauss.
2155
2156Disassembler: Improved support for the Switch/Case operators. This
2157feature will disassemble AML code back to the original Switch operators
2158when possible, instead of an If..Else sequence. David Box
2159
2160iASL and disassembler: Improved the handling of multiple extraneous
2161parentheses for both ASL input and disassembled ASL output.
2162
2163Improved the behavior of the iASL compiler and disassembler to detect
2164improper use of external declarations
2165
2166Disassembler: Now aborts immediately upon detection of an unknown AML
2167opcode. The AML parser has no real way to recover from this, and can
2168result in the creation of an ill-formed parse tree that causes errors
2169later during the disassembly.
2170
2171All tools: Fixed a problem where the Unix application OSL did not handle
2172control-c correctly. For example, a control-c could incorrectly wake the
2173debugger.
2174
2175AcpiExec: Improved the Control-C handling and added a handler for
2176segmentation faults (SIGSEGV). Supports both Windows and Unix-like
2177environments.
2178
2179Reduced the verbosity of the generic unix makefiles. Previously, each
2180compilation displayed the full set of compiler options. This has been
2181eliminated as the options are easily inspected within the makefiles. Each
2182compilation now results in a single line of output.
2183
2184----------------------------------------
218503 March 2017. Summary of changes for version 20170303:
2186
2187
21880) ACPICA licensing:
2189
2190The licensing information at the start of each source code module has
2191been updated. In addition to the Intel license, the dual GPLv2/BSD
2192license has been added for completeness. Now, a single version of the
2193source code should be suitable for all ACPICA customers. This is the
2194major change for this release since it affects all source code modules.
2195
2196
21971) ACPICA kernel-resident subsystem:
2198
2199Fixed two issues with the common asltypes.h header that could cause
2200problems in some environments: (Kim Jung-uk)
2201    Removed typedef for YY_BUFFER_STATE ?
2202       Fixes an error with earlier versions of Flex.
2203    Removed use of FILE typedef (which is only defined in stdio.h)
2204
2205
22062) iASL Compiler/Disassembler and Tools:
2207
2208Disassembler: fixed a regression introduced in 20170224. A fix for a
2209memory leak related to resource descriptor tags (names) could fault when
2210the disassembler was generated with 64-bit compilers.
2211
2212The ASLTS test suite has been updated to implement a new testing
2213architecture. During generation of the suite from ASL source, both the
2214ASL and ASL+ compilers are now validated, as well as the disassembler
2215itself (Erik Schmauss). The architecture executes as follows:
2216
2217    For every ASL source module:
2218        Compile (legacy ASL compilation)
2219        Disassemble the resulting AML to ASL+ source code
2220        Compile the new ASL+ module
2221        Perform a binary compare on the legacy AML and the new ASL+ AML
2222    The ASLTS suite then executes normally using the AML binaries.
2223
2224----------------------------------------
222524 February 2017. Summary of changes for version 20170224:
2226
2227
22281) ACPICA kernel-resident subsystem:
2229
2230Interpreter: Fixed two issues with the control method return value auto-
2231repair feature, where an attempt to double-delete an internal object
2232could result in an ACPICA warning (for _CID repair and others). No fault
2233occurs, however, because the attempted deletion (actually a release to an
2234internal cache) is detected and ignored via object poisoning.
2235
2236Debugger: Fixed an AML interpreter mutex issue during the single stepping
2237of control methods. If certain debugger commands are executed during
2238stepping, a mutex acquire/release error could occur. Lv Zheng.
2239
2240Fixed some issues generating ACPICA with the Intel C compiler by
2241restoring the original behavior and compiler-specific include file in
2242acenv.h. Lv Zheng.
2243
2244Example Code and Data Size: These are the sizes for the OS-independent
2245acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2246debug version of the code includes the debug output trace mechanism and
2247has a much larger code and data size.
2248
2249  Current Release:
2250    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
2251    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
2252  Previous Release:
2253    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2254    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2255
2256
22572) iASL Compiler/Disassembler and Tools:
2258
2259iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
2260tool has been designed, implemented, and included in this release. The
2261key feature of this utility is that the original comments within the
2262input ASL file are preserved during the conversion process, and included
2263within the converted ASL+ file -- thus creating a transparent conversion
2264of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
2265
2266    Usage: iasl -ca <ASL-filename>  // Output is a .dsl file with
2267converted code
2268
2269iASL/Disassembler: Improved the detection and correct disassembly of
2270Switch/Case operators. This feature detects sequences of if/elseif/else
2271operators that originated from ASL Switch/Case/Default operators and
2272emits the original operators. David Box.
2273
2274iASL: Improved the IORT ACPI table support in the following areas. Lv
2275Zheng:
2276    Clear MappingOffset if the MappingCount is zero.
2277    Fix the disassembly of the SMMU GSU interrupt offset.
2278    Update the template file for the IORT table.
2279
2280Disassembler: Enhanced the detection and disassembly of resource
2281template/descriptor within a Buffer object. An EndTag descriptor is now
2282required to have a zero second byte, since all known ASL compilers emit
2283this. This helps eliminate incorrect decisions when a buffer is
2284disassembled (false positives on resource templates).
2285
2286----------------------------------------
228719 January 2017. Summary of changes for version 20170119:
2288
2289
22901) General ACPICA software:
2291
2292Entire source code base: Added the 2017 copyright to all source code
2293legal/licensing module headers and utility/tool signons. This includes
2294the standard Linux dual-license header. This affects virtually every file
2295in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
2296the ACPICA test suite.
2297
2298
22992) iASL Compiler/Disassembler and Tools:
2300
2301iASL: Removed/fixed an inadvertent remark when a method argument
2302containing a reference is used as a target operand within the method (and
2303never used as a simple argument), as in the example below. Jeffrey Hugo.
2304
2305    dsdt.asl   1507:    Store(0x1, Arg0)
2306    Remark   2146 -                ^ Method Argument is never used (Arg0)
2307
2308All tools: Removed the bit width of the compiler that generated the tool
2309from the common signon for all user space tools. This proved to be
2310confusing and unnecessary. This includes similar removal of HARDWARE_NAME
2311from the generic makefiles (Thomas Petazzoni). Example below.
2312
2313    Old:
2314    ASL+ Optimizing Compiler version 20170119-32
2315    ASL+ Optimizing Compiler version 20170119-64
2316
2317    New:
2318    ASL+ Optimizing Compiler version 20170119
2319
2320----------------------------------------
232122 December 2016. Summary of changes for version 20161222:
2322
2323
23241) ACPICA kernel-resident subsystem:
2325
2326AML Debugger: Implemented a new mechanism to simplify and enhance
2327debugger integration into all environments, including kernel debuggers
2328and user-space utilities, as well as remote debug services. This
2329mechanism essentially consists of new OSL interfaces to support debugger
2330initialization/termination, as well as wait/notify interfaces to perform
2331the debugger handshake with the host. Lv Zheng.
2332
2333    New OSL interfaces:
2334        AcpiOsInitializeDebugger (void)
2335        AcpiOsTerminateDebugger (void)
2336        AcpiOsWaitCommandReady (void)
2337        AcpiOsNotifyCommandComplete (void)
2338
2339    New OS services layer:
2340        osgendbg.c -- Example implementation, and used for AcpiExec
2341
2342Update for Generic Address Space (GAS) support: Although the AccessWidth
2343and/or BitOffset fields of the GAS are not often used, this change now
2344fully supports these fields. This affects the internal support for FADT
2345registers, registers in other ACPI data tables, and the AcpiRead and
2346AcpiWrite public interfaces. Lv Zheng.
2347
2348Sleep support: In order to simplify integration of ACPI sleep for the
2349various host operating systems, a new OSL interface has been introduced.
2350AcpiOsEnterSleep allows the host to perform any required operations
2351before the final write to the sleep control register(s) is performed by
2352ACPICA. Lv Zheng.
2353
2354    New OSL interface:
2355        AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
2356
2357    Called from these internal interfaces:
2358        AcpiHwLegacySleep
2359        AcpiHwExtendedSleep
2360
2361EFI support: Added a very small EFI/ACPICA example application. Provides
2362a simple demo for EFI integration, as well as assisting with resolution
2363of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
2364
2365    source/tools/efihello/efihello.c
2366
2367Local C library: Implemented several new functions to enhance ACPICA
2368portability, for environments where these clib functions are not
2369available (such as EFI). Lv Zheng:
2370    putchar
2371    getchar
2372    strpbrk
2373    strtok
2374    memmove
2375
2376Fixed a regression where occasionally a valid resource descriptor was
2377incorrectly detected as invalid at runtime, and a
2378AE_AML_NO_RESOURCE_END_TAG was returned.
2379
2380Fixed a problem with the recently implemented support that enables
2381control method invocations as Target operands to many ASL operators.
2382Warnings of this form: "Needed type [Reference], found [Processor]" were
2383seen at runtime for some method invocations.
2384
2385Example Code and Data Size: These are the sizes for the OS-independent
2386acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2387debug version of the code includes the debug output trace mechanism and
2388has a much larger code and data size.
2389
2390  Current Release:
2391    Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
2392    Debug Version:     201.7K Code, 82.7K Data, 284.4K Total
2393  Previous Release:
2394    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
2395    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
2396
2397
23982) iASL Compiler/Disassembler and Tools:
2399
2400Disassembler: Enhanced output by adding the capability to detect and
2401disassemble ASL Switch/Case statements back to the original ASL source
2402code instead of if/else blocks. David Box.
2403
2404AcpiHelp: Split a large file into separate files based upon
2405functionality/purpose. New files are:
2406    ahaml.c
2407    ahasl.c
2408
2409----------------------------------------
241017 November 2016. Summary of changes for version 20161117:
2411
2412
24131) ACPICA kernel-resident subsystem:
2414
2415Table Manager: Fixed a regression introduced in 20160729, "FADT support
2416cleanup". This was an attempt to remove all references in the source to
2417the FADT version 2, which never was a legal version number. It was
2418skipped because it was an early version of 64-bit support that was
2419eventually abandoned for the current 64-bit support.
2420
2421Interpreter: Fixed a problem where runtime implicit conversion was
2422incorrectly disabled for the ASL operators below. This brings the
2423behavior into compliance with the ACPI specification:
2424    FromBCD
2425    ToBCD
2426    ToDecimalString
2427    ToHexString
2428    ToInteger
2429    ToBuffer
2430
2431Table Manager: Added a new public interface, AcpiPutTable, used to
2432release and free an ACPI table returned by AcpiGetTable and related
2433interfaces. Lv Zheng.
2434
2435Example Code and Data Size: These are the sizes for the OS-independent
2436acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2437debug version of the code includes the debug output trace mechanism and
2438has a much larger code and data size.
2439
2440  Current Release:
2441    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
2442    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
2443  Previous Release:
2444    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
2445    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
2446
2447
24482) iASL Compiler/Disassembler and Tools:
2449
2450Disassembler: Fixed a regression for disassembly of Resource Template.
2451Detection of templates in the AML stream missed some types of templates.
2452
2453iASL: Fixed a problem where an Access Size error was returned for the PCC
2454address space when the AccessSize of the GAS register is greater than a
2455DWORD. Hoan Tran.
2456
2457iASL: Implemented several grammar changes for the operators below. These
2458changes are slated for the next version of the ACPI specification:
2459    RefOf        - Disallow method invocation as an operand
2460    CondRefOf    - Disallow method invocation as an operand
2461    DerefOf      - Disallow operands that use the result from operators
2462that
2463                   do not return a reference (Changed TermArg to
2464SuperName).
2465
2466iASL: Control method invocations are now allowed for Target operands, as
2467per the ACPI specification. Removed error for using a control method
2468invocation as a Target operand.
2469
2470Disassembler: Improved detection of Resource Templates, Unicode, and
2471Strings within Buffer objects. These subtypes do not contain a specific
2472opcode to indicate the originating ASL code, and they must be detected by
2473other means within the disassembler.
2474
2475iASL: Implemented an optimization improvement for 32-bit ACPI tables
2476(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
2477only after 64-bit to 32-bit truncation. A truncation warning message is
2478still emitted, however.
2479
2480AcpiXtract: Implemented handling for both types of line terminators (LF
2481or CR/LF) so that it can accept AcpiDump output files from any system.
2482Peter Wu.
2483
2484AcpiBin: Added two new options for comparing AML files:
2485    -a: compare and display ALL mismatches
2486    -o: start compare at this offset into the second file
2487
2488----------------------------------------
248930 September 2016. Summary of changes for version 20160930:
2490
2491
24921) ACPICA kernel-resident subsystem:
2493
2494Fixed a regression in the internal AcpiTbFindTable function where a non
2495AE_OK exception could inadvertently be returned even if the function did
2496not fail. This problem affects the following operators:
2497    DataTableRegion
2498    LoadTable
2499
2500Fixed a regression in the LoadTable operator where a load to any
2501namespace location other than the root no longer worked properly.
2502
2503Increased the maximum loop count value that will result in the
2504AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
2505prevent infinite loops within the AML interpreter and thus the host OS
2506kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
25071,048,575).
2508
2509Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
2510acpixf.h file. This allows hosts to easily configure the maximum loop
2511count at runtime.
2512
2513Removed an illegal character in the strtoul64.c file. This character
2514caused errors with some C compilers.
2515
2516Example Code and Data Size: These are the sizes for the OS-independent
2517acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2518debug version of the code includes the debug output trace mechanism and
2519has a much larger code and data size.
2520
2521  Current Release:
2522    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
2523    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
2524  Previous Release:
2525    Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
2526    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
2527
2528
25292) iASL Compiler/Disassembler and Tools:
2530
2531Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
2532the simpler ASL ElseIf keyword. During the conversion, a trailing If
2533block could be lost and missing from the disassembled output.
2534
2535iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
2536the missing rule caused a parse error when using the Index operator as an
2537operand to ObjectType. This construct now compiles properly. Example:
2538    ObjectType(PKG1[4]).
2539
2540iASL: Correctly handle unresolved symbols in the hardware map file (-lm
2541option). Previously, unresolved symbols could cause a protection fault.
2542Such symbols are now marked as unresolved in the map file.
2543
2544iASL: Implemented support to allow control method invocations as an
2545operand to the ASL DeRefOf operator. Example:
2546    DeRefOf(MTH1(Local0))
2547
2548Disassembler: Improved support for the ToPLD ASL macro. Detection of a
2549possible _PLD buffer now includes examination of both the normal buffer
2550length (16 or 20) as well as the surrounding AML package length.
2551
2552Disassembler: Fixed a problem with the decoding of complex expressions
2553within the Divide operator for ASL+. For the case where both the quotient
2554and remainder targets are specified, the entire statement cannot be
2555disassembled. Previously, the output incorrectly contained a mix of ASL-
2556and ASL+ operators. This mixed statement causes a syntax error when
2557compiled. Example:
2558    Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly
2559disassembled to:
2560    Divide (INT1 + 6, 128, RSLT, QUOT)
2561
2562iASL/Tools: Added support to process AML and non-AML ACPI tables
2563consistently. For the disassembler and AcpiExec, allow all types of ACPI
2564tables (AML and data tables). For the iASL -e option, allow only AML
2565tables (DSDT/SSDT).
2566
2567----------------------------------------
256831 August 2016. Summary of changes for version 20160831:
2569
2570
25711) ACPICA kernel-resident subsystem:
2572
2573Improve support for the so-called "module-level code", which is defined
2574to be math, logical and control AML opcodes that appear outside of any
2575control method. This change improves the support by adding more opcodes
2576that can be executed in the manner. Some other issues have been solved,
2577and the ASL grammar changes to support such code under all scope
2578operators (Device, etc.) are complete. Lv Zheng.
2579
2580UEFI support: these OSL functions have been implemented. This is an
2581additional step toward supporting the AcpiExec utility natively (with
2582full hardware access) under UEFI. Marcelo Ferreira.
2583    AcpiOsReadPciConfiguration
2584    AcpiOsWritePciConfiguration
2585
2586Fixed a possible mutex error during control method auto-serialization. Lv
2587Zheng.
2588
2589Updated support for the Generic Address Structure by fully implementing
2590all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
2591Zheng.
2592
2593Updated the return value for the internal _OSI method. Instead of
25940xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
2595for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
2596implementations, and will be reflected and clarified in the next version
2597of the ACPI specification.
2598
2599Implemented two new table events that can be passed to an ACPICA table
2600handler. These events are used to indicate a table installation or
2601uninstallation. These events are used in addition to existed table load
2602and unload events. Lv Zheng.
2603
2604Implemented a cleanup for all internal string-to-integer conversions.
2605Consolidate multiple versions of this functionality and limit possible
2606bases to either 10 or 16 to simplify the code. Adds a new file,
2607utstrtoul64.
2608
2609Cleanup the inclusion order of the various compiler-specific headers.
2610This simplifies build configuration management. The compiler-specific
2611headers are now split out from the host-specific headers. Lv Zheng.
2612
2613Example Code and Data Size: These are the sizes for the OS-independent
2614acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2615debug version of the code includes the debug output trace mechanism and
2616has a much larger code and data size.
2617
2618  Current Release:
2619    Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
2620    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
2621
2622
26232) iASL Compiler/Disassembler and Tools:
2624
2625iASL/AcpiExec: Added a command line option to display the build date/time
2626of the tool (-vd). This can be useful to verify that the correct version
2627of the tools are being used.
2628
2629AML Debugger: Implemented a new subcommand ("execute predef") to execute
2630all predefined control methods and names within the current namespace.
2631This can be useful for debugging problems with ACPI tables and the ACPI
2632namespace.
2633
2634----------------------------------------
263529 July 2016. Summary of changes for version 20160729:
2636
2637
26381) ACPICA kernel-resident subsystem:
2639
2640Implemented basic UEFI support for the various ACPICA tools. This
2641includes:
26421) An OSL to implement the various AcpiOs* interfaces on UEFI.
26432) Support to obtain the ACPI tables on UEFI.
26443) Local implementation of required C library functions not available on
2645UEFI.
26464) A front-end (main) function for the tools for UEFI-related
2647initialization.
2648
2649The initial deployment of this support is the AcpiDump utility executing
2650as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
2651Current environments supported are Linux/Unix. MSVC generation is not
2652supported at this time. See the generate/efi/README file for build
2653instructions. Lv Zheng.
2654
2655Future plans include porting the AcpiExec utility to execute natively on
2656the platform with I/O and memory access. This will allow viewing/dump of
2657the platform namespace and native execution of ACPI control methods that
2658access the actual hardware. To fully implement this support, the OSL
2659functions below must be implemented with UEFI interfaces. Any community
2660help in the implementation of these functions would be appreciated:
2661    AcpiOsReadPort
2662    AcpiOsWritePort
2663    AcpiOsReadMemory
2664    AcpiOsWriteMemory
2665    AcpiOsReadPciConfiguration
2666    AcpiOsWritePciConfiguration
2667
2668Restructured and standardized the C library configuration for ACPICA,
2669resulting in the various configuration options below. This includes a
2670global restructuring of the compiler-dependent and platform-dependent
2671include files. These changes may affect the existing platform-dependent
2672configuration files on some hosts. Lv Zheng.
2673
2674The current C library configuration options appear below. For any issues,
2675it may be helpful to examine the existing compiler-dependent and
2676platform-dependent files as examples. Lv Zheng.
2677
26781) Linux kernel:
2679    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2680library.
2681    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
26822) Unix/Windows/BSD applications:
2683    ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
2684library.
2685    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
26863) UEFI applications:
2687    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2688library.
2689    ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
26904) UEFI applications (EDK2/StdLib):
2691    ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
2692    ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
2693
2694
2695AML interpreter: "module-level code" support. Allows for execution of so-
2696called "executable" AML code (math/logical operations, etc.) outside of
2697control methods not just at the module level (top level) but also within
2698any scope declared outside of a control method - Scope{}, Device{},
2699Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
2700
2701Simplified the configuration of the "maximum AML loops" global option by
2702adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
2703modified at runtime.
2704
2705
2706Example Code and Data Size: These are the sizes for the OS-independent
2707acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2708debug version of the code includes the debug output trace mechanism and
2709has a much larger code and data size.
2710
2711  Current Release:
2712    Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
2713    Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
2714
2715
27162) iASL Compiler/Disassembler and Tools:
2717
2718iASL: Add full support for the RASF ACPI table (RAS Features Table).
2719Includes disassembler, data table compiler, and header support.
2720
2721iASL Expand "module-level code" support. Allows for
2722compilation/disassembly of so-called "executable" AML code (math/logical
2723operations, etc.) outside of control methods not just at the module level
2724(top level) but also within any scope declared outside of a control
2725method - Scope{}, Device{}, Processor{}, PowerResource{}, and
2726ThermalZone{}.
2727
2728AcpiDump: Added support for dumping all SSDTs on newer versions of
2729Windows. These tables are now easily available -- SSDTs are not available
2730through the registry on older versions.
2731
2732----------------------------------------
273327 May 2016. Summary of changes for version 20160527:
2734
2735
27361) ACPICA kernel-resident subsystem:
2737
2738Temporarily reverted the new arbitrary bit length/alignment support in
2739AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
2740a number of regressions with the new code that need to be fully resolved
2741and tested before this support can be finally integrated into ACPICA.
2742Apologies for any inconveniences these issues may have caused.
2743
2744The ACPI message macros are not configurable (ACPI_MSG_ERROR,
2745ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
2746and ACPI_MSG_BIOS_WARNING). Lv Zheng.
2747
2748Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
2749option. Adds a new return macro, return_STR. Junk-uk Kim.
2750
2751Example Code and Data Size: These are the sizes for the OS-independent
2752acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2753debug version of the code includes the debug output trace mechanism and
2754has a much larger code and data size.
2755
2756  Current Release:
2757    Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
2758    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2759  Previous Release:
2760    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2761    Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
2762
2763----------------------------------------
276422 April 2016. Summary of changes for version 20160422:
2765
27661) ACPICA kernel-resident subsystem:
2767
2768Fixed a regression in the GAS (generic address structure) arbitrary bit
2769support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
2770and incorrect return values. Lv Zheng. ACPICA BZ 1270.
2771
2772ACPI 6.0: Added support for new/renamed resource macros. One new argument
2773was added to each of these macros, and the original name has been
2774deprecated. The AML disassembler will always disassemble to the new
2775names. Support for the new macros was added to iASL, disassembler,
2776resource manager, and the acpihelp utility. ACPICA BZ 1274.
2777
2778    I2cSerialBus  -> I2cSerialBusV2
2779    SpiSerialBus  -> SpiSerialBusV2
2780    UartSerialBus -> UartSerialBusV2
2781
2782ACPI 6.0: Added support for a new integer field that was appended to the
2783package object returned by the _BIX method. This adds iASL compile-time
2784and AML runtime error checking. ACPICA BZ 1273.
2785
2786ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
2787Subspace Type2" (Headers, Disassembler, and data table compiler).
2788
2789Example Code and Data Size: These are the sizes for the OS-independent
2790acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2791debug version of the code includes the debug output trace mechanism and
2792has a much larger code and data size.
2793
2794  Current Release:
2795    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2796    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2797  Previous Release:
2798    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2799    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2800
2801
28022) iASL Compiler/Disassembler and Tools:
2803
2804iASL: Implemented an ASL grammar extension to allow/enable executable
2805"module-level code" to be created and executed under the various
2806operators that create new scopes. This type of AML code is already
2807supported in all known AML interpreters, and the grammar change will
2808appear in the next version of the ACPI specification. Simplifies the
2809conditional runtime creation of named objects under these object types:
2810
2811    Device
2812    PowerResource
2813    Processor
2814    Scope
2815    ThermalZone
2816
2817iASL: Implemented a new ASL extension, a "For" loop macro to add greater
2818ease-of-use to the ASL language. The syntax is similar to the
2819corresponding C operator, and is implemented with the existing AML While
2820opcode -- thus requiring no changes to existing AML interpreters.
2821
2822    For (Initialize, Predicate, Update) {TermList}
2823
2824Grammar:
2825    ForTerm :=
2826        For (
2827            Initializer    // Nothing | TermArg => ComputationalData
2828            Predicate      // Nothing | TermArg => ComputationalData
2829            Update         // Nothing | TermArg => ComputationalData
2830        ) {TermList}
2831
2832
2833iASL: The _HID/_ADR detection and validation has been enhanced to search
2834under conditionals in order to allow these objects to be conditionally
2835created at runtime.
2836
2837iASL: Fixed several issues with the constant folding feature. The
2838improvement allows better detection and resolution of statements that can
2839be folded at compile time. ACPICA BZ 1266.
2840
2841iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
2842conversion to the ASL ElseIf operator where incorrect ASL code could be
2843generated.
2844
2845iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
2846sometimes an extra (and extraneous) set of parentheses were emitted for
2847some combinations of operators. Although this did not cause any problems
2848with recompilation of the disassembled code, it made the code more
2849difficult to read. David Box. ACPICA BZ 1231.
2850
2851iASL: Changed to ignore the unreferenced detection for predefined names
2852of resource descriptor elements, when the resource descriptor is
2853created/defined within a control method.
2854
2855iASL: Disassembler: Fix a possible fault with externally declared Buffer
2856objects.
2857
2858----------------------------------------
285918 March 2016. Summary of changes for version 20160318:
2860
28611) ACPICA kernel-resident subsystem:
2862
2863Added support for arbitrary bit lengths and bit offsets for registers
2864defined by the Generic Address Structure. Previously, only aligned bit
2865lengths of 8/16/32/64 were supported. This was sufficient for many years,
2866but recently some machines have been seen that require arbitrary bit-
2867level support. ACPICA BZ 1240. Lv Zheng.
2868
2869Fixed an issue where the \_SB._INI method sometimes must be evaluated
2870before any _REG methods are evaluated. Lv Zheng.
2871
2872Implemented several changes related to ACPI table support
2873(Headers/Disassembler/TableCompiler):
2874NFIT: For ACPI 6.1, updated to add some additional new fields and
2875constants.
2876FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
28776).
2878DMAR: Added new constants per the 10/2014 DMAR spec.
2879IORT: Added new subtable per the 10/2015 IORT spec.
2880HEST: For ACPI 6.1, added new constants and new subtable.
2881DBG2: Added new constants per the 12/2015 DBG2 spec.
2882FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
2883ACPICA BZ 1249.
2884ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
2885
2886Updated header support for the DMAR table to match the current version of
2887the related spec.
2888
2889Added extensions to the ASL Concatenate operator to allow any ACPI object
2890to be passed as an operand. Any object other than Integer/String/Buffer
2891simply returns a string containing the object type. This extends the
2892usefulness of the Printf macros. Previously, Concatenate would abort the
2893control method if a non-data object was encountered.
2894
2895ACPICA source code: Deployed the C "const" keyword across the source code
2896where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
2897
2898Example Code and Data Size: These are the sizes for the OS-independent
2899acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2900debug version of the code includes the debug output trace mechanism and
2901has a much larger code and data size.
2902
2903  Current Release:
2904    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2905    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2906  Previous Release:
2907    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2908    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
2909
2910
29112) iASL Compiler/Disassembler and Tools:
2912
2913iASL/Disassembler: Improved the heuristic used to determine the number of
2914arguments for an externally defined control method (a method in another
2915table). Although this is an improvement, there is no deterministic way to
2916"guess" the number of method arguments. Only the ACPI 6.0 External opcode
2917will completely solve this problem as it is deployed (automatically) in
2918newer BIOS code.
2919
2920iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
2921statements that could cause errors when the disassembled file is
2922compiled. ACPICA BZ 1243. David Box.
2923
2924iASL: Fixed a regression caused by the merger of the two versions of the
2925local strtoul64. Because of a dependency on a global variable, strtoul64
2926could return an error for integers greater than a 32-bit value. ACPICA BZ
29271260.
2928
2929iASL: Fixed a regression where a fault could occur for an ASL Return
2930statement if it invokes a control method that is not resolved. ACPICA BZ
29311264.
2932
2933AcpiXtract: Improved input file validation: detection of binary files and
2934non-acpidump text files.
2935
2936----------------------------------------
293712 February 2016. Summary of changes for version 20160212:
2938
29391) ACPICA kernel-resident subsystem:
2940
2941Implemented full support for the ACPI 6.1 specification (released in
2942January). This version of the specification is available at:
2943http://www.uefi.org/specifications
2944
2945Only a relatively small number of changes were required in ACPICA to
2946support ACPI 6.1, in these areas:
2947- New predefined names
2948- New _HID values
2949- A new subtable for HEST
2950- A few other header changes for new values
2951
2952Ensure \_SB_._INI is executed before any _REG methods are executed. There
2953appears to be existing BIOS code that relies on this behavior. Lv Zheng.
2954
2955Reverted a change made in version 20151218 which enabled method
2956invocations to be targets of various ASL operators (SuperName and Target
2957grammar elements). While the new behavior is supported by the ACPI
2958specification, other AML interpreters do not support this behavior and
2959never will. The ACPI specification will be updated for ACPI 6.2 to remove
2960this support. Therefore, the change was reverted to the original ACPICA
2961behavior.
2962
2963ACPICA now supports the GCC 6 compiler.
2964
2965Current Release: (Note: build changes increased sizes)
2966    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2967    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
2968Previous Release:
2969    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2970    Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
2971
2972
29732) iASL Compiler/Disassembler and Tools:
2974
2975Completed full support for the ACPI 6.0 External() AML opcode. The
2976compiler emits an external AML opcode for each ASL External statement.
2977This opcode is used by the disassembler to assist with the disassembly of
2978external control methods by specifying the required number of arguments
2979for the method. AML interpreters do not use this opcode. To ensure that
2980interpreters do not even see the opcode, a block of one or more external
2981opcodes is surrounded by an "If(0)" construct. As this feature becomes
2982commonly deployed in BIOS code, the ability of disassemblers to correctly
2983disassemble AML code will be greatly improved. David Box.
2984
2985iASL: Implemented support for an optional cross-reference output file.
2986The -lx option will create a the cross-reference file with the suffix
2987"xrf". Three different types of cross-reference are created in this file:
2988- List of object references made from within each control method
2989- Invocation (caller) list for each user-defined control method
2990- List of references to each non-method object in the namespace
2991
2992iASL: Method invocations as ASL Target operands are now disallowed and
2993flagged as errors in preparation for ACPI 6.2 (see the description of the
2994problem above).
2995
2996----------------------------------------
29978 January 2016. Summary of changes for version 20160108:
2998
29991) ACPICA kernel-resident subsystem:
3000
3001Updated all ACPICA copyrights and signons to 2016: Added the 2016
3002copyright to all source code module headers and utility/tool signons.
3003This includes the standard Linux dual-license header. This affects
3004virtually every file in the ACPICA core subsystem, iASL compiler, all
3005ACPICA utilities, and the ACPICA test suite.
3006
3007Fixed a regression introduced in version 20151218 concerning the
3008execution of so-called module-level ASL/AML code. Namespace objects
3009created under a module-level If() construct were not properly/fully
3010entered into the namespace and could cause an interpreter fault when
3011accessed.
3012
3013Example Code and Data Size: These are the sizes for the OS-independent
3014acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3015debug version of the code includes the debug output trace mechanism and
3016has a much larger code and data size.
3017
3018Current Release:
3019    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
3020    Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
3021  Previous Release:
3022    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
3023    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
3024
3025
30262) iASL Compiler/Disassembler and Tools:
3027
3028Fixed a problem with the compilation of the GpioIo and GpioInt resource
3029descriptors. The _PIN field name was incorrectly defined to be an array
3030of 32-bit values, but the _PIN values are in fact 16 bits each. This
3031would cause incorrect bit width warnings when using Word (16-bit) fields
3032to access the descriptors.
3033
3034
3035----------------------------------------
303618 December 2015. Summary of changes for version 20151218:
3037
30381) ACPICA kernel-resident subsystem:
3039
3040Implemented per-AML-table execution of "module-level code" as individual
3041ACPI tables are loaded into the namespace during ACPICA initialization.
3042In other words, any module-level code within an AML table is executed
3043immediately after the table is loaded, instead of batched and executed
3044after all of the tables have been loaded. This provides compatibility
3045with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
3046David Box.
3047
3048To fully support the feature above, the default operation region handlers
3049for the SystemMemory, SystemIO, and PCI_Config address spaces are now
3050installed before any ACPI tables are loaded. This enables module-level
3051code to access these address spaces during the table load and module-
3052level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
3053Box.
3054
3055Implemented several changes to the internal _REG support in conjunction
3056with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
3057utilities for the changes above. Although these tools were changed, host
3058operating systems that simply use the default handlers for SystemMemory,
3059SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
3060
3061For example, in the code below, DEV1 is conditionally added to the
3062namespace by the DSDT via module-level code that accesses an operation
3063region. The SSDT references DEV1 via the Scope operator. DEV1 must be
3064created immediately after the DSDT is loaded in order for the SSDT to
3065successfully reference DEV1. Previously, this code would cause an
3066AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
3067fully supported by ACPICA.
3068
3069    DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
3070    {
3071        OperationRegion (OPR1, SystemMemory, 0x400, 32)
3072        Field (OPR1, AnyAcc, NoLock, Preserve)
3073        {
3074            FLD1, 1
3075        }
3076        If (FLD1)
3077        {
3078            Device (\DEV1)
3079            {
3080            }
3081        }
3082    }
3083    DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
3084    {
3085        External (\DEV1, DeviceObj)
3086        Scope (\DEV1)
3087        {
3088        }
3089    }
3090
3091Fixed an AML interpreter problem where control method invocations were
3092not handled correctly when the invocation was itself a SuperName argument
3093to another ASL operator. In these cases, the method was not invoked.
3094ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
3095argument:
3096    Store
3097    Acquire, Wait
3098    CondRefOf, RefOf
3099    Decrement, Increment
3100    Load, Unload
3101    Notify
3102    Signal, Release, Reset
3103    SizeOf
3104
3105Implemented automatic String-to-ObjectReference conversion support for
3106packages returned by predefined names (such as _DEP). A common BIOS error
3107is to add double quotes around an ObjectReference namepath, which turns
3108the reference into an unexpected string object. This support detects the
3109problem and corrects it before the package is returned to the caller that
3110invoked the method. Lv Zheng.
3111
3112Implemented extensions to the Concatenate operator. Concatenate now
3113accepts any type of object, it is not restricted to simply
3114Integer/String/Buffer. For objects other than these 3 basic data types,
3115the argument is treated as a string containing the name of the object
3116type. This expands the utility of Concatenate and the Printf/Fprintf
3117macros. ACPICA BZ 1222.
3118
3119Cleaned up the output of the ASL Debug object. The timer() value is now
3120optional and no longer emitted by default. Also, the basic data types of
3121Integer/String/Buffer are simply emitted as their values, without a data
3122type string -- since the data type is obvious from the output. ACPICA BZ
31231221.
3124
3125Example Code and Data Size: These are the sizes for the OS-independent
3126acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3127debug version of the code includes the debug output trace mechanism and
3128has a much larger code and data size.
3129
3130  Current Release:
3131    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
3132    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
3133  Previous Release:
3134    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
3135    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
3136
3137
31382) iASL Compiler/Disassembler and Tools:
3139
3140iASL: Fixed some issues with the ASL Include() operator. This operator
3141was incorrectly defined in the iASL parser rules, causing a new scope to
3142be opened for the code within the include file. This could lead to
3143several issues, including allowing ASL code that is technically illegal
3144and not supported by AML interpreters. Note, this does not affect the
3145related #include preprocessor operator. ACPICA BZ 1212.
3146
3147iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
3148operator is essentially an ASL macro since there is no AML opcode
3149associated with it. The code emitted by the iASL compiler for ElseIf is
3150an Else opcode followed immediately by an If opcode. The disassembler
3151will now emit an ElseIf if it finds an Else immediately followed by an
3152If. This simplifies the decoded ASL, especially for deeply nested
3153If..Else and large Switch constructs. Thus, the disassembled code more
3154closely follows the original source ASL. ACPICA BZ 1211. Example:
3155
3156    Old disassembly:
3157        Else
3158        {
3159            If (Arg0 == 0x02)
3160            {
3161                Local0 = 0x05
3162            }
3163        }
3164
3165    New disassembly:
3166        ElseIf (Arg0 == 0x02)
3167        {
3168            Local0 = 0x05
3169        }
3170
3171AcpiExec: Added support for the new module level code behavior and the
3172early region installation. This required a small change to the
3173initialization, since AcpiExec must install its own operation region
3174handlers.
3175
3176AcpiExec: Added support to make the debug object timer optional. Default
3177is timer disabled. This cleans up the debug object output -- the timer
3178data is rarely used.
3179
3180AcpiExec: Multiple ACPI tables are now loaded in the order that they
3181appear on the command line. This can be important when there are
3182interdependencies/references between the tables.
3183
3184iASL/Templates. Add support to generate template files with multiple
3185SSDTs within a single output file. Also added ommand line support to
3186specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
31871223, 1225.
3188
3189
3190----------------------------------------
319124 November 2015. Summary of changes for version 20151124:
3192
31931) ACPICA kernel-resident subsystem:
3194
3195Fixed a possible regression for a previous update to FADT handling. The
3196FADT no longer has a fixed table ID, causing some issues with code that
3197was hardwired to a specific ID. Lv Zheng.
3198
3199Fixed a problem where the method auto-serialization could interfere with
3200the current SyncLevel. This change makes the auto-serialization support
3201transparent to the SyncLevel support and management.
3202
3203Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
3204interface is intended for early access to the namespace during the
3205initial namespace device discovery walk. The _SUB method has been seen to
3206access operation regions in some cases, causing errors because the
3207operation regions are not fully initialized.
3208
3209AML Debugger: Fixed some issues with the terminate/quit/exit commands
3210that can cause faults. Lv Zheng.
3211
3212AML Debugger: Add thread ID support so that single-step mode only applies
3213to the AML Debugger thread. This prevents runtime errors within some
3214kernels. Lv Zheng.
3215
3216Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
3217methods that are invoked by this interface are optional, removed warnings
3218emitted for the case where one or more of these methods do not exist.
3219ACPICA BZ 1208, original change by Prarit Bhargava.
3220
3221Made a major pass through the entire ACPICA source code base to
3222standardize formatting that has diverged a bit over time. There are no
3223functional changes, but this will of course cause quite a few code
3224differences from the previous ACPICA release.
3225
3226Example Code and Data Size: These are the sizes for the OS-independent
3227acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3228debug version of the code includes the debug output trace mechanism and
3229has a much larger code and data size.
3230
3231  Current Release:
3232    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
3233    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
3234  Previous Release:
3235    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3236    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
3237
3238
32392) iASL Compiler/Disassembler and Tools:
3240
3241iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
3242definition blocks within a single ASL file and the resulting AML file.
3243Support for this type of file was also added to the various tools that
3244use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
3245example code below shows two definition blocks within the same file:
3246
3247    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
32480x12345678)
3249    {
3250    }
3251    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
3252    {
3253    }
3254
3255iASL: Enhanced typechecking for the Name() operator. All expressions for
3256the value of the named object must be reduced/folded to a single constant
3257at compile time, as per the ACPI specification (the AML definition of
3258Name()).
3259
3260iASL: Fixed some code indentation issues for the -ic and -ia options (C
3261and assembly headers). Now all emitted code correctly begins in column 1.
3262
3263iASL: Added an error message for an attempt to open a Scope() on an
3264object defined in an SSDT. The DSDT is always loaded into the namespace
3265first, so any attempt to open a Scope on an SSDT object will fail at
3266runtime.
3267
3268
3269----------------------------------------
327030 September 2015. Summary of changes for version 20150930:
3271
32721) ACPICA kernel-resident subsystem:
3273
3274Debugger: Implemented several changes and bug fixes to assist support for
3275the in-kernel version of the AML debugger. Lv Zheng.
3276- Fix the "predefined" command for in-kernel debugger.
3277- Do not enter debug command loop for the help and version commands.
3278- Disallow "execute" command during execution/single-step of a method.
3279
3280Interpreter: Updated runtime typechecking for all operators that have
3281target operands. The operand is resolved and validated that it is legal.
3282For example, the target cannot be a non-data object such as a Device,
3283Mutex, ThermalZone, etc., as per the ACPI specification.
3284
3285Debugger: Fixed the double-mutex user I/O handshake to work when local
3286deadlock detection is enabled.
3287
3288Debugger: limited display of method locals and arguments (LocalX and
3289ArgX) to only those that have actually been initialized. This prevents
3290lines of extraneous output.
3291
3292Updated the definition of the NFIT table to correct the bit polarity of
3293one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
3294
3295Example Code and Data Size: These are the sizes for the OS-independent
3296acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3297debug version of the code includes the debug output trace mechanism and
3298has a much larger code and data size.
3299
3300  Current Release:
3301    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3302    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
3303  Previous Release:
3304    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
3305    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
3306
3307
33082) iASL Compiler/Disassembler and Tools:
3309
3310iASL: Improved the compile-time typechecking for operands of many of the
3311ASL operators:
3312
3313-- Added an option to disable compiler operand/operator typechecking (-
3314ot).
3315
3316-- For the following operators, the TermArg operands are now validated
3317when possible to be Integer data objects: BankField, OperationRegion,
3318DataTableRegion, Buffer, and Package.
3319
3320-- Store (Source, Target): Both the source and target operands are
3321resolved and checked that the operands are both legal. For example,
3322neither operand can be a non-data object such as a Device, Mutex,
3323ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
3324operator can be used to store an object to any type of target object.
3325
3326-- Store (Source, Target): If the source is a Package object, the target
3327must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
3328is a Package, the source must also be a Package.
3329
3330-- Store (Source, Target): A warning is issued if the source and target
3331resolve to the identical named object.
3332
3333-- Store (Source, <method invocation>): An error is generated for the
3334target method invocation, as this construct is not supported by the AML
3335interpreter.
3336
3337-- For all ASL math and logic operators, the target operand must be a
3338data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
3339includes the function return value also.
3340
3341-- External declarations are also included in the typechecking where
3342possible. External objects defined using the UnknownObj keyword cannot be
3343typechecked, however.
3344
3345iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
3346operator:
3347- Legacy code: Index(PKG1, 3)
3348- New ASL+ code: PKG1[3]
3349This completes the ACPI 6.0 ASL+ support as it was the only operator not
3350supported.
3351
3352iASL: Fixed the file suffix for the preprocessor output file (.i). Two
3353spaces were inadvertently appended to the filename, causing file access
3354and deletion problems on some systems.
3355
3356ASL Test Suite (ASLTS): Updated the master makefile to generate all
3357possible compiler output files when building the test suite -- thus
3358exercising these features of the compiler. These files are automatically
3359deleted when the test suite exits.
3360
3361
3362----------------------------------------
336318 August 2015. Summary of changes for version 20150818:
3364
33651) ACPICA kernel-resident subsystem:
3366
3367Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
3368Zheng. ACPICA BZ 1186.
3369
3370Completed development to ensure that the ACPICA Disassembler and Debugger
3371are fully standalone components of ACPICA. Removed cross-component
3372dependences. Lv Zheng.
3373
3374The max-number-of-AML-loops is now runtime configurable (previously was
3375compile-time only). This is essentially a loop timeout to force-abort
3376infinite AML loops. ACPCIA BZ 1192.
3377
3378Debugger: Cleanup output to dump ACPI names and namepaths without any
3379trailing underscores. Lv Zheng. ACPICA BZ 1135.
3380
3381Removed unnecessary conditional compilations across the Debugger and
3382Disassembler components where entire modules could be left uncompiled.
3383
3384The aapits test is deprecated and has been removed from the ACPICA git
3385tree. The test has never been completed and has not been maintained, thus
3386becoming rather useless. ACPICA BZ 1015, 794.
3387
3388A batch of small changes to close bugzilla and other reports:
3389- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
3390- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
3391- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
3392- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
3393Moore.
3394- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
3395ACPICA BZ 1184.
3396- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
3397operators.
3398- Debugger: Split debugger initialization/termination interfaces. Lv
3399Zheng.
3400- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
3401identification.
3402- AcpiExec: Add debug message during _REG method phase during table
3403load/init.
3404- AcpiNames: Fix a regression where some output was missing and no longer
3405emitted.
3406- Debugger: General cleanup and simplification. Lv Zheng.
3407- Disassembler: Cleanup use of several global option variables. Lv Zheng.
3408
3409Example Code and Data Size: These are the sizes for the OS-independent
3410acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3411debug version of the code includes the debug output trace mechanism and
3412has a much larger code and data size.
3413
3414  Current Release:
3415    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
3416    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
3417  Previous Release:
3418    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
3419    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
3420
3421
34222) iASL Compiler/Disassembler and Tools:
3423
3424AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
3425were not handled properly and caused load errors. Now, properly invoke
3426and use the ACPICA auto-reallocate mechanism for ACPI table data
3427structures. ACPICA BZ 1188
3428
3429AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
3430BZ 1190.
3431
3432AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
3433AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
3434executed during initialization. ACPICA BZ 1187, 1189.
3435
3436iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
3437that corresponds to each disassembled ASL statement, to simplify
3438debugging. ACPICA BZ 1191.
3439
3440Debugger: Add option to the "objects" command to display a summary of the
3441current namespace objects (Object type and count). This is displayed if
3442the command is entered with no arguments.
3443
3444AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
3445
3446
3447----------------------------------------
344817 July 2015. Summary of changes for version 20150717:
3449
34501) ACPICA kernel-resident subsystem:
3451
3452Improved the partitioning between the Debugger and Disassembler
3453components. This allows the Debugger to be used standalone within kernel
3454code without the Disassembler (which is used for single stepping also).
3455This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
3456
3457Debugger: Implemented a new command to trace the execution of control
3458methods (Trace). This is especially useful for the in-kernel version of
3459the debugger when file I/O may not be available for method trace output.
3460See the ACPICA reference for more information. Lv Zheng.
3461
3462Moved all C library prototypes (used for the local versions of these
3463functions when requested) to a new header, acclib.h
3464Cleaned up the use of non-ANSI C library functions. These functions are
3465implemented locally in ACPICA. Moved all such functions to a common
3466source file, utnonansi.c
3467
3468Debugger: Fixed a problem with the "!!" command (get last command
3469executed) where the debugger could enter an infinite loop and eventually
3470crash.
3471
3472Removed the use of local macros that were used for some of the standard C
3473library functions to automatically cast input parameters. This mostly
3474affected the is* functions where the input parameter is defined to be an
3475int. This required a few modifications to the main ACPICA source code to
3476provide casting for these functions and eliminate possible compiler
3477warnings for these parameters.
3478
3479Across the source code, added additional status/error checking to resolve
3480issues discovered by static source code analysis tools such as Coverity.
3481
3482Example Code and Data Size: These are the sizes for the OS-independent
3483acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3484debug version of the code includes the debug output trace mechanism and
3485has a much larger code and data size.
3486
3487  Current Release:
3488    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
3489    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
3490  Previous Release:
3491    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3492    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
3493
3494
34952) iASL Compiler/Disassembler and Tools:
3496
3497iASL: Fixed a regression where the device map file feature no longer
3498worked properly when used in conjunction with the disassembler. It only
3499worked properly with the compiler itself.
3500
3501iASL: Implemented a new warning for method LocalX variables that are set
3502but never used (similar to a C compiler such as gcc). This also applies
3503to ArgX variables that are not defined by the parent method, and are
3504instead (legally) used as local variables.
3505
3506iASL/Preprocessor: Finished the pass-through of line numbers from the
3507preprocessor to the compiler. This ensures that compiler errors/warnings
3508have the correct original line numbers and filenames, regardless of any
3509#include files.
3510
3511iASL/Preprocessor: Fixed a couple of issues with comment handling and the
3512pass-through of comments to the preprocessor output file (which becomes
3513the compiler input file). Also fixed a problem with // comments that
3514appear after a math expression.
3515
3516iASL: Added support for the TCPA server table to the table compiler and
3517template generator. (The client table was already previously supported)
3518
3519iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
3520identify the iASL compiler.
3521
3522Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
3523multiple times. The new names are ACPI_SIGN_NEGATIVE and
3524ACPI_SIGN_POSITIVE.
3525
3526AcpiHelp: Update to expand help messages for the iASL preprocessor
3527directives.
3528
3529
3530----------------------------------------
353119 June 2015. Summary of changes for version 20150619:
3532
3533Two regressions in version 20150616 have been addressed:
3534
3535Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
3536etc.) This update changes ACPICA to only use the standard headers for
3537functions, or the prototypes for the local versions of the C library
3538functions. Across the source code, this required some additional casts
3539for some Clib invocations for portability. Moved all local prototypes to
3540a new file, acclib.h
3541
3542Fixes several problems with recent changes to the handling of the FACS
3543table that could cause some systems not to boot.
3544
3545
3546----------------------------------------
354716 June 2015. Summary of changes for version 20150616:
3548
3549
35501) ACPICA kernel-resident subsystem:
3551
3552Across the entire ACPICA source code base, the various macros for the C
3553library functions (such as ACPI_STRLEN, etc.) have been removed and
3554replaced by the standard C library names (strlen, etc.) The original
3555purpose for these macros is no longer applicable. This simplification
3556reduces the number of macros used in the ACPICA source code
3557significantly, improving readability and maintainability.
3558
3559Implemented support for a new ACPI table, the OSDT. This table, the
3560"override" SDT, can be loaded directly by the host OS at boot time. It
3561enables the replacement of existing namespace objects that were installed
3562via the DSDT and/or SSDTs. The primary purpose for this is to replace
3563buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
3564for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
3565Moore.
3566
3567Added support for systems with (improperly) two FACS tables -- a "32-bit"
3568table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
3569X field). This change will support both automatically. There continues to
3570be systems found with this issue. This support requires a change to the
3571AcpiSetFirmwareWakingVector interface. Also, a public global variable has
3572been added to allow the host to select which FACS is desired
3573(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
3574details Lv Zheng.
3575
3576Added a new feature to allow for systems that do not contain an FACS.
3577Although this is already supported on hardware-reduced platforms, the
3578feature has been extended for all platforms. The reasoning is that we do
3579not want to abort the entire ACPICA initialization just because the
3580system is seriously buggy and has no FACS.
3581
3582Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
3583not correctly transcribed from the ACPI specification in ACPICA version
358420150515.
3585
3586Implemented support for the _CLS object in the AcpiGetObjectInfo external
3587interface.
3588
3589Updated the definitions of the TCPA and TPM2 ACPI tables to the more
3590recent TCG ACPI Specification, December 14, 2014. Table disassembler and
3591compiler also updated. Note: The TCPA "server" table is not supported by
3592the disassembler/table-compiler at this time.
3593
3594ACPI 6.0: Added definitions for the new GIC version field in the MADT.
3595
3596Example Code and Data Size: These are the sizes for the OS-independent
3597acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3598debug version of the code includes the debug output trace mechanism and
3599has a much larger code and data size.
3600
3601  Current Release:
3602    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3603    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
3604  Previous Release:
3605    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
3606    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
3607
3608
36092) iASL Compiler/Disassembler and Tools:
3610
3611Disassembler: Fixed a problem with the new symbolic operator disassembler
3612where incorrect ASL code could be emitted in some cases for the "non-
3613commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
3614ShiftRight. The actual problem cases seem to be rather unusual in common
3615ASL code, however. David Box.
3616
3617Modified the linux version of acpidump to obtain ACPI tables from not
3618just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
3619Zheng.
3620
3621iASL: Fixed a problem where the user preprocessor output file (.i)
3622contained extra data that was not expected. The compiler was using this
3623file as a temporary file and passed through #line directives in order to
3624keep compiler error messages in sync with the input file and line number
3625across multiple include files. The (.i) is no longer a temporary file as
3626the compiler uses a new, different file for the original purpose.
3627
3628iASL: Fixed a problem where comments within the original ASL source code
3629file were not passed through to the preprocessor output file, nor any
3630listing files.
3631
3632iASL: Fixed some issues for the handling of the "#include" preprocessor
3633directive and the similar (but not the same) "Include" ASL operator.
3634
3635iASL: Add support for the new OSDT in both the disassembler and compiler.
3636
3637iASL: Fixed a problem with the constant folding support where a Buffer
3638object could be incorrectly generated (incorrectly formed) during a
3639conversion to a Store() operator.
3640
3641AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
3642description text for the _REV predefined name. _REV now permanently
3643returns 2, as per the ACPI 6.0 specification.
3644
3645Debugger: Enhanced the output of the Debug ASL object for references
3646produced by the Index operator. For Buffers and strings, only output the
3647actual byte pointed to by the index. For packages, only print the single
3648package element decoded by the index. Previously, the entire
3649buffer/string/package was emitted.
3650
3651iASL/Table-compiler: Fixed a regression where the "generic" data types
3652were no longer recognized, causing errors.
3653
3654
3655----------------------------------------
365615 May 2015. Summary of changes for version 20150515:
3657
3658This release implements most of ACPI 6.0 as described below.
3659
36601) ACPICA kernel-resident subsystem:
3661
3662Implemented runtime argument checking and return value checking for all
3663new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
3664_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
3665
3666Example Code and Data Size: These are the sizes for the OS-independent
3667acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3668debug version of the code includes the debug output trace mechanism and
3669has a much larger code and data size.
3670
3671  Current Release:
3672    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
3673    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
3674  Previous Release:
3675    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
3676    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
3677
3678
36792) iASL Compiler/Disassembler and Tools:
3680
3681iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
3682names (argument count validation and return value typechecking.)
3683
3684iASL disassembler and table compiler: implemented support for all new
3685ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
3686
3687iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
3688tables: FADT, MADT.
3689
3690iASL preprocessor: Added a new directive to enable inclusion of binary
3691blobs into ASL code. The new directive is #includebuffer. It takes a
3692binary file as input and emits a named ascii buffer object into the ASL
3693code.
3694
3695AcpiHelp: Added support for all new ACPI 6.0 predefined names.
3696
3697AcpiHelp: Added a new option, -d, to display all iASL preprocessor
3698directives.
3699
3700AcpiHelp: Added a new option, -t, to display all known/supported ACPI
3701tables.
3702
3703
3704----------------------------------------
370510 April 2015. Summary of changes for version 20150410:
3706
3707Reverted a change introduced in version 20150408 that caused
3708a regression in the disassembler where incorrect operator
3709symbols could be emitted.
3710
3711
3712----------------------------------------
371308 April 2015. Summary of changes for version 20150408:
3714
3715
37161) ACPICA kernel-resident subsystem:
3717
3718Permanently set the return value for the _REV predefined name. It now
3719returns 2 (was 5). This matches other ACPI implementations. _REV will be
3720deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
3721for ACPI 2.0 and later. It should never be used to differentiate or
3722identify operating systems.
3723
3724Added the "Windows 2015" string to the _OSI support. ACPICA will now
3725return TRUE to a query with this string.
3726
3727Fixed several issues with the local version of the printf function.
3728
3729Added the C99 compiler option (-std=c99) to the Unix makefiles.
3730
3731  Current Release:
3732    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
3733    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
3734  Previous Release:
3735    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3736    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3737
3738
37392) iASL Compiler/Disassembler and Tools:
3740
3741iASL: Implemented an enhancement to the constant folding feature to
3742transform the parse tree to a simple Store operation whenever possible:
3743    Add (2, 3, X) ==> is converted to: Store (5, X)
3744    X = 2 + 3     ==> is converted to: Store (5, X)
3745
3746Updated support for the SLIC table (Software Licensing Description Table)
3747in both the Data Table compiler and the disassembler. The SLIC table
3748support now conforms to "Microsoft Software Licensing Tables (SLIC and
3749MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
3750following the ACPI header is now defined to be "Proprietary Data", and as
3751such, can only be entered or displayed as a hex data block.
3752
3753Implemented full support for the MSDM table as described in the document
3754above. Note: The format of MSDM is similar to SLIC. Any MSDM data
3755following the ACPI header is defined to be "Proprietary Data", and can
3756only be entered or displayed as a hex data block.
3757
3758Implemented the -Pn option for the iASL Table Compiler (was only
3759implemented for the ASL compiler). This option disables the iASL
3760preprocessor.
3761
3762Disassembler: For disassembly of Data Tables, added a comment field
3763around the Ascii equivalent data that is emitted as part of the "Raw
3764Table Data" block. This prevents the iASL Preprocessor from possible
3765confusion if/when the table is compiled.
3766
3767Disassembler: Added an option (-df) to force the disassembler to assume
3768that the table being disassembled contains valid AML. This feature is
3769useful for disassembling AML files that contain ACPI signatures other
3770than DSDT or SSDT (such as OEMx or other signatures).
3771
3772Changes for the EFI version of the tools:
37731) Fixed a build error/issue
37742) Fixed a cast warning
3775
3776iASL: Fixed a path issue with the __FILE__ operator by making the
3777directory prefix optional within the internal SplitInputFilename
3778function.
3779
3780Debugger: Removed some unused global variables.
3781
3782Tests: Updated the makefile for proper generation of the AAPITS suite.
3783
3784
3785----------------------------------------
378604 February 2015. Summary of changes for version 20150204:
3787
3788ACPICA kernel-resident subsystem:
3789
3790Updated all ACPICA copyrights and signons to 2014. Added the 2014
3791copyright to all module headers and signons, including the standard Linux
3792header. This affects virtually every file in the ACPICA core subsystem,
3793iASL compiler, all ACPICA utilities, and the test suites.
3794
3795Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
3796A raw gpe handling mechanism was created to allow better handling of GPE
3797storms that aren't easily managed by the normal handler. The raw handler
3798allows disabling/renabling of the GPE so that interrupt storms can be
3799avoided in cases where events cannot be timely serviced. In this
3800scenario, handlers should use the AcpiSetGpe() API to disable/enable the
3801GPE. This API will leave the reference counts undisturbed, thereby
3802preventing unintentional clearing of the GPE when the intent in only to
3803temporarily disable it. Raw handlers allow enabling and disabling of a
3804GPE by removing GPE register locking. As such, raw handlers much provide
3805their own locks while using GPE API's to protect access to GPE data
3806structures.
3807Lv Zheng
3808
3809Events: Always modify GPE registers under the GPE lock.
3810Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
3811values. Reported as bug by joe.liu@apple.com.
3812
3813Unix makefiles: Separate option to disable optimizations and
3814_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
3815NOOPT disable option and creates a separate flag (NOFORTIFY) for this
3816purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
3817errors when building ACPICA. This allows disabling the option without
3818also having to disable optimazations.
3819David Box
3820
3821  Current Release:
3822    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3823    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
3824
3825--
3826--------------------------------------
382707 November 2014. Summary of changes for version 20141107:
3828
3829This release is available at https://acpica.org/downloads
3830
3831This release introduces and implements language extensions to ASL that
3832provide support for symbolic ("C-style") operators and expressions. These
3833language extensions are known collectively as ASL+.
3834
3835
38361) iASL Compiler/Disassembler and Tools:
3837
3838Disassembler: Fixed a problem with disassembly of the UartSerialBus
3839macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
3840Box.
3841
3842Disassembler: Fixed the Unicode macro support to add escape sequences.
3843All non-printable ASCII values are emitted as escape sequences, as well
3844as the standard escapes for quote and backslash. Ensures that the
3845disassembled macro can be correctly recompiled.
3846
3847iASL: Added Printf/Fprintf macros for formatted output. These macros are
3848translated to existing AML Concatenate and Store operations. Printf
3849writes to the ASL Debug object. Fprintf allows the specification of an
3850ASL name as the target. Only a single format specifier is required, %o,
3851since the AML interpreter dynamically converts objects to the required
3852type. David E. Box.
3853
3854    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3855                 (Concatenate (Concatenate (Concatenate ("", Arg0),
3856                 ": Unexpected value for "), Arg1), ", "), Arg2),
3857                 " at line "), Arg3), Debug)
3858
3859    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
3860                 Arg0, Arg1, Arg2, Arg3)
3861
3862    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3863                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
3864
3865    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
3866
3867iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
3868ASL parse tree before the AML code is generated. This allows blocks of
3869ASL code to be removed in order to help locate and identify problem
3870devices and/or code. David E. Box.
3871
3872AcpiExec: Added support (-fi) for an optional namespace object
3873initialization file. This file specifies initial values for namespace
3874objects as necessary for debugging and testing different ASL code paths
3875that may be taken as a result of BIOS options.
3876
3877
38782) Overview of symbolic operator support for ASL (ASL+)
3879-------------------------------------------------------
3880
3881As an extension to the ASL language, iASL implements support for symbolic
3882(C-style) operators for math and logical expressions. This can greatly
3883simplify ASL code as well as improve both readability and
3884maintainability. These language extensions can exist concurrently with
3885all legacy ASL code and expressions.
3886
3887The symbolic extensions are 100% compatible with existing AML
3888interpreters, since no new AML opcodes are created. To implement the
3889extensions, the iASL compiler transforms the symbolic expressions into
3890the legacy ASL/AML equivalents at compile time.
3891
3892Full symbolic expressions are supported, along with the standard C
3893precedence and associativity rules.
3894
3895Full disassembler support for the symbolic expressions is provided, and
3896creates an automatic migration path for existing ASL code to ASL+ code
3897via the disassembly process. By default, the disassembler now emits ASL+
3898code with symbolic expressions. An option (-dl) is provided to force the
3899disassembler to emit legacy ASL code if desired.
3900
3901Below is the complete list of the currently supported symbolic operators
3902with examples. See the iASL User Guide for additional information.
3903
3904
3905ASL+ Syntax      Legacy ASL Equivalent
3906-----------      ---------------------
3907
3908    // Math operators
3909
3910Z = X + Y        Add (X, Y, Z)
3911Z = X - Y        Subtract (X, Y, Z)
3912Z = X * Y        Multiply (X, Y, Z)
3913Z = X / Y        Divide (X, Y, , Z)
3914Z = X % Y        Mod (X, Y, Z)
3915Z = X << Y       ShiftLeft (X, Y, Z)
3916Z = X >> Y       ShiftRight (X, Y, Z)
3917Z = X & Y        And (X, Y, Z)
3918Z = X | Y        Or (X, Y, Z)
3919Z = X ^ Y        Xor (X, Y, Z)
3920Z = ~X           Not (X, Z)
3921X++              Increment (X)
3922X--              Decrement (X)
3923
3924    // Logical operators
3925
3926(X == Y)         LEqual (X, Y)
3927(X != Y)         LNotEqual (X, Y)
3928(X < Y)          LLess (X, Y)
3929(X > Y)          LGreater (X, Y)
3930(X <= Y)         LLessEqual (X, Y)
3931(X >= Y)         LGreaterEqual (X, Y)
3932(X && Y)         LAnd (X, Y)
3933(X || Y)         LOr (X, Y)
3934(!X)             LNot (X)
3935
3936    // Assignment and compound assignment operations
3937
3938X = Y           Store (Y, X)
3939X += Y          Add (X, Y, X)
3940X -= Y          Subtract (X, Y, X)
3941X *= Y          Multiply (X, Y, X)
3942X /= Y          Divide (X, Y, , X)
3943X %= Y          Mod (X, Y, X)
3944X <<= Y         ShiftLeft (X, Y, X)
3945X >>= Y         ShiftRight (X, Y, X)
3946X &= Y          And (X, Y, X)
3947X |= Y          Or (X, Y, X)
3948X ^= Y          Xor (X, Y, X)
3949
3950
39513) ASL+ Examples:
3952-----------------
3953
3954Legacy ASL:
3955        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
3956            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
39570x03FB),
3958            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
3959        {
3960            And (MEMB, 0xFFFFFFF0, SRMB)
3961            Store (MEMB, Local2)
3962            Store (PDBM, Local1)
3963            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
3964            Store (SRMB, MEMB)
3965            Or (PDBM, 0x02, PDBM)
3966        }
3967
3968ASL+ version:
3969        If (((R510 & 0x03FB) == 0x02E0) ||
3970            ((R520 & 0x03FB) == 0x02E0) ||
3971            ((R530 & 0x03FB) == 0x02E0) ||
3972            ((R540 & 0x03FB) == 0x02E0))
3973        {
3974            SRMB = (MEMB & 0xFFFFFFF0)
3975            Local2 = MEMB
3976            Local1 = PDBM
3977            PDBM &= 0xFFFFFFFFFFFFFFF9
3978            MEMB = SRMB
3979            PDBM |= 0x02
3980        }
3981
3982Legacy ASL:
3983        Store (0x1234, Local1)
3984        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
3985        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
3986        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
3987        Store (Index (PKG1, 0x03), Local6)
3988        Store (Add (Local3, Local2), Debug)
3989        Add (Local1, 0x0F, Local2)
3990        Add (Local1, Multiply (Local2, Local3), Local2)
3991        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
3992
3993ASL+ version:
3994        Local1 = 0x1234
3995        Local3 = (((Local1 + TEST) + 0x20) * Local2)
3996        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
3997        Local3 = (Local1 + (TEST + (0x20 * Local2)))
3998        Local6 = Index (PKG1, 0x03)
3999        Debug = (Local3 + Local2)
4000        Local2 = (Local1 + 0x0F)
4001        Local2 = (Local1 + (Local2 * Local3))
4002        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
4003
4004
4005----------------------------------------
400626 September 2014. Summary of changes for version 20140926:
4007
40081) ACPICA kernel-resident subsystem:
4009
4010Updated the GPIO operation region handler interface (GeneralPurposeIo).
4011In order to support GPIO Connection objects with multiple pins, along
4012with the related Field objects, the following changes to the interface
4013have been made: The Address is now defined to be the offset in bits of
4014the field unit from the previous invocation of a Connection. It can be
4015viewed as a "Pin Number Index" into the connection resource descriptor.
4016The BitWidth is the exact bit width of the field. It is usually one bit,
4017but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
4018additional information and examples.
4019
4020GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
4021corresponding _Lxx/_Exx methods are disabled (they may have been enabled
4022by the firmware), so that they cannot fire until they are enabled via
4023AcpiUpdateAllGpes. Rafael J. Wysocki.
4024
4025Added a new return flag for the Event/GPE status interfaces --
4026AcpiGetEventStatus and AcpiGetGpeStatus. The new
4027ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
4028GPE currently has a handler associated with it, and can thus actually
4029affect the system. Lv Zheng.
4030
4031Example Code and Data Size: These are the sizes for the OS-independent
4032acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4033debug version of the code includes the debug output trace mechanism and
4034has a much larger code and data size.
4035
4036  Current Release:
4037    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
4038    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
4039  Previous Release:
4040    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
4041    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
4042
40432) iASL Compiler/Disassembler and Tools:
4044
4045iASL: Fixed a memory allocation/free regression introduced in 20140828
4046that could cause the compiler to crash. This was introduced inadvertently
4047during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
40481113.
4049
4050iASL: Removed two error messages that have been found to create false
4051positives, until they can be fixed and fully validated (ACPICA BZ 1112):
40521) Illegal forward reference within a method
40532) Illegal reference across two methods
4054
4055iASL: Implemented a new option (-lm) to create a hardware mapping file
4056that summarizes all GPIO, I2C, SPI, and UART connections. This option
4057works for both the compiler and disassembler. See the iASL compiler user
4058guide for additional information and examples (section 6.4.6).
4059
4060AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
4061version 2. This corrects the AE_BAD_HEADER exception seen on systems with
4062a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
4063
4064AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
4065unless STDIN is actually a terminal. Assists with batch-mode processing.
4066ACPICA BZ 1114.
4067
4068Disassembler/AcpiHelp: Added another large group of recognized _HID
4069values.
4070
4071
4072----------------------------------------
407328 August 2014. Summary of changes for version 20140828:
4074
40751) ACPICA kernel-resident subsystem:
4076
4077Fixed a problem related to the internal use of the Timer() operator where
4078a 64-bit divide could cause an attempted link to a double-precision math
4079library. This divide is not actually necessary, so the code was
4080restructured to eliminate it. Lv Zheng.
4081
4082ACPI 5.1: Added support for the runtime validation of the _DSD package
4083(similar to the iASL support).
4084
4085ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
4086SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
4087
4088Example Code and Data Size: These are the sizes for the OS-independent
4089acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4090debug version of the code includes the debug output trace mechanism and
4091has a much larger code and data size.
4092
4093  Current Release:
4094    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
4095    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
4096  Previous Release:
4097    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
4098    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
4099
41002) iASL Compiler/Disassembler and Tools:
4101
4102AcpiExec: Fixed a problem on unix systems where the original terminal
4103state was not always properly restored upon exit. Seen when using the -v
4104option. ACPICA BZ 1104.
4105
4106iASL: Fixed a problem with the validation of the ranges/length within the
4107Memory24 resource descriptor. There was a boundary condition when the
4108range was equal to the (length -1) caused by the fact that these values
4109are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
4110
4111Disassembler: Fixed a problem with the GpioInt descriptor interrupt
4112polarity
4113flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
4114is
4115now supported properly.
4116
4117ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
4118in the disassembler, data table compiler, and table template generator.
4119
4120iASL: Added a requirement for Device() objects that one of either a _HID
4121or _ADR must exist within the scope of a Device, as per the ACPI
4122specification. Remove a similar requirement that was incorrectly in place
4123for the _DSD object.
4124
4125iASL: Added error detection for illegal named references within control
4126methods that would cause runtime failures. Now trapped as errors are: 1)
4127References to objects within a non-parent control method. 2) Forward
4128references (within a method) -- for control methods, AML interpreters use
4129a one-pass parse of control methods. ACPICA BZ 1008.
4130
4131iASL: Added error checking for dependencies related to the _PSx power
4132methods. ACPICA BZ 1029.
41331) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
4134_PS3.
41352) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
4136scope.
4137
4138iASL and table compiler: Cleanup miscellaneous memory leaks by fully
4139deploying the existing object and string caches and adding new caches for
4140the table compiler.
4141
4142iASL: Split the huge parser source file into multiple subfiles to improve
4143manageability. Generation now requires the M4 macro preprocessor, which
4144is part of the Bison distribution on both unix and windows platforms.
4145
4146AcpiSrc: Fixed and removed all extraneous warnings generated during
4147entire ACPICA source code scan and/or conversion.
4148
4149
4150----------------------------------------
4151
415224 July 2014. Summary of changes for version 20140724:
4153
4154The ACPI 5.1 specification has been released and is available at:
4155http://uefi.org/specs/access
4156
4157
41580) ACPI 5.1 support in ACPICA:
4159
4160ACPI 5.1 is fully supported in ACPICA as of this release.
4161
4162New predefined names. Support includes iASL and runtime ACPICA
4163validation.
4164    _CCA (Cache Coherency Attribute).
4165    _DSD (Device-Specific Data). David Box.
4166
4167Modifications to existing ACPI tables. Support includes headers, iASL
4168Data Table compiler, disassembler, and the template generator.
4169    FADT - New fields and flags. Graeme Gregory.
4170    GTDT - One new subtable and new fields. Tomasz Nowicki.
4171    MADT - Two new subtables. Tomasz Nowicki.
4172    PCCT - One new subtable.
4173
4174Miscellaneous.
4175    New notification type for System Resource Affinity change events.
4176
4177
41781) ACPICA kernel-resident subsystem:
4179
4180Fixed a regression introduced in 20140627 where a fault can happen during
4181the deletion of Alias AML namespace objects. The problem affected both
4182the core ACPICA and the ACPICA tools including iASL and AcpiExec.
4183
4184Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
4185simple mechanism to enable wake GPEs that have no associated handler or
4186control method. Rafael Wysocki.
4187
4188Updated the AcpiEnableGpe interface to disallow the enable if there is no
4189handler or control method associated with the particular GPE. This will
4190help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
4191
4192Updated GPE handling and dispatch by disabling the GPE before clearing
4193the status bit for edge-triggered GPEs. Lv Zheng.
4194
4195Added Timer() support to the AML Debug object. The current timer value is
4196now displayed with each invocation of (Store to) the debug object to
4197enable simple generation of execution times for AML code (method
4198execution for example.) ACPICA BZ 1093.
4199
4200Example Code and Data Size: These are the sizes for the OS-independent
4201acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4202debug version of the code includes the debug output trace mechanism and
4203has a much larger code and data size.
4204
4205  Current Release:
4206    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
4207    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
4208  Previous Release:
4209    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
4210    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
4211
4212
42132) iASL Compiler/Disassembler and Tools:
4214
4215Fixed an issue with the recently added local printf implementation,
4216concerning width/precision specifiers that could cause incorrect output.
4217Lv Zheng. ACPICA BZ 1094.
4218
4219Disassembler: Added support to detect buffers that contain UUIDs and
4220disassemble them to an invocation of the ToUUID operator. Also emit
4221commented descriptions of known ACPI-related UUIDs.
4222
4223AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
4224-u. Adds three new files.
4225
4226iASL: Update table compiler and disassembler for DMAR table changes that
4227were introduced in September 2013. With assistance by David Woodhouse.
4228
4229----------------------------------------
423027 June 2014. Summary of changes for version 20140627:
4231
42321) ACPICA kernel-resident subsystem:
4233
4234Formatted Output: Implemented local versions of standard formatted output
4235utilities such as printf, etc. Over time, it has been discovered that
4236there are in fact many portability issues with printf, and the addition
4237of this feature will fix/prevent these issues once and for all. Some
4238known issues are summarized below:
4239
42401) Output of 64-bit values is not portable. For example, UINT64 is %ull
4241for the Linux kernel and is %uI64 for some MSVC versions.
42422) Invoking printf consistently in a manner that is portable across both
424332-bit and 64-bit platforms is difficult at best in many situations.
42443) The output format for pointers varies from system to system (leading
4245zeros especially), and leads to inconsistent output from ACPICA across
4246platforms.
42474) Certain platform-specific printf formats may conflict with ACPICA use.
42485) If there is no local C library available, ACPICA now has local support
4249for printf.
4250
4251-- To address these printf issues in a complete manner, ACPICA now
4252directly implements a small subset of printf format specifiers, only
4253those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
4254
4255Implemented support for ACPICA generation within the EFI environment.
4256Initially, the AcpiDump utility is supported in the UEFI shell
4257environment. Lv Zheng.
4258
4259Added a new external interface, AcpiLogError, to improve ACPICA
4260portability. This allows the host to redirect error messages from the
4261ACPICA utilities. Lv Zheng.
4262
4263Added and deployed new OSL file I/O interfaces to improve ACPICA
4264portability:
4265  AcpiOsOpenFile
4266  AcpiOsCloseFile
4267  AcpiOsReadFile
4268  AcpiOsWriteFile
4269  AcpiOsGetFileOffset
4270  AcpiOsSetFileOffset
4271There are C library implementations of these functions in the new file
4272service_layers/oslibcfs.c -- however, the functions can be implemented by
4273the local host in any way necessary. Lv Zheng.
4274
4275Implemented a mechanism to disable/enable ACPI table checksum validation
4276at runtime. This can be useful when loading tables very early during OS
4277initialization when it may not be possible to map the entire table in
4278order to compute the checksum. Lv Zheng.
4279
4280Fixed a buffer allocation issue for the Generic Serial Bus support.
4281Originally, a fixed buffer length was used. This change allows for
4282variable-length buffers based upon the protocol indicated by the field
4283access attributes. Reported by Lan Tianyu. Lv Zheng.
4284
4285Fixed a problem where an object detached from a namespace node was not
4286properly terminated/cleared and could cause a circular list problem if
4287reattached. ACPICA BZ 1063. David Box.
4288
4289Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
4290
4291Fixed a possible memory leak in an error return path within the function
4292AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
4293
4294Example Code and Data Size: These are the sizes for the OS-independent
4295acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4296debug version of the code includes the debug output trace mechanism and
4297has a much larger code and data size.
4298
4299  Current Release:
4300    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
4301    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
4302  Previous Release:
4303    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
4304    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
4305
4306
43072) iASL Compiler/Disassembler and Tools:
4308
4309Disassembler: Add dump of ASCII equivalent text within a comment at the
4310end of each line of the output for the Buffer() ASL operator.
4311
4312AcpiDump: Miscellaneous changes:
4313  Fixed repetitive table dump in -n mode.
4314  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
4315the ACPI 2.0 GUID fails.
4316
4317iASL: Fixed a problem where the compiler could fault if incorrectly given
4318an acpidump output file as input. ACPICA BZ 1088. David Box.
4319
4320AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
4321they are invoked without any arguments.
4322
4323Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
43241086. Colin Ian King.
4325
4326Disassembler: Cleaned up a block of code that extracts a parent Op
4327object. Added a comment that explains that the parent is guaranteed to be
4328valid in this case. ACPICA BZ 1069.
4329
4330
4331----------------------------------------
433224 April 2014. Summary of changes for version 20140424:
4333
43341) ACPICA kernel-resident subsystem:
4335
4336Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
4337Some of these tables are known to contain a trailing NULL entry. Lv
4338Zheng.
4339
4340Removed an extraneous error message for the case where there are a large
4341number of system GPEs (> 124). This was the "32-bit FADT register is too
4342long to convert to GAS struct" message, which is irrelevant for GPEs
4343since the GPEx_BLK_LEN fields of the FADT are always used instead of the
4344(limited capacity) GAS bit length. Also, several changes to ensure proper
4345support for GPE numbers > 255, where some "GPE number" fields were 8-bits
4346internally.
4347
4348Implemented and deployed additional configuration support for the public
4349ACPICA external interfaces. Entire classes of interfaces can now be
4350easily modified or configured out, replaced by stubbed inline functions
4351by default. Lv Zheng.
4352
4353Moved all public ACPICA runtime configuration globals to the public
4354ACPICA external interface file for convenience. Also, removed some
4355obsolete/unused globals. See the file acpixf.h. Lv Zheng.
4356
4357Documentation: Added a new section to the ACPICA reference describing the
4358maximum number of GPEs that can be supported by the FADT-defined GPEs in
4359block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
4360reference.
4361
4362Example Code and Data Size: These are the sizes for the OS-independent
4363acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4364debug version of the code includes the debug output trace mechanism and
4365has a much larger code and data size.
4366
4367  Current Release:
4368    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
4369    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
4370  Previous Release:
4371    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
4372    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
4373
4374
43752) iASL Compiler/Disassembler and Tools:
4376
4377iASL and disassembler: Add full support for the LPIT table (Low Power
4378Idle Table). Includes support in the disassembler, data table compiler,
4379and template generator.
4380
4381AcpiDump utility:
43821) Add option to force the use of the RSDT (over the XSDT).
43832) Improve validation of the RSDP signature (use 8 chars instead of 4).
4384
4385iASL: Add check for predefined packages that are too large.  For
4386predefined names that contain subpackages, check if each subpackage is
4387too large. (Check for too small already exists.)
4388
4389Debugger: Updated the GPE command (which simulates a GPE by executing the
4390GPE code paths in ACPICA). The GPE device is now optional, and defaults
4391to the GPE 0/1 FADT-defined blocks.
4392
4393Unix application OSL: Update line-editing support. Add additional error
4394checking and take care not to reset terminal attributes on exit if they
4395were never set. This should help guarantee that the terminal is always
4396left in the previous state on program exit.
4397
4398
4399----------------------------------------
440025 March 2014. Summary of changes for version 20140325:
4401
44021) ACPICA kernel-resident subsystem:
4403
4404Updated the auto-serialize feature for control methods. This feature
4405automatically serializes all methods that create named objects in order
4406to prevent runtime errors. The update adds support to ignore the
4407currently executing AML SyncLevel when invoking such a method, in order
4408to prevent disruption of any existing SyncLevel priorities that may exist
4409in the AML code. Although the use of SyncLevels is relatively rare, this
4410change fixes a regression where an AE_AML_MUTEX_ORDER exception can
4411appear on some machines starting with the 20140214 release.
4412
4413Added a new external interface to allow the host to install ACPI tables
4414very early, before the namespace is even created. AcpiInstallTable gives
4415the host additional flexibility for ACPI table management. Tables can be
4416installed directly by the host as if they had originally appeared in the
4417XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
4418(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
4419with additional internal restructuring and cleanup. See the ACPICA
4420Reference for interface details. Lv Zheng.
4421
4422Added validation of the checksum for all incoming dynamically loaded
4423tables (via external interfaces or via AML Load/LoadTable operators). Lv
4424Zheng.
4425
4426Updated the use of the AcpiOsWaitEventsComplete interface during Notify
4427and GPE handler removal. Restructured calls to eliminate possible race
4428conditions. Lv Zheng.
4429
4430Added a warning for the use/execution of the ASL/AML Unload (table)
4431operator. This will help detect and identify machines that use this
4432operator if and when it is ever used. This operator has never been seen
4433in the field and the usage model and possible side-effects of the drastic
4434runtime action of a full table removal are unknown.
4435
4436Reverted the use of #pragma push/pop which was introduced in the 20140214
4437release. It appears that push and pop are not implemented by enough
4438compilers to make the use of this feature feasible for ACPICA at this
4439time. However, these operators may be deployed in a future ACPICA
4440release.
4441
4442Added the missing EXPORT_SYMBOL macros for the install and remove SCI
4443handler interfaces.
4444
4445Source code generation:
44461) Disabled the use of the "strchr" macro for the gcc-specific
4447generation. For some versions of gcc, this macro can periodically expose
4448a compiler bug which in turn causes compile-time error(s).
44492) Added support for PPC64 compilation. Colin Ian King.
4450
4451Example Code and Data Size: These are the sizes for the OS-independent
4452acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4453debug version of the code includes the debug output trace mechanism and
4454has a much larger code and data size.
4455
4456  Current Release:
4457    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
4458    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
4459  Previous Release:
4460    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
4461    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
4462
4463
44642) iASL Compiler/Disassembler and Tools:
4465
4466Disassembler: Added several new features to improve the readability of
4467the resulting ASL code. Extra information is emitted within comment
4468fields in the ASL code:
44691) Known _HID/_CID values are decoded to descriptive text.
44702) Standard values for the Notify() operator are decoded to descriptive
4471text.
44723) Target operands are expanded to full pathnames (in a comment) when
4473possible.
4474
4475Disassembler: Miscellaneous updates for extern() handling:
44761) Abort compiler if file specified by -fe option does not exist.
44772) Silence unnecessary warnings about argument count mismatches.
44783) Update warning messages concerning unresolved method externals.
44794) Emit "UnknownObj" keyword for externals whose type cannot be
4480determined.
4481
4482AcpiHelp utility:
44831) Added the -a option to display both the ASL syntax and the AML
4484encoding for an input ASL operator. This effectively displays all known
4485information about an ASL operator with one AcpiHelp invocation.
44862) Added substring match support (similar to a wildcard) for the -i
4487(_HID/PNP IDs) option.
4488
4489iASL/Disassembler: Since this tool does not yet support execution on big-
4490endian machines, added detection of endianness and an error message if
4491execution is attempted on big-endian. Support for big-endian within iASL
4492is a feature that is on the ACPICA to-be-done list.
4493
4494AcpiBin utility:
44951) Remove option to extract binary files from an acpidump; this function
4496is made obsolete by the AcpiXtract utility.
44972) General cleanup of open files and allocated buffers.
4498
4499
4500----------------------------------------
450114 February 2014. Summary of changes for version 20140214:
4502
45031) ACPICA kernel-resident subsystem:
4504
4505Implemented a new mechanism to proactively prevent problems with ill-
4506behaved reentrant control methods that create named ACPI objects. This
4507behavior is illegal as per the ACPI specification, but is nonetheless
4508frequently seen in the field. Previously, this could lead to an
4509AE_ALREADY_EXISTS exception if the method was actually entered by more
4510than one thread. This new mechanism detects such methods at table load
4511time and marks them "serialized" to prevent reentrancy. A new global
4512option, AcpiGbl_AutoSerializeMethods, has been added to disable this
4513feature if desired. This mechanism and global option obsoletes and
4514supersedes the previous AcpiGbl_SerializeAllMethods option.
4515
4516Added the "Windows 2013" string to the _OSI support. ACPICA will now
4517respond TRUE to _OSI queries with this string. It is the stated policy of
4518ACPICA to add new strings to the _OSI support as soon as possible after
4519they are defined. See the full ACPICA _OSI policy which has been added to
4520the utilities/utosi.c file.
4521
4522Hardened/updated the _PRT return value auto-repair code:
45231) Do not abort the repair on a single subpackage failure, continue to
4524check all subpackages.
45252) Add check for the minimum subpackage length (4).
45263) Properly handle extraneous NULL package elements.
4527
4528Added support to avoid the possibility of infinite loops when traversing
4529object linked lists. Never allow an infinite loop, even in the face of
4530corrupted object lists.
4531
4532ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
4533pack(pop) directives to ensure that the ACPICA headers are independent of
4534compiler settings or other host headers.
4535
4536Example Code and Data Size: These are the sizes for the OS-independent
4537acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4538debug version of the code includes the debug output trace mechanism and
4539has a much larger code and data size.
4540
4541  Current Release:
4542    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
4543    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
4544  Previous Release:
4545    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
4546    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
4547
4548
45492) iASL Compiler/Disassembler and Tools:
4550
4551iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
4552first reserved field was incorrectly forced to have a value of zero. This
4553change correctly forces the field to have a value of one. ACPICA BZ 1081.
4554
4555Debugger: Added missing support for the "Extra" and "Data" subobjects
4556when displaying object data.
4557
4558Debugger: Added support to display entire object linked lists when
4559displaying object data.
4560
4561iASL: Removed the obsolete -g option to obtain ACPI tables from the
4562Windows registry. This feature has been superseded by the acpidump
4563utility.
4564
4565
4566----------------------------------------
456714 January 2014. Summary of changes for version 20140114:
4568
45691) ACPICA kernel-resident subsystem:
4570
4571Updated all ACPICA copyrights and signons to 2014. Added the 2014
4572copyright to all module headers and signons, including the standard Linux
4573header. This affects virtually every file in the ACPICA core subsystem,
4574iASL compiler, all ACPICA utilities, and the test suites.
4575
4576Improved parameter validation for AcpiInstallGpeBlock. Added the
4577following checks:
45781) The incoming device handle refers to type ACPI_TYPE_DEVICE.
45792) There is not already a GPE block attached to the device.
4580Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
4581device.
4582
4583Correctly support "references" in the ACPI_OBJECT. This change fixes the
4584support to allow references (namespace nodes) to be passed as arguments
4585to control methods via the evaluate object interface. This is probably
4586most useful for testing purposes, however.
4587
4588Improved support for 32/64 bit physical addresses in printf()-like
4589output. This change improves the support for physical addresses in printf
4590debug statements and other output on both 32-bit and 64-bit hosts. It
4591consistently outputs the appropriate number of bytes for each host. The
4592%p specifier is unsatisfactory since it does not emit uniform output on
4593all hosts/clib implementations (on some, leading zeros are not supported,
4594leading to difficult-to-read output).
4595
4596Example Code and Data Size: These are the sizes for the OS-independent
4597acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4598debug version of the code includes the debug output trace mechanism and
4599has a much larger code and data size.
4600
4601  Current Release:
4602    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
4603    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
4604  Previous Release:
4605    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
4606    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
4607
4608
46092) iASL Compiler/Disassembler and Tools:
4610
4611iASL: Fix a possible fault when using the Connection() operator. Fixes a
4612problem if the parent Field definition for the Connection operator refers
4613to an operation region that does not exist. ACPICA BZ 1064.
4614
4615AcpiExec: Load of local test tables is now optional. The utility has the
4616capability to load some various tables to test features of ACPICA.
4617However, there are enough of them that the output of the utility became
4618confusing. With this change, only the required local tables are displayed
4619(RSDP, XSDT, etc.) along with the actual tables loaded via the command
4620line specification. This makes the default output simler and easier to
4621understand. The -el command line option restores the original behavior
4622for testing purposes.
4623
4624AcpiExec: Added support for overlapping operation regions. This change
4625expands the simulation of operation regions by supporting regions that
4626overlap within the given address space. Supports SystemMemory and
4627SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
4628
4629AcpiExec: Added region handler support for PCI_Config and EC spaces. This
4630allows AcpiExec to simulate these address spaces, similar to the current
4631support for SystemMemory and SystemIO.
4632
4633Debugger: Added new command to read/write/compare all namespace objects.
4634The command "test objects" will exercise the entire namespace by writing
4635new values to each data object, and ensuring that the write was
4636successful. The original value is then restored and verified.
4637
4638Debugger: Added the "test predefined" command. This change makes this
4639test public and puts it under the new "test" command. The test executes
4640each and every predefined name within the current namespace.
4641
4642
4643----------------------------------------
464418 December 2013. Summary of changes for version 20131218:
4645
4646Global note: The ACPI 5.0A specification was released this month. There
4647are no changes needed for ACPICA since this release of ACPI is an
4648errata/clarification release. The specification is available at
4649acpi.info.
4650
4651
46521) ACPICA kernel-resident subsystem:
4653
4654Added validation of the XSDT root table if it is present. Some older
4655platforms contain an XSDT that is ill-formed or otherwise invalid (such
4656as containing some or all entries that are NULL pointers). This change
4657adds a new function to validate the XSDT before actually using it. If the
4658XSDT is found to be invalid, ACPICA will now automatically fall back to
4659using the RSDT instead. Original implementation by Zhao Yakui. Ported to
4660ACPICA and enhanced by Lv Zheng and Bob Moore.
4661
4662Added a runtime option to ignore the XSDT and force the use of the RSDT.
4663This change adds a runtime option that will force ACPICA to use the RSDT
4664instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
4665requires that an XSDT be used instead of the RSDT, the XSDT has been
4666found to be corrupt or ill-formed on some machines. Lv Zheng.
4667
4668Added a runtime option to favor 32-bit FADT register addresses over the
466964-bit addresses. This change adds an option to favor 32-bit FADT
4670addresses when there is a conflict between the 32-bit and 64-bit versions
4671of the same register. The default behavior is to use the 64-bit version
4672in accordance with the ACPI specification. This can now be overridden via
4673the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
4674
4675During the change above, the internal "Convert FADT" and "Verify FADT"
4676functions have been merged to simplify the code, making it easier to
4677understand and maintain. ACPICA BZ 933.
4678
4679Improve exception reporting and handling for GPE block installation.
4680Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
4681status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
4682
4683Added helper macros to extract bus/segment numbers from the HEST table.
4684This change adds two macros to extract the encoded bus and segment
4685numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
4686Betty Dall <betty.dall@hp.com>
4687
4688Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
4689by ACPICA. It is not a public macro, so it should have no effect on
4690existing OSV code. Lv Zheng.
4691
4692Example Code and Data Size: These are the sizes for the OS-independent
4693acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4694debug version of the code includes the debug output trace mechanism and
4695has a much larger code and data size.
4696
4697  Current Release:
4698    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
4699    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
4700  Previous Release:
4701    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4702    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4703
4704
47052) iASL Compiler/Disassembler and Tools:
4706
4707Disassembler: Improved pathname support for emitted External()
4708statements. This change adds full pathname support for external names
4709that have been resolved internally by the inclusion of additional ACPI
4710tables (via the iASL -e option). Without this change, the disassembler
4711can emit multiple externals for the same object, or it become confused
4712when the Scope() operator is used on an external object. Overall, greatly
4713improves the ability to actually recompile the emitted ASL code when
4714objects a referenced across multiple ACPI tables. Reported by Michael
4715Tsirkin (mst@redhat.com).
4716
4717Tests/ASLTS: Updated functional control suite to execute with no errors.
4718David Box. Fixed several errors related to the testing of the interpreter
4719slack mode. Lv Zheng.
4720
4721iASL: Added support to detect names that are declared within a control
4722method, but are unused (these are temporary names that are only valid
4723during the time the method is executing). A remark is issued for these
4724cases. ACPICA BZ 1022.
4725
4726iASL: Added full support for the DBG2 table. Adds full disassembler,
4727table compiler, and template generator support for the DBG2 table (Debug
4728Port 2 table).
4729
4730iASL: Added full support for the PCCT table, update the table definition.
4731Updates the PCCT table definition in the actbl3.h header and adds table
4732compiler and template generator support.
4733
4734iASL: Added an option to emit only error messages (no warnings/remarks).
4735The -ve option will enable only error messages, warnings and remarks are
4736suppressed. This can simplify debugging when only the errors are
4737important, such as when an ACPI table is disassembled and there are many
4738warnings and remarks -- but only the actual errors are of real interest.
4739
4740Example ACPICA code (source/tools/examples): Updated the example code so
4741that it builds to an actual working program, not just example code. Added
4742ACPI tables and execution of an example control method in the DSDT. Added
4743makefile support for Unix generation.
4744
4745
4746----------------------------------------
474715 November 2013. Summary of changes for version 20131115:
4748
4749This release is available at https://acpica.org/downloads
4750
4751
47521) ACPICA kernel-resident subsystem:
4753
4754Resource Manager: Fixed loop termination for the "get AML length"
4755function. The loop previously had an error termination on a NULL resource
4756pointer, which can never happen since the loop simply increments a valid
4757resource pointer. This fix changes the loop to terminate with an error on
4758an invalid end-of-buffer condition. The problem can be seen as an
4759infinite loop by callers to AcpiSetCurrentResources with an invalid or
4760corrupted resource descriptor, or a resource descriptor that is missing
4761an END_TAG descriptor. Reported by Dan Carpenter
4762<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
4763
4764Table unload and ACPICA termination: Delete all attached data objects
4765during namespace node deletion. This fix updates namespace node deletion
4766to delete the entire list of attached objects (attached via
4767AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
47681024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
4769
4770ACPICA termination: Added support to delete all objects attached to the
4771root namespace node. This fix deletes any and all objects that have been
4772attached to the root node via AcpiAttachData. Previously, none of these
4773objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
4774
4775Debug output: Do not emit the function nesting level for the in-kernel
4776build. The nesting level is really only useful during a single-thread
4777execution. Therefore, only enable this output for the AcpiExec utility.
4778Also, only emit the thread ID when executing under AcpiExec (Context
4779switches are still always detected and a message is emitted). ACPICA BZ
4780972.
4781
4782Example Code and Data Size: These are the sizes for the OS-independent
4783acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4784debug version of the code includes the debug output trace mechanism and
4785has a much larger code and data size.
4786
4787  Current Release:
4788    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4789    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4790  Previous Release:
4791    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4792    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4793
4794
47952) iASL Compiler/Disassembler and Tools:
4796
4797AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
4798correct portable POSIX header for terminal control functions.
4799
4800Disassembler: Fixed control method invocation issues related to the use
4801of the CondRefOf() operator. The problem is seen in the disassembly where
4802control method invocations may not be disassembled properly if the
4803control method name has been used previously as an argument to CondRefOf.
4804The solution is to not attempt to emit an external declaration for the
4805CondRefOf target (it is not necessary in the first place). This prevents
4806disassembler object type confusion. ACPICA BZ 988.
4807
4808Unix Makefiles: Added an option to disable compiler optimizations and the
4809_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
4810with optimizations (reportedly, gcc 4.4 for example). This change adds a
4811command line option for make (NOOPT) that disables all compiler
4812optimizations and the _FORTIFY_SOURCE compiler flag. The default
4813optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
48141034. Lv Zheng, Bob Moore.
4815
4816Tests/ASLTS: Added options to specify individual test cases and modes.
4817This allows testers running aslts.sh to optionally specify individual
4818test modes and test cases. Also added an option to disable the forced
4819generation of the ACPICA tools from source if desired. Lv Zheng.
4820
4821----------------------------------------
482227 September 2013. Summary of changes for version 20130927:
4823
4824This release is available at https://acpica.org/downloads
4825
4826
48271) ACPICA kernel-resident subsystem:
4828
4829Fixed a problem with store operations to reference objects. This change
4830fixes a problem where a Store operation to an ArgX object that contained
4831a
4832reference to a field object did not complete the automatic dereference
4833and
4834then write to the actual field object. Instead, the object type of the
4835field object was inadvertently changed to match the type of the source
4836operand. The new behavior will actually write to the field object (buffer
4837field or field unit), thus matching the correct ACPI-defined behavior.
4838
4839Implemented support to allow the host to redefine individual OSL
4840prototypes. This change enables the host to redefine OSL prototypes found
4841in the acpiosxf.h file. This allows the host to implement OSL interfaces
4842with a macro or inlined function. Further, it allows the host to add any
4843additional required modifiers such as __iomem, __init, __exit, etc., as
4844necessary on a per-interface basis. Enables maximum flexibility for the
4845OSL interfaces. Lv Zheng.
4846
4847Hardcoded the access width for the FADT-defined reset register. The ACPI
4848specification requires the reset register width to be 8 bits. ACPICA now
4849hardcodes the width to 8 and ignores the FADT width value. This provides
4850compatibility with other ACPI implementations that have allowed BIOS code
4851with bad register width values to go unnoticed. Matthew Garett, Bob
4852Moore,
4853Lv Zheng.
4854
4855Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
4856used
4857in the OSL header (acpiosxf). The change modifies the position of this
4858macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
4859build issues if the OSL defines the implementation of the interface to be
4860an inline stub function. Lv Zheng.
4861
4862Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
4863initialization interfaces. This change adds a new macro for the main init
4864and terminate external interfaces in order to support hosts that require
4865additional or different processing for these functions. Changed from
4866ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
4867Zheng, Bob Moore.
4868
4869Cleaned up the memory allocation macros for configurability. In the
4870common
4871case, the ACPI_ALLOCATE and related macros now resolve directly to their
4872respective AcpiOs* OSL interfaces. Two options:
48731) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
4874default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
48752) For AcpiExec (and for debugging), the macros can optionally be
4876resolved
4877to the local ACPICA interfaces that track each allocation (local tracking
4878is used to immediately detect memory leaks).
4879Lv Zheng.
4880
4881Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
4882to predefine this macro to either TRUE or FALSE during the system build.
4883
4884Replaced __FUNCTION_ with __func__ in the gcc-specific header.
4885
4886Example Code and Data Size: These are the sizes for the OS-independent
4887acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4888debug version of the code includes the debug output trace mechanism and
4889has a much larger code and data size.
4890
4891  Current Release:
4892    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4893    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4894  Previous Release:
4895    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
4896    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4897
4898
48992) iASL Compiler/Disassembler and Tools:
4900
4901iASL: Implemented wildcard support for the -e option. This simplifies use
4902when there are many SSDTs that must be included to resolve external
4903method
4904declarations. ACPICA BZ 1041. Example:
4905    iasl -e ssdt*.dat -d dsdt.dat
4906
4907AcpiExec: Add history/line-editing for Unix/Linux systems. This change
4908adds a portable module that implements full history and limited line
4909editing for Unix and Linux systems. It does not use readline() due to
4910portability issues. Instead it uses the POSIX termio interface to put the
4911terminal in raw input mode so that the various special keys can be
4912trapped
4913(such as up/down-arrow for history support and left/right-arrow for line
4914editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
4915
4916AcpiXtract: Add support to handle (ignore) "empty" lines containing only
4917one or more spaces. This provides compatible with early or different
4918versions of the AcpiDump utility. ACPICA BZ 1044.
4919
4920AcpiDump: Do not ignore tables that contain only an ACPI table header.
4921Apparently, some BIOSs create SSDTs that contain an ACPI table header but
4922no other data. This change adds support to dump these tables. Any tables
4923shorter than the length of an ACPI table header remain in error (an error
4924message is emitted). Reported by Yi Li.
4925
4926Debugger: Echo actual command along with the "unknown command" message.
4927
4928----------------------------------------
492923 August 2013. Summary of changes for version 20130823:
4930
49311) ACPICA kernel-resident subsystem:
4932
4933Implemented support for host-installed System Control Interrupt (SCI)
4934handlers. Certain ACPI functionality requires the host to handle raw
4935SCIs. For example, the "SCI Doorbell" that is defined for memory power
4936state support requires the host device driver to handle SCIs to examine
4937if the doorbell has been activated. Multiple SCI handlers can be
4938installed to allow for future expansion. New external interfaces are
4939AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
4940details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
4941
4942Operation region support: Never locally free the handler "context"
4943pointer. This change removes some dangerous code that attempts to free
4944the handler context pointer in some (rare) circumstances. The owner of
4945the handler owns this pointer and the ACPICA code should never touch it.
4946Although not seen to be an issue in any kernel, it did show up as a
4947problem (fault) under AcpiExec. Also, set the internal storage field for
4948the context pointer to zero when the region is deactivated, simply for
4949sanity. David Box. ACPICA BZ 1039.
4950
4951AcpiRead: On error, do not modify the return value target location. If an
4952error happens in the middle of a split 32/32 64-bit I/O operation, do not
4953modify the target of the return value pointer. Makes the code consistent
4954with the rest of ACPICA. Bjorn Helgaas.
4955
4956Example Code and Data Size: These are the sizes for the OS-independent
4957acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4958debug version of the code includes the debug output trace mechanism and
4959has a much larger code and data size.
4960
4961  Current Release:
4962    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
4963    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4964  Previous Release:
4965    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
4966    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
4967
4968
49692) iASL Compiler/Disassembler and Tools:
4970
4971AcpiDump: Implemented several new features and fixed some problems:
49721) Added support to dump the RSDP, RSDT, and XSDT tables.
49732) Added support for multiple table instances (SSDT, UEFI).
49743) Added option to dump "customized" (overridden) tables (-c).
49754) Fixed a problem where some table filenames were improperly
4976constructed.
49775) Improved some error messages, removed some unnecessary messages.
4978
4979iASL: Implemented additional support for disassembly of ACPI tables that
4980contain invocations of external control methods. The -fe<file> option
4981allows the import of a file that specifies the external methods along
4982with the required number of arguments for each -- allowing for the
4983correct disassembly of the table. This is a workaround for a limitation
4984of AML code where the disassembler often cannot determine the number of
4985arguments required for an external control method and generates incorrect
4986ASL code. See the iASL reference for details. ACPICA BZ 1030.
4987
4988Debugger: Implemented a new command (paths) that displays the full
4989pathnames (namepaths) and object types of all objects in the namespace.
4990This is an alternative to the namespace command.
4991
4992Debugger: Implemented a new command (sci) that invokes the SCI dispatch
4993mechanism and any installed handlers.
4994
4995iASL: Fixed a possible segfault for "too many parent prefixes" condition.
4996This can occur if there are too many parent prefixes in a namepath (for
4997example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
4998
4999Application OSLs: Set the return value for the PCI read functions. These
5000functions simply return AE_OK, but should set the return value to zero
5001also. This change implements this. ACPICA BZ 1038.
5002
5003Debugger: Prevent possible command line buffer overflow. Increase the
5004size of a couple of the debugger line buffers, and ensure that overflow
5005cannot happen. ACPICA BZ 1037.
5006
5007iASL: Changed to abort immediately on serious errors during the parsing
5008phase. Due to the nature of ASL, there is no point in attempting to
5009compile these types of errors, and they typically end up causing a
5010cascade of hundreds of errors which obscure the original problem.
5011
5012----------------------------------------
501325 July 2013. Summary of changes for version 20130725:
5014
50151) ACPICA kernel-resident subsystem:
5016
5017Fixed a problem with the DerefOf operator where references to FieldUnits
5018and BufferFields incorrectly returned the parent object, not the actual
5019value of the object. After this change, a dereference of a FieldUnit
5020reference results in a read operation on the field to get the value, and
5021likewise, the appropriate BufferField value is extracted from the target
5022buffer.
5023
5024Fixed a problem where the _WAK method could cause a fault under these
5025circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
5026method returned no value. The problem is rarely seen because most kernels
5027run ACPICA in slack mode.
5028
5029For the DerefOf operator, a fatal error now results if an attempt is made
5030to dereference a reference (created by the Index operator) to a NULL
5031package element. Provides compatibility with other ACPI implementations,
5032and this behavior will be added to a future version of the ACPI
5033specification.
5034
5035The ACPI Power Management Timer (defined in the FADT) is now optional.
5036This provides compatibility with other ACPI implementations and will
5037appear in the next version of the ACPI specification. If there is no PM
5038Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
5039zero in the FADT indicates no PM timer.
5040
5041Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
5042allows the host to globally enable/disable all vendor strings, all
5043feature strings, or both. Intended to be primarily used for debugging
5044purposes only. Lv Zheng.
5045
5046Expose the collected _OSI data to the host via a global variable. This
5047data tracks the highest level vendor ID that has been invoked by the BIOS
5048so that the host (and potentially ACPICA itself) can change behaviors
5049based upon the age of the BIOS.
5050
5051Example Code and Data Size: These are the sizes for the OS-independent
5052acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5053debug version of the code includes the debug output trace mechanism and
5054has a much larger code and data size.
5055
5056  Current Release:
5057    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
5058    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
5059  Previous Release:
5060    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
5061    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
5062
5063
50642) iASL Compiler/Disassembler and Tools:
5065
5066iASL: Created the following enhancements for the -so option (create
5067offset table):
50681)Add offsets for the last nameseg in each namepath for every supported
5069object type
50702)Add support for Processor, Device, Thermal Zone, and Scope objects
50713)Add the actual AML opcode for the parent object of every supported
5072object type
50734)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
5074
5075Disassembler: Emit all unresolved external symbols in a single block.
5076These are external references to control methods that could not be
5077resolved, and thus, the disassembler had to make a guess at the number of
5078arguments to parse.
5079
5080iASL: The argument to the -T option (create table template) is now
5081optional. If not specified, the default table is a DSDT, typically the
5082most common case.
5083
5084----------------------------------------
508526 June 2013. Summary of changes for version 20130626:
5086
50871) ACPICA kernel-resident subsystem:
5088
5089Fixed an issue with runtime repair of the _CST object. Null or invalid
5090elements were not always removed properly. Lv Zheng.
5091
5092Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
5093FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
5094the maximum number of GPEs is 1016. Use of multiple GPE block devices
5095makes the system-wide number of GPEs essentially unlimited.
5096
5097Example Code and Data Size: These are the sizes for the OS-independent
5098acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5099debug version of the code includes the debug output trace mechanism and
5100has a much larger code and data size.
5101
5102  Current Release:
5103    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
5104    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
5105  Previous Release:
5106    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
5107    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
5108
5109
51102) iASL Compiler/Disassembler and Tools:
5111
5112Portable AcpiDump: Implemented full support for the Linux and FreeBSD
5113hosts. Now supports Linux, FreeBSD, and Windows.
5114
5115Disassembler: Added some missing types for the HEST and EINJ tables: "Set
5116Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
5117
5118iASL/Preprocessor: Implemented full support for nested
5119#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
5120
5121Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
5122max. The original purpose of this constraint was to limit the amount of
5123debug output. However, the string function in question (UtPrintString) is
5124now used for the disassembler also, where 256 bytes is insufficient.
5125Reported by RehabMan@GitHub.
5126
5127iASL/DataTables: Fixed some problems and issues with compilation of DMAR
5128tables. ACPICA BZ 999. Lv Zheng.
5129
5130iASL: Fixed a couple of error exit issues that could result in a "Could
5131not delete <file>" message during ASL compilation.
5132
5133AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
5134the actual signatures for these tables are "FACP" and "APIC",
5135respectively.
5136
5137AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
5138tables are allowed to have multiple instances.
5139
5140----------------------------------------
514117 May 2013. Summary of changes for version 20130517:
5142
51431) ACPICA kernel-resident subsystem:
5144
5145Fixed a regression introduced in version 20130328 for _INI methods. This
5146change fixes a problem introduced in 20130328 where _INI methods are no
5147longer executed properly because of a memory block that was not
5148initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
5149<tomasz.nowicki@linaro.org>.
5150
5151Fixed a possible problem with the new extended sleep registers in the
5152ACPI
51535.0 FADT. Do not use these registers (even if populated) unless the HW-
5154reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
51551020. Lv Zheng.
5156
5157Implemented return value repair code for _CST predefined objects: Sort
5158the
5159list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
5160
5161Implemented a debug-only option to disable loading of SSDTs from the
5162RSDT/XSDT during ACPICA initialization. This can be useful for debugging
5163ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
5164acglobal.h - ACPICA BZ 1005. Lv Zheng.
5165
5166Fixed some issues in the ACPICA initialization and termination code:
5167Tomasz Nowicki <tomasz.nowicki@linaro.org>
51681) Clear events initialized flag upon event component termination. ACPICA
5169BZ 1013.
51702) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
51713) Delete global lock pending lock during termination. ACPICA BZ 1012.
51724) Clear debug buffer global on termination to prevent possible multiple
5173delete. ACPICA BZ 1010.
5174
5175Standardized all switch() blocks across the entire source base. After
5176many
5177years, different formatting for switch() had crept in. This change makes
5178the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
5179
5180Split some files to enhance ACPICA modularity and configurability:
51811) Split buffer dump routines into utilities/utbuffer.c
51822) Split internal error message routines into utilities/uterror.c
51833) Split table print utilities into tables/tbprint.c
51844) Split iASL command-line option processing into asloptions.c
5185
5186Makefile enhancements:
51871) Support for all new files above.
51882) Abort make on errors from any subcomponent. Chao Guan.
51893) Add build support for Apple Mac OS X. Liang Qi.
5190
5191Example Code and Data Size: These are the sizes for the OS-independent
5192acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5193debug version of the code includes the debug output trace mechanism and
5194has a much larger code and data size.
5195
5196  Current Release:
5197    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
5198    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
5199  Previous Release:
5200    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
5201    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
5202
5203
52042) iASL Compiler/Disassembler and Tools:
5205
5206New utility: Implemented an easily portable version of the acpidump
5207utility to extract ACPI tables from the system (or a file) in an ASCII
5208hex
5209dump format. The top-level code implements the various command line
5210options, file I/O, and table dump routines. To port to a new host, only
5211three functions need to be implemented to get tables -- since this
5212functionality is OS-dependent. See the tools/acpidump/apmain.c module and
5213the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
52141) The Windows version obtains the ACPI tables from the Registry.
52152) The Linux version is under development.
52163) Other hosts - If an OS-dependent module is submitted, it will be
5217distributed with ACPICA.
5218
5219iASL: Fixed a regression for -D preprocessor option (define symbol). A
5220restructuring/change to the initialization sequence caused this option to
5221no longer work properly.
5222
5223iASL: Implemented a mechanism to disable specific warnings and remarks.
5224Adds a new command line option, "-vw <messageid> as well as "#pragma
5225disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
5226
5227iASL: Fix for too-strict package object validation. The package object
5228validation for return values from the predefined names is a bit too
5229strict, it does not allow names references within the package (which will
5230be resolved at runtime.) These types of references cannot be validated at
5231compile time. This change ignores named references within package objects
5232for names that return or define static packages.
5233
5234Debugger: Fixed the 80-character command line limitation for the History
5235command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
5236
5237iASL: Added control method and package support for the -so option
5238(generates AML offset table for BIOS support.)
5239
5240iASL: issue a remark if a non-serialized method creates named objects. If
5241a thread blocks within the method for any reason, and another thread
5242enters the method, the method will fail because an attempt will be made
5243to
5244create the same (named) object twice. In this case, issue a remark that
5245the method should be marked serialized. NOTE: may become a warning later.
5246ACPICA BZ 909.
5247
5248----------------------------------------
524918 April 2013. Summary of changes for version 20130418:
5250
52511) ACPICA kernel-resident subsystem:
5252
5253Fixed a possible buffer overrun during some rare but specific field unit
5254read operations. This overrun can only happen if the DSDT version is 1 --
5255meaning that all AML integers are 32 bits -- and the field length is
5256between 33 and 55 bits long. During the read, an internal buffer object
5257is
5258created for the field unit because the field is larger than an integer
5259(32
5260bits). However, in this case, the buffer will be incorrectly written
5261beyond the end because the buffer length is less than the internal
5262minimum
5263of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
5264long, but a full 8 bytes will be written.
5265
5266Updated the Embedded Controller "orphan" _REG method support. This refers
5267to _REG methods under the EC device that have no corresponding operation
5268region. This is allowed by the ACPI specification. This update removes a
5269dependency on the existence an ECDT table. It will execute an orphan _REG
5270method as long as the operation region handler for the EC is installed at
5271the EC device node and not the namespace root. Rui Zhang (original
5272update), Bob Moore (update/integrate).
5273
5274Implemented run-time argument typechecking for all predefined ACPI names
5275(_STA, _BIF, etc.) This change performs object typechecking on all
5276incoming arguments for all predefined names executed via
5277AcpiEvaluateObject. This ensures that ACPI-related device drivers are
5278passing correct object types as well as the correct number of arguments
5279(therefore identifying any issues immediately). Also, the ASL/namespace
5280definition of the predefined name is checked against the ACPI
5281specification for the proper argument count. Adds one new file,
5282nsarguments.c
5283
5284Changed an exception code for the ASL UnLoad() operator. Changed the
5285exception code for the case where the input DdbHandle is invalid, from
5286AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
5287
5288Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
5289global makefile. The use of this flag causes compiler errors on earlier
5290versions of GCC, so it has been removed for compatibility.
5291
5292Miscellaneous cleanup:
52931) Removed some unused/obsolete macros
52942) Fixed a possible memory leak in the _OSI support
52953) Removed an unused variable in the predefined name support
52964) Windows OSL: remove obsolete reference to a memory list field
5297
5298Example Code and Data Size: These are the sizes for the OS-independent
5299acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5300debug version of the code includes the debug output trace mechanism and
5301has a much larger code and data size.
5302
5303  Current Release:
5304    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
5305    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
5306  Previous Release:
5307    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
5308    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
5309
5310
53112) iASL Compiler/Disassembler and Tools:
5312
5313AcpiExec: Added installation of a handler for the SystemCMOS address
5314space. This prevents control method abort if a method accesses this
5315space.
5316
5317AcpiExec: Added support for multiple EC devices, and now install EC
5318operation region handler(s) at the actual EC device instead of the
5319namespace root. This reflects the typical behavior of host operating
5320systems.
5321
5322AcpiExec: Updated to ensure that all operation region handlers are
5323installed before the _REG methods are executed. This prevents a _REG
5324method from aborting if it accesses an address space has no handler.
5325AcpiExec installs a handler for every possible address space.
5326
5327Debugger: Enhanced the "handlers" command to display non-root handlers.
5328This change enhances the handlers command to display handlers associated
5329with individual devices throughout the namespace, in addition to the
5330currently supported display of handlers associated with the root
5331namespace
5332node.
5333
5334ASL Test Suite: Several test suite errors have been identified and
5335resolved, reducing the total error count during execution. Chao Guan.
5336
5337----------------------------------------
533828 March 2013. Summary of changes for version 20130328:
5339
53401) ACPICA kernel-resident subsystem:
5341
5342Fixed several possible race conditions with the internal object reference
5343counting mechanism. Some of the external ACPICA interfaces update object
5344reference counts without holding the interpreter or namespace lock. This
5345change adds a spinlock to protect reference count updates on the internal
5346ACPICA objects. Reported by and with assistance from Andriy Gapon
5347(avg@FreeBSD.org).
5348
5349FADT support: Removed an extraneous warning for very large GPE register
5350sets. This change removes a size mismatch warning if the legacy length
5351field for a GPE register set is larger than the 64-bit GAS structure can
5352accommodate. GPE register sets can be larger than the 255-bit width
5353limitation of the GAS structure. Linn Crosetto (linn@hp.com).
5354
5355_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
5356return from this interface. Handles a possible timeout case if
5357ACPI_WAIT_FOREVER is modified by the host to be a value less than
5358"forever". Jung-uk Kim.
5359
5360Predefined name support: Add allowed/required argument type information
5361to
5362the master predefined info table. This change adds the infrastructure to
5363enable typechecking on incoming arguments for all predefined
5364methods/objects. It does not actually contain the code that will fully
5365utilize this information, this is still under development. Also condenses
5366some duplicate code for the predefined names into a new module,
5367utilities/utpredef.c
5368
5369Example Code and Data Size: These are the sizes for the OS-independent
5370acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5371debug version of the code includes the debug output trace mechanism and
5372has a much larger code and data size.
5373
5374  Previous Release:
5375    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
5376    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
5377  Current Release:
5378    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
5379    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
5380
5381
53822) iASL Compiler/Disassembler and Tools:
5383
5384iASL: Implemented a new option to simplify the development of ACPI-
5385related
5386BIOS code. Adds support for a new "offset table" output file. The -so
5387option will create a C table containing the AML table offsets of various
5388named objects in the namespace so that BIOS code can modify them easily
5389at
5390boot time. This can simplify BIOS runtime code by eliminating expensive
5391searches for "magic values", enhancing boot times and adding greater
5392reliability. With assistance from Lee Hamel.
5393
5394iASL: Allow additional predefined names to return zero-length packages.
5395Now, all predefined names that are defined by the ACPI specification to
5396return a "variable-length package of packages" are allowed to return a
5397zero length top-level package. This allows the BIOS to tell the host that
5398the requested feature is not supported, and supports existing BIOS/ASL
5399code and practices.
5400
5401iASL: Changed the "result not used" warning to an error. This is the case
5402where an ASL operator is effectively a NOOP because the result of the
5403operation is not stored anywhere. For example:
5404    Add (4, Local0)
5405There is no target (missing 3rd argument), nor is the function return
5406value used. This is potentially a very serious problem -- since the code
5407was probably intended to do something, but for whatever reason, the value
5408was not stored. Therefore, this issue has been upgraded from a warning to
5409an error.
5410
5411AcpiHelp: Added allowable/required argument types to the predefined names
5412info display. This feature utilizes the recent update to the predefined
5413names table (above).
5414
5415----------------------------------------
541614 February 2013. Summary of changes for version 20130214:
5417
54181) ACPICA Kernel-resident Subsystem:
5419
5420Fixed a possible regression on some hosts: Reinstated the safe return
5421macros (return_ACPI_STATUS, etc.) that ensure that the argument is
5422evaluated only once. Although these macros are not needed for the ACPICA
5423code itself, they are often used by ACPI-related host device drivers
5424where
5425the safe feature may be necessary.
5426
5427Fixed several issues related to the ACPI 5.0 reduced hardware support
5428(SOC): Now ensure that if the platform declares itself as hardware-
5429reduced
5430via the FADT, the following functions become NOOPs (and always return
5431AE_OK) because ACPI is always enabled by definition on these machines:
5432  AcpiEnable
5433  AcpiDisable
5434  AcpiHwGetMode
5435  AcpiHwSetMode
5436
5437Dynamic Object Repair: Implemented additional runtime repairs for
5438predefined name return values. Both of these repairs can simplify code in
5439the related device drivers that invoke these methods:
54401) For the _STR and _MLS names, automatically repair/convert an ASCII
5441string to a Unicode buffer.
54422) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
5443a
5444lone end tag descriptor in the following cases: A Return(0) was executed,
5445a null buffer was returned, or no object at all was returned (non-slack
5446mode only). Adds a new file, nsconvert.c
5447ACPICA BZ 998. Bob Moore, Lv Zheng.
5448
5449Resource Manager: Added additional code to prevent possible infinite
5450loops
5451while traversing corrupted or ill-formed resource template buffers. Check
5452for zero-length resource descriptors in all code that loops through
5453resource templates (the length field is used to index through the
5454template). This change also hardens the external AcpiWalkResources and
5455AcpiWalkResourceBuffer interfaces.
5456
5457Local Cache Manager: Enhanced the main data structure to eliminate an
5458unnecessary mechanism to access the next object in the list. Actually
5459provides a small performance enhancement for hosts that use the local
5460ACPICA cache manager. Jung-uk Kim.
5461
5462Example Code and Data Size: These are the sizes for the OS-independent
5463acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5464debug version of the code includes the debug output trace mechanism and
5465has a much larger code and data size.
5466
5467  Previous Release:
5468    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
5469    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
5470  Current Release:
5471    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
5472    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
5473
5474
54752) iASL Compiler/Disassembler and Tools:
5476
5477iASL/Disassembler: Fixed several issues with the definition of the ACPI
54785.0 RASF table (RAS Feature Table). This change incorporates late changes
5479that were made to the ACPI 5.0 specification.
5480
5481iASL/Disassembler: Added full support for the following new ACPI tables:
5482  1) The MTMR table (MID Timer Table)
5483  2) The VRTC table (Virtual Real Time Clock Table).
5484Includes header file, disassembler, table compiler, and template support
5485for both tables.
5486
5487iASL: Implemented compile-time validation of package objects returned by
5488predefined names. This new feature validates static package objects
5489returned by the various predefined names defined to return packages. Both
5490object types and package lengths are validated, for both parent packages
5491and sub-packages, if any. The code is similar in structure and behavior
5492to
5493the runtime repair mechanism within the AML interpreter and uses the
5494existing predefined name information table. Adds a new file, aslprepkg.c.
5495ACPICA BZ 938.
5496
5497iASL: Implemented auto-detection of binary ACPI tables for disassembly.
5498This feature detects a binary file with a valid ACPI table header and
5499invokes the disassembler automatically. Eliminates the need to
5500specifically invoke the disassembler with the -d option. ACPICA BZ 862.
5501
5502iASL/Disassembler: Added several warnings for the case where there are
5503unresolved control methods during the disassembly. This can potentially
5504cause errors when the output file is compiled, because the disassembler
5505assumes zero method arguments in these cases (it cannot determine the
5506actual number of arguments without resolution/definition of the method).
5507
5508Debugger: Added support to display all resources with a single command.
5509Invocation of the resources command with no arguments will now display
5510all
5511resources within the current namespace.
5512
5513AcpiHelp: Added descriptive text for each ACPICA exception code displayed
5514via the -e option.
5515
5516----------------------------------------
551717 January 2013. Summary of changes for version 20130117:
5518
55191) ACPICA Kernel-resident Subsystem:
5520
5521Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
5522return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
5523objects to return a package containing one integer, most BIOS code
5524returns
5525two integers and the previous code reflects that. However, we also need
5526to
5527support BIOS code that actually implements to the ACPI spec, and this
5528change reflects this.
5529
5530Fixed two issues with the ACPI_DEBUG_PRINT macros:
55311) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
5532C compilers that require this support.
55332) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
5534ACPI_DEBUG is already used by many of the various hosts.
5535
5536Updated all ACPICA copyrights and signons to 2013. Added the 2013
5537copyright to all module headers and signons, including the standard Linux
5538header. This affects virtually every file in the ACPICA core subsystem,
5539iASL compiler, all ACPICA utilities, and the test suites.
5540
5541Example Code and Data Size: These are the sizes for the OS-independent
5542acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5543debug version of the code includes the debug output trace mechanism and
5544has a much larger code and data size.
5545
5546  Previous Release:
5547    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
5548    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
5549  Current Release:
5550    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
5551    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
5552
5553
55542) iASL Compiler/Disassembler and Tools:
5555
5556Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
5557prevent a possible fault on some hosts. Some C libraries modify the arg
5558pointer parameter to vfprintf making it difficult to call it twice in the
5559AcpiOsVprintf function. Use a local buffer to workaround this issue. This
5560does not affect the Windows OSL since the Win C library does not modify
5561the arg pointer. Chao Guan, Bob Moore.
5562
5563iASL: Fixed a possible infinite loop when the maximum error count is
5564reached. If an output file other than the .AML file is specified (such as
5565a listing file), and the maximum number of errors is reached, do not
5566attempt to flush data to the output file(s) as the compiler is aborting.
5567This can cause an infinite loop as the max error count code essentially
5568keeps calling itself.
5569
5570iASL/Disassembler: Added an option (-in) to ignore NOOP
5571opcodes/operators.
5572Implemented for both the compiler and the disassembler. Often, the NOOP
5573opcode is used as padding for packages that are changed dynamically by
5574the
5575BIOS. When disassembled and recompiled, these NOOPs will cause syntax
5576errors. This option causes the disassembler to ignore all NOOP opcodes
5577(0xA3), and it also causes the compiler to ignore all ASL source code
5578NOOP
5579statements as well.
5580
5581Debugger: Enhanced the Sleep command to execute all sleep states. This
5582change allows Sleep to be invoked with no arguments and causes the
5583debugger to execute all of the sleep states, 0-5, automatically.
5584
5585----------------------------------------
558620 December 2012. Summary of changes for version 20121220:
5587
55881) ACPICA Kernel-resident Subsystem:
5589
5590Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
5591alternate entry point for AcpiWalkResources and improves the usability of
5592the resource manager by accepting as input a buffer containing the output
5593of either a _CRS, _PRS, or _AEI method. The key functionality is that the
5594input buffer is not deleted by this interface so that it can be used by
5595the host later. See the ACPICA reference for details.
5596
5597Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
5598(DSDT version < 2). The constant will be truncated and this warning
5599reflects that behavior.
5600
5601Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
5602ExtendedInterrupt, and GpioInt descriptors. This change adds support to
5603both get and set the new wake bit in these descriptors, separately from
5604the existing share bit. Reported by Aaron Lu.
5605
5606Interpreter: Fix Store() when an implicit conversion is not possible. For
5607example, in the cases such as a store of a string to an existing package
5608object, implement the store as a CopyObject(). This is a small departure
5609from the ACPI specification which states that the control method should
5610be
5611aborted in this case. However, the ASLTS suite depends on this behavior.
5612
5613Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
5614macros: check if debug output is currently enabled as soon as possible to
5615minimize performance impact if debug is in fact not enabled.
5616
5617Source code restructuring: Cleanup to improve modularity. The following
5618new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
5619psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
5620Associated makefiles and project files have been updated.
5621
5622Changed an exception code for LoadTable operator. For the case where one
5623of the input strings is too long, change the returned exception code from
5624AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
5625
5626Fixed a possible memory leak in dispatcher error path. On error, delete
5627the mutex object created during method mutex creation. Reported by
5628tim.gardner@canonical.com.
5629
5630Example Code and Data Size: These are the sizes for the OS-independent
5631acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5632debug version of the code includes the debug output trace mechanism and
5633has a much larger code and data size.
5634
5635  Previous Release:
5636    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
5637    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5638  Current Release:
5639    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
5640    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
5641
5642
56432) iASL Compiler/Disassembler and Tools:
5644
5645iASL: Disallow a method call as argument to the ObjectType ASL operator.
5646This change tracks an errata to the ACPI 5.0 document. The AML grammar
5647will not allow the interpreter to differentiate between a method and a
5648method invocation when these are used as an argument to the ObjectType
5649operator. The ACPI specification change is to disallow a method
5650invocation
5651(UserTerm) for the ObjectType operator.
5652
5653Finish support for the TPM2 and CSRT tables in the headers, table
5654compiler, and disassembler.
5655
5656Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
5657always expires immediately if the semaphore is not available. The
5658original
5659code was using a relative-time timeout, but sem_timedwait requires the
5660use
5661of an absolute time.
5662
5663iASL: Added a remark if the Timer() operator is used within a 32-bit
5664table. This operator returns a 64-bit time value that will be truncated
5665within a 32-bit table.
5666
5667iASL Source code restructuring: Cleanup to improve modularity. The
5668following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
5669aslmethod.c, and aslfileio.c. Associated makefiles and project files have
5670been updated.
5671
5672
5673----------------------------------------
567414 November 2012. Summary of changes for version 20121114:
5675
56761) ACPICA Kernel-resident Subsystem:
5677
5678Implemented a performance enhancement for ACPI/AML Package objects. This
5679change greatly increases the performance of Package objects within the
5680interpreter. It changes the processing of reference counts for packages
5681by
5682optimizing for the most common case where the package sub-objects are
5683either Integers, Strings, or Buffers. Increases the overall performance
5684of
5685the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
56862X.)
5687Chao Guan. ACPICA BZ 943.
5688
5689Implemented and deployed common macros to extract flag bits from resource
5690descriptors. Improves readability and maintainability of the code. Fixes
5691a
5692problem with the UART serial bus descriptor for the number of data bits
5693flags (was incorrectly 2 bits, should be 3).
5694
5695Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
5696of the macros and changed the SETx macros to the style of (destination,
5697source). Also added ACPI_CASTx companion macros. Lv Zheng.
5698
5699Example Code and Data Size: These are the sizes for the OS-independent
5700acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5701debug version of the code includes the debug output trace mechanism and
5702has a much larger code and data size.
5703
5704  Previous Release:
5705    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
5706    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5707  Current Release:
5708    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
5709    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5710
5711
57122) iASL Compiler/Disassembler and Tools:
5713
5714Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
5715adds the ShareAndWake and ExclusiveAndWake flags which were added to the
5716Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
5717
5718Disassembler: Fixed a problem with external declaration generation. Fixes
5719a problem where an incorrect pathname could be generated for an external
5720declaration if the original reference to the object includes leading
5721carats (^). ACPICA BZ 984.
5722
5723Debugger: Completed a major update for the Disassemble<method> command.
5724This command was out-of-date and did not properly disassemble control
5725methods that had any reasonable complexity. This fix brings the command
5726up
5727to the same level as the rest of the disassembler. Adds one new file,
5728dmdeferred.c, which is existing code that is now common with the main
5729disassembler and the debugger disassemble command. ACPICA MZ 978.
5730
5731iASL: Moved the parser entry prototype to avoid a duplicate declaration.
5732Newer versions of Bison emit this prototype, so moved the prototype out
5733of
5734the iASL header to where it is actually used in order to avoid a
5735duplicate
5736declaration.
5737
5738iASL/Tools: Standardized use of the stream I/O functions:
5739  1) Ensure check for I/O error after every fopen/fread/fwrite
5740  2) Ensure proper order of size/count arguments for fread/fwrite
5741  3) Use test of (Actual != Requested) after all fwrite, and most fread
5742  4) Standardize I/O error messages
5743Improves reliability and maintainability of the code. Bob Moore, Lv
5744Zheng.
5745ACPICA BZ 981.
5746
5747Disassembler: Prevent duplicate External() statements. During generation
5748of external statements, detect similar pathnames that are actually
5749duplicates such as these:
5750  External (\ABCD)
5751  External (ABCD)
5752Remove all leading '\' characters from pathnames during the external
5753statement generation so that duplicates will be detected and tossed.
5754ACPICA BZ 985.
5755
5756Tools: Replace low-level I/O with stream I/O functions. Replace
5757open/read/write/close with the stream I/O equivalents
5758fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
5759Moore.
5760
5761AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
5762name header so that AcpiXtract recognizes the output file/table.
5763
5764iASL: Remove obsolete -2 option flag. Originally intended to force the
5765compiler/disassembler into an ACPI 2.0 mode, this was never implemented
5766and the entire concept is now obsolete.
5767
5768----------------------------------------
576918 October 2012. Summary of changes for version 20121018:
5770
5771
57721) ACPICA Kernel-resident Subsystem:
5773
5774Updated support for the ACPI 5.0 MPST table. Fixes some problems
5775introduced by late changes to the table as it was added to the ACPI 5.0
5776specification. Includes header, disassembler, and data table compiler
5777support as well as a new version of the MPST template.
5778
5779AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
57805.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
5781methods: _HID, _CID, and _UID.
5782
5783Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
5784ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
5785name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
5786names for their various drivers. Affects the AcpiGetObjectInfo external
5787interface, and other internal interfaces as well.
5788
5789Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
5790This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
5791on machines that support non-aligned transfers. Optimizes for this case
5792rather than using a strncpy. With assistance from Zheng Lv.
5793
5794Resource Manager: Small fix for buffer size calculation. Fixed a one byte
5795error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
5796
5797Added a new debug print message for AML mutex objects that are force-
5798released. At control method termination, any currently acquired mutex
5799objects are force-released. Adds a new debug-only message for each one
5800that is released.
5801
5802Audited/updated all ACPICA return macros and the function debug depth
5803counter: 1) Ensure that all functions that use the various TRACE macros
5804also use the appropriate ACPICA return macros. 2) Ensure that all normal
5805return statements surround the return expression (value) with parens to
5806ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
5807Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
5808
5809Global source code changes/maintenance: All extra lines at the start and
5810end of each source file have been removed for consistency. Also, within
5811comments, all new sentences start with a single space instead of a double
5812space, again for consistency across the code base.
5813
5814Example Code and Data Size: These are the sizes for the OS-independent
5815acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5816debug version of the code includes the debug output trace mechanism and
5817has a much larger code and data size.
5818
5819  Previous Release:
5820    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
5821    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
5822  Current Release:
5823    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
5824    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5825
5826
58272) iASL Compiler/Disassembler and Tools:
5828
5829AcpiExec: Improved the algorithm used for memory leak/corruption
5830detection. Added some intelligence to the code that maintains the global
5831list of allocated memory. The list is now ordered by allocated memory
5832address, significantly improving performance. When running AcpiExec on
5833the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
5834on the platform and/or the environment. Note, this performance
5835enhancement affects the AcpiExec utility only, not the kernel-resident
5836ACPICA code.
5837
5838Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
5839the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
5840incorrect table offset reported for invalid opcodes. Report the original
584132-bit value for bad ACPI_NAMEs (as well as the repaired name.)
5842
5843Disassembler: Enhanced the -vt option to emit the binary table data in
5844hex format to assist with debugging.
5845
5846Fixed a potential filename buffer overflow in osunixdir.c. Increased the
5847size of file structure. Colin Ian King.
5848
5849----------------------------------------
585013 September 2012. Summary of changes for version 20120913:
5851
5852
58531) ACPICA Kernel-resident Subsystem:
5854
5855ACPI 5.0: Added two new notify types for the Hardware Error Notification
5856Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
5857and
5858MCE(6).
5859
5860Table Manager: Merged/removed duplicate code in the root table resize
5861functions. One function is external, the other is internal. Lv Zheng,
5862ACPICA
5863BZ 846.
5864
5865Makefiles: Completely removed the obsolete "Linux" makefiles under
5866acpica/generate/linux. These makefiles are obsolete and have been
5867replaced
5868by
5869the generic unix makefiles under acpica/generate/unix.
5870
5871Makefiles: Ensure that binary files always copied properly. Minor rule
5872change
5873to ensure that the final binary output files are always copied up to the
5874appropriate binary directory (bin32 or bin64.)
5875
5876Example Code and Data Size: These are the sizes for the OS-independent
5877acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5878debug
5879version of the code includes the debug output trace mechanism and has a
5880much
5881larger code and data size.
5882
5883  Previous Release:
5884    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
5885    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
5886  Current Release:
5887    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
5888    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
5889
5890
58912) iASL Compiler/Disassembler and Tools:
5892
5893Disassembler: Fixed a possible fault during the disassembly of resource
5894descriptors when a second parse is required because of the invocation of
5895external control methods within the table. With assistance from
5896adq@lidskialf.net. ACPICA BZ 976.
5897
5898iASL: Fixed a namepath optimization problem. An error can occur if the
5899parse
5900node that contains the namepath to be optimized does not have a parent
5901node
5902that is a named object. This change fixes the problem.
5903
5904iASL: Fixed a regression where the AML file is not deleted on errors. The
5905AML
5906output file should be deleted if there are any errors during the
5907compiler.
5908The
5909only exception is if the -f (force output) option is used. ACPICA BZ 974.
5910
5911iASL: Added a feature to automatically increase internal line buffer
5912sizes.
5913Via realloc(), automatically increase the internal line buffer sizes as
5914necessary to support very long source code lines. The current version of
5915the
5916preprocessor requires a buffer long enough to contain full source code
5917lines.
5918This change increases the line buffer(s) if the input lines go beyond the
5919current buffer size. This eliminates errors that occurred when a source
5920code
5921line was longer than the buffer.
5922
5923iASL: Fixed a problem with constant folding in method declarations. The
5924SyncLevel term is a ByteConstExpr, and incorrect code would be generated
5925if a
5926Type3 opcode was used.
5927
5928Debugger: Improved command help support. For incorrect argument count,
5929display
5930full help for the command. For help command itself, allow an argument to
5931specify a command.
5932
5933Test Suites: Several bug fixes for the ASLTS suite reduces the number of
5934errors during execution of the suite. Guan Chao.
5935
5936----------------------------------------
593716 August 2012. Summary of changes for version 20120816:
5938
5939
59401) ACPICA Kernel-resident Subsystem:
5941
5942Removed all use of the deprecated _GTS and _BFS predefined methods. The
5943_GTS
5944(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
5945deprecated and will probably be removed from the ACPI specification.
5946Windows
5947does not invoke them, and reportedly never will. The final nail in the
5948coffin
5949is that the ACPI specification states that these methods must be run with
5950interrupts off, which is not going to happen in a kernel interpreter.
5951Note:
5952Linux has removed all use of the methods also. It was discovered that
5953invoking these functions caused failures on some machines, probably
5954because
5955they were never tested since Windows does not call them. Affects two
5956external
5957interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
5958ACPICA BZ 969.
5959
5960Implemented support for complex bit-packed buffers returned from the _PLD
5961(Physical Location of Device) predefined method. Adds a new external
5962interface, AcpiDecodePldBuffer that parses the buffer into a more usable
5963C
5964structure. Note: C Bitfields cannot be used for this type of predefined
5965structure since the memory layout of individual bitfields is not defined
5966by
5967the C language. In addition, there are endian concerns where a compiler
5968will
5969change the bitfield ordering based on the machine type. The new ACPICA
5970interface eliminates these issues, and should be called after _PLD is
5971executed. ACPICA BZ 954.
5972
5973Implemented a change to allow a scope change to root (via "Scope (\)")
5974during
5975execution of module-level ASL code (code that is executed at table load
5976time.) Lin Ming.
5977
5978Added the Windows8/Server2012 string for the _OSI method. This change
5979adds
5980a
5981new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
59822012.
5983
5984Added header support for the new ACPI tables DBG2 (Debug Port Table Type
59852)
5986and CSRT (Core System Resource Table).
5987
5988Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
5989names. This simplifies access to the buffers returned by these predefined
5990names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
5991
5992GPE support: Removed an extraneous parameter from the various low-level
5993internal GPE functions. Tang Feng.
5994
5995Removed the linux makefiles from the unix packages. The generate/linux
5996makefiles are obsolete and have been removed from the unix tarball
5997release
5998packages. The replacement makefiles are under generate/unix, and there is
5999a
6000top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
6001
6002Updates for Unix makefiles:
60031) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
60042) Update linker flags (move to end of command line) for AcpiExec
6005utility.
6006Guan Chao.
6007
6008Split ACPICA initialization functions to new file, utxfinit.c. Split from
6009utxface.c to improve modularity and reduce file size.
6010
6011Example Code and Data Size: These are the sizes for the OS-independent
6012acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6013debug version of the code includes the debug output trace mechanism and
6014has a
6015much larger code and data size.
6016
6017  Previous Release:
6018    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
6019    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
6020  Current Release:
6021    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
6022    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
6023
6024
60252) iASL Compiler/Disassembler and Tools:
6026
6027iASL: Fixed a problem with constant folding for fixed-length constant
6028expressions. The constant-folding code was not being invoked for constant
6029expressions that allow the use of type 3/4/5 opcodes to generate
6030constants
6031for expressions such as ByteConstExpr, WordConstExpr, etc. This could
6032result
6033in the generation of invalid AML bytecode. ACPICA BZ 970.
6034
6035iASL: Fixed a generation issue on newer versions of Bison. Newer versions
6036apparently automatically emit some of the necessary externals. This
6037change
6038handles these versions in order to eliminate generation warnings.
6039
6040Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
6041
6042Disassembler: Add support to decode _PLD buffers. The decoded buffer
6043appears
6044within comments in the output file.
6045
6046Debugger: Fixed a regression with the "Threads" command where
6047AE_BAD_PARAMETER was always returned.
6048
6049----------------------------------------
605011 July 2012. Summary of changes for version 20120711:
6051
60521) ACPICA Kernel-resident Subsystem:
6053
6054Fixed a possible fault in the return package object repair code. Fixes a
6055problem that can occur when a lone package object is wrapped with an
6056outer
6057package object in order to force conformance to the ACPI specification.
6058Can
6059affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
6060_DLM,
6061_CSD, _PSD, _TSD.
6062
6063Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
6064PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
6065ARB_DIS bit must be implemented in the host-dependent C3 processor power
6066state
6067support. Note, ARB_DIS is obsolete and only applies to older chipsets,
6068both
6069Intel and other vendors. (for Intel: ICH4-M and earlier)
6070
6071This change removes the code to disable/enable bus master arbitration
6072during
6073suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
6074causes
6075resume problems on some machines. The change has been in use for over
6076seven
6077years within Linux.
6078
6079Implemented two new external interfaces to support host-directed dynamic
6080ACPI
6081table load and unload. They are intended to simplify the host
6082implementation
6083of hot-plug support:
6084  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
6085  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
6086table.
6087See the ACPICA reference for additional details. Adds one new file,
6088components/tables/tbxfload.c
6089
6090Implemented and deployed two new interfaces for errors and warnings that
6091are
6092known to be caused by BIOS/firmware issues:
6093  AcpiBiosError: Prints "ACPI Firmware Error" message.
6094  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
6095Deployed these new interfaces in the ACPICA Table Manager code for ACPI
6096table
6097and FADT errors. Additional deployment to be completed as appropriate in
6098the
6099future. The associated conditional macros are ACPI_BIOS_ERROR and
6100ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
6101ACPICA
6102BZ
6103843.
6104
6105Implicit notify support: ensure that no memory allocation occurs within a
6106critical region. This fix moves a memory allocation outside of the time
6107that a
6108spinlock is held. Fixes issues on systems that do not allow this
6109behavior.
6110Jung-uk Kim.
6111
6112Split exception code utilities and tables into a new file,
6113utilities/utexcep.c
6114
6115Example Code and Data Size: These are the sizes for the OS-independent
6116acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6117debug
6118version of the code includes the debug output trace mechanism and has a
6119much
6120larger code and data size.
6121
6122  Previous Release:
6123    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
6124    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
6125  Current Release:
6126    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
6127    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
6128
6129
61302) iASL Compiler/Disassembler and Tools:
6131
6132iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
6133of
61340. Jung-uk Kim.
6135
6136Debugger: Enhanced the "tables" command to emit additional information
6137about
6138the current set of ACPI tables, including the owner ID and flags decode.
6139
6140Debugger: Reimplemented the "unload" command to use the new
6141AcpiUnloadParentTable external interface. This command was disable
6142previously
6143due to need for an unload interface.
6144
6145AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
6146option
6147will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
6148
6149----------------------------------------
615020 June 2012. Summary of changes for version 20120620:
6151
6152
61531) ACPICA Kernel-resident Subsystem:
6154
6155Implemented support to expand the "implicit notify" feature to allow
6156multiple
6157devices to be notified by a single GPE. This feature automatically
6158generates a
6159runtime device notification in the absence of a BIOS-provided GPE control
6160method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
6161notify is
6162provided by ACPICA for Windows compatibility, and is a workaround for
6163BIOS
6164AML
6165code errors. See the description of the AcpiSetupGpeForWake interface in
6166the
6167APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
6168
6169Changed some comments and internal function names to simplify and ensure
6170correctness of the Linux code translation. No functional changes.
6171
6172Example Code and Data Size: These are the sizes for the OS-independent
6173acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6174debug
6175version of the code includes the debug output trace mechanism and has a
6176much
6177larger code and data size.
6178
6179  Previous Release:
6180    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
6181    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
6182  Current Release:
6183    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
6184    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
6185
6186
61872) iASL Compiler/Disassembler and Tools:
6188
6189Disassembler: Added support to emit short, commented descriptions for the
6190ACPI
6191predefined names in order to improve the readability of the disassembled
6192output. ACPICA BZ 959. Changes include:
6193  1) Emit descriptions for all standard predefined names (_INI, _STA,
6194_PRW,
6195etc.)
6196  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
6197  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
6198etc.)
6199
6200AcpiSrc: Fixed several long-standing Linux code translation issues.
6201Argument
6202descriptions in function headers are now translated properly to lower
6203case
6204and
6205underscores. ACPICA BZ 961. Also fixes translation problems such as
6206these:
6207(old -> new)
6208  i_aSL -> iASL
6209  00-7_f -> 00-7F
6210  16_k -> 16K
6211  local_fADT -> local_FADT
6212  execute_oSI -> execute_OSI
6213
6214iASL: Fixed a problem where null bytes were inadvertently emitted into
6215some
6216listing files.
6217
6218iASL: Added the existing debug options to the standard help screen. There
6219are
6220no longer two different help screens. ACPICA BZ 957.
6221
6222AcpiHelp: Fixed some typos in the various predefined name descriptions.
6223Also
6224expand some of the descriptions where appropriate.
6225
6226iASL: Fixed the -ot option (display compile times/statistics). Was not
6227working
6228properly for standard output; only worked for the debug file case.
6229
6230----------------------------------------
623118 May 2012. Summary of changes for version 20120518:
6232
6233
62341) ACPICA Core Subsystem:
6235
6236Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
6237defined
6238to block until asynchronous events such as notifies and GPEs have
6239completed.
6240Within ACPICA, it is only called before a notify or GPE handler is
6241removed/uninstalled. It also may be useful for the host OS within related
6242drivers such as the Embedded Controller driver. See the ACPICA reference
6243for
6244additional information. ACPICA BZ 868.
6245
6246ACPI Tables: Added a new error message for a possible overflow failure
6247during
6248the conversion of FADT 32-bit legacy register addresses to internal
6249common
625064-
6251bit GAS structure representation. The GAS has a one-byte "bit length"
6252field,
6253thus limiting the register length to 255 bits. ACPICA BZ 953.
6254
6255Example Code and Data Size: These are the sizes for the OS-independent
6256acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6257debug
6258version of the code includes the debug output trace mechanism and has a
6259much
6260larger code and data size.
6261
6262  Previous Release:
6263    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6264    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
6265  Current Release:
6266    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
6267    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
6268
6269
62702) iASL Compiler/Disassembler and Tools:
6271
6272iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
6273macro.
6274This keyword was added late in the ACPI 5.0 release cycle and was not
6275implemented until now.
6276
6277Disassembler: Added support for Operation Region externals. Adds missing
6278support for operation regions that are defined in another table, and
6279referenced locally via a Field or BankField ASL operator. Now generates
6280the
6281correct External statement.
6282
6283Disassembler: Several additional fixes for the External() statement
6284generation
6285related to some ASL operators. Also, order the External() statements
6286alphabetically in the disassembler output. Fixes the External()
6287generation
6288for
6289the Create* field, Alias, and Scope operators:
6290 1) Create* buffer field operators - fix type mismatch warning on
6291disassembly
6292 2) Alias - implement missing External support
6293 3) Scope - fix to make sure all necessary externals are emitted.
6294
6295iASL: Improved pathname support. For include files, merge the prefix
6296pathname
6297with the file pathname and eliminate unnecessary components. Convert
6298backslashes in all pathnames to forward slashes, for readability. Include
6299file
6300pathname changes affect both #include and Include() type operators.
6301
6302iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
6303end
6304of a valid line by inserting a newline and then returning the EOF during
6305the
6306next call to GetNextLine. Prevents the line from being ignored due to EOF
6307condition.
6308
6309iASL: Implemented some changes to enhance the IDE support (-vi option.)
6310Error
6311and Warning messages are now correctly recognized for both the source
6312code
6313browser and the global error and warning counts.
6314
6315----------------------------------------
631620 April 2012. Summary of changes for version 20120420:
6317
6318
63191) ACPICA Core Subsystem:
6320
6321Implemented support for multiple notify handlers. This change adds
6322support
6323to
6324allow multiple system and device notify handlers on Device, Thermal Zone,
6325and
6326Processor objects. This can simplify the host OS notification
6327implementation.
6328Also re-worked and restructured the entire notify support code to
6329simplify
6330handler installation, handler removal, notify event queuing, and notify
6331dispatch to handler(s). Note: there can still only be two global notify
6332handlers - one for system notifies and one for device notifies. There are
6333no
6334changes to the existing handler install/remove interfaces. Lin Ming, Bob
6335Moore, Rafael Wysocki.
6336
6337Fixed a regression in the package repair code where the object reference
6338count was calculated incorrectly. Regression was introduced in the commit
6339"Support to add Package wrappers".
6340
6341Fixed a couple possible memory leaks in the AML parser, in the error
6342recovery
6343path. Jesper Juhl, Lin Ming.
6344
6345Example Code and Data Size: These are the sizes for the OS-independent
6346acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6347debug version of the code includes the debug output trace mechanism and
6348has a
6349much larger code and data size.
6350
6351  Previous Release:
6352    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6353    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6354  Current Release:
6355    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6356    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
6357
6358
63592) iASL Compiler/Disassembler and Tools:
6360
6361iASL: Fixed a problem with the resource descriptor support where the
6362length
6363of the StartDependentFn and StartDependentFnNoPrio descriptors were not
6364included in cumulative descriptor offset, resulting in incorrect values
6365for
6366resource tags within resource descriptors appearing after a
6367StartDependent*
6368descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
6369
6370iASL and Preprocessor: Implemented full support for the #line directive
6371to
6372correctly track original source file line numbers through the .i
6373preprocessor
6374output file - for error and warning messages.
6375
6376iASL: Expand the allowable byte constants for address space IDs.
6377Previously,
6378the allowable range was 0x80-0xFF (user-defined spaces), now the range is
63790x0A-0xFF to allow for custom and new IDs without changing the compiler.
6380
6381iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
6382
6383iASL: Add option to completely disable the preprocessor (-Pn).
6384
6385iASL: Now emit all error/warning messages to standard error (stderr) by
6386default (instead of the previous stdout).
6387
6388ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
6389Update
6390for resource descriptor offset fix above. Update/cleanup error output
6391routines. Enable and send iASL errors/warnings to an error logfile
6392(error.txt). Send all other iASL output to a logfile (compiler.txt).
6393Fixed
6394several extraneous "unrecognized operator" messages.
6395
6396----------------------------------------
639720 March 2012. Summary of changes for version 20120320:
6398
6399
64001) ACPICA Core Subsystem:
6401
6402Enhanced the sleep/wake interfaces to optionally execute the _GTS method
6403(Going To Sleep) and the _BFS method (Back From Sleep). Windows
6404apparently
6405does not execute these methods, and therefore these methods are often
6406untested. It has been seen on some systems where the execution of these
6407methods causes errors and also prevents the machine from entering S5. It
6408is
6409therefore suggested that host operating systems do not execute these
6410methods
6411by default. In the future, perhaps these methods can be optionally
6412executed
6413based on the age of the system and/or what is the newest version of
6414Windows
6415that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
6416and
6417AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
6418Ming.
6419
6420Fixed a problem where the length of the local/common FADT was set too
6421early.
6422The local FADT table length cannot be set to the common length until the
6423original length has been examined. There is code that checks the table
6424length
6425and sets various fields appropriately. This can affect older machines
6426with
6427early FADT versions. For example, this can cause inadvertent writes to
6428the
6429CST_CNT register. Julian Anastasov.
6430
6431Fixed a mapping issue related to a physical table override. Use the
6432deferred
6433mapping mechanism for tables loaded via the physical override OSL
6434interface.
6435This allows for early mapping before the virtual memory manager is
6436available.
6437Thomas Renninger, Bob Moore.
6438
6439Enhanced the automatic return-object repair code: Repair a common problem
6440with
6441predefined methods that are defined to return a variable-length Package
6442of
6443sub-objects. If there is only one sub-object, some BIOS ASL code
6444mistakenly
6445simply returns the single object instead of a Package with one sub-
6446object.
6447This new support will repair this error by wrapping a Package object
6448around
6449the original object, creating the correct and expected Package with one
6450sub-
6451object. Names that can be repaired in this manner include: _ALR, _CSD,
6452_HPX,
6453_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
6454939.
6455
6456Changed the exception code returned for invalid ACPI paths passed as
6457parameters to external interfaces such as AcpiEvaluateObject. Was
6458AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
6459
6460Example Code and Data Size: These are the sizes for the OS-independent
6461acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6462debug
6463version of the code includes the debug output trace mechanism and has a
6464much
6465larger code and data size.
6466
6467  Previous Release:
6468    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
6469    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6470  Current Release:
6471    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6472    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6473
6474
64752) iASL Compiler/Disassembler and Tools:
6476
6477iASL: Added the infrastructure and initial implementation of a integrated
6478C-
6479like preprocessor. This will simplify BIOS development process by
6480eliminating
6481the need for a separate preprocessing step during builds. On Windows, it
6482also
6483eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
6484features including full #define() macro support are still under
6485development.
6486These preprocessor directives are supported:
6487    #define
6488    #elif
6489    #else
6490    #endif
6491    #error
6492    #if
6493    #ifdef
6494    #ifndef
6495    #include
6496    #pragma message
6497    #undef
6498    #warning
6499In addition, these new command line options are supported:
6500    -D <symbol> Define symbol for preprocessor use
6501    -li         Create preprocessed output file (*.i)
6502    -P          Preprocess only and create preprocessor output file (*.i)
6503
6504Table Compiler: Fixed a problem where the equals operator within an
6505expression
6506did not work properly.
6507
6508Updated iASL to use the current versions of Bison/Flex. Updated the
6509Windows
6510project file to invoke these tools from the standard location. ACPICA BZ
6511904.
6512Versions supported:
6513    Flex for Windows:  V2.5.4
6514    Bison for Windows: V2.4.1
6515
6516----------------------------------------
651715 February 2012. Summary of changes for version 20120215:
6518
6519
65201) ACPICA Core Subsystem:
6521
6522There have been some major changes to the sleep/wake support code, as
6523described below (a - e).
6524
6525a) The AcpiLeaveSleepState has been split into two interfaces, similar to
6526AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
6527AcpiLeaveSleepStatePrep. This allows the host to perform actions between
6528the
6529time the _BFS method is called and the _WAK method is called. NOTE: all
6530hosts
6531must update their wake/resume code or else sleep/wake will not work
6532properly.
6533Rafael Wysocki.
6534
6535b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
6536_WAK
6537method. Some machines require that the GPEs are enabled before the _WAK
6538method
6539is executed. Thomas Renninger.
6540
6541c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
6542bit.
6543Some BIOS code assumes that WAK_STS will be cleared on resume and use it
6544to
6545determine whether the system is rebooting or resuming. Matthew Garrett.
6546
6547d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
6548Sleep) to
6549match the ACPI specification requirement. Rafael Wysocki.
6550
6551e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
6552registers within the V5 FADT. This support adds two new files:
6553hardware/hwesleep.c implements the support for the new registers. Moved
6554all
6555sleep/wake external interfaces to hardware/hwxfsleep.c.
6556
6557
6558Added a new OSL interface for ACPI table overrides,
6559AcpiOsPhysicalTableOverride. This interface allows the host to override a
6560table via a physical address, instead of the logical address required by
6561AcpiOsTableOverride. This simplifies the host implementation. Initial
6562implementation by Thomas Renninger. The ACPICA implementation creates a
6563single
6564shared function for table overrides that attempts both a logical and a
6565physical override.
6566
6567Expanded the OSL memory read/write interfaces to 64-bit data
6568(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
6569transfer support for GAS register structures passed to AcpiRead and
6570AcpiWrite.
6571
6572Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
6573custom
6574build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
6575model.
6576See the ACPICA reference for details. ACPICA BZ 942. This option removes
6577about
657810% of the code and 5% of the static data, and the following hardware
6579ACPI
6580features become unavailable:
6581    PM Event and Control registers
6582    SCI interrupt (and handler)
6583    Fixed Events
6584    General Purpose Events (GPEs)
6585    Global Lock
6586    ACPI PM timer
6587    FACS table (Waking vectors and Global Lock)
6588
6589Updated the unix tarball directory structure to match the ACPICA git
6590source
6591tree. This ensures that the generic unix makefiles work properly (in
6592generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
6593867.
6594
6595Updated the return value of the _REV predefined method to integer value 5
6596to
6597reflect ACPI 5.0 support.
6598
6599Moved the external ACPI PM timer interface prototypes to the public
6600acpixf.h
6601file where they belong.
6602
6603Example Code and Data Size: These are the sizes for the OS-independent
6604acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6605debug
6606version of the code includes the debug output trace mechanism and has a
6607much
6608larger code and data size.
6609
6610  Previous Release:
6611    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
6612    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
6613  Current Release:
6614    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
6615    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6616
6617
66182) iASL Compiler/Disassembler and Tools:
6619
6620Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
6621descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
6622incorrectly displayed.
6623
6624AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
6625specification.
6626
6627----------------------------------------
662811 January 2012. Summary of changes for version 20120111:
6629
6630
66311) ACPICA Core Subsystem:
6632
6633Implemented a new mechanism to allow host device drivers to check for
6634address
6635range conflicts with ACPI Operation Regions. Both SystemMemory and
6636SystemIO
6637address spaces are supported. A new external interface,
6638AcpiCheckAddressRange,
6639allows drivers to check an address range against the ACPI namespace. See
6640the
6641ACPICA reference for additional details. Adds one new file,
6642utilities/utaddress.c. Lin Ming, Bob Moore.
6643
6644Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
6645Control
6646and
6647Status registers, update the ACPI 5.0 flags, and update internal data
6648structures to handle an FADT larger than 256 bytes. The size of the ACPI
66495.0
6650FADT is 268 bytes.
6651
6652Updated all ACPICA copyrights and signons to 2012. Added the 2012
6653copyright to
6654all module headers and signons, including the standard Linux header. This
6655affects virtually every file in the ACPICA core subsystem, iASL compiler,
6656and
6657all ACPICA utilities.
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.3K Code, 24.9K Data, 117.2K Total
6668    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
6669  Current Release:
6670    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
6671    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
6672
6673
66742) iASL Compiler/Disassembler and Tools:
6675
6676Disassembler: fixed a problem with the automatic resource tag generation
6677support. Fixes a problem where the resource tags are inadvertently not
6678constructed if the table being disassembled contains external references
6679to
6680control methods. Moved the actual construction of the tags to after the
6681final
6682namespace is constructed (after 2nd parse is invoked due to external
6683control
6684method references.) ACPICA BZ 941.
6685
6686Table Compiler: Make all "generic" operators caseless. These are the
6687operators
6688like UINT8, String, etc. Making these caseless improves ease-of-use.
6689ACPICA BZ
6690934.
6691
6692----------------------------------------
669323 November 2011. Summary of changes for version 20111123:
6694
66950) ACPI 5.0 Support:
6696
6697This release contains full support for the ACPI 5.0 specification, as
6698summarized below.
6699
6700Reduced Hardware Support:
6701-------------------------
6702
6703This support allows for ACPI systems without the usual ACPI hardware.
6704This
6705support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
6706will
6707not attempt to initialize or use any of the usual ACPI hardware. Note,
6708when
6709this flag is set, all of the following ACPI hardware is assumed to be not
6710present and is not initialized or accessed:
6711
6712    General Purpose Events (GPEs)
6713    Fixed Events (PM1a/PM1b and PM Control)
6714    Power Management Timer and Console Buttons (power/sleep)
6715    Real-time Clock Alarm
6716    Global Lock
6717    System Control Interrupt (SCI)
6718    The FACS is assumed to be non-existent
6719
6720ACPI Tables:
6721------------
6722
6723All new tables and updates to existing tables are fully supported in the
6724ACPICA headers (for use by device drivers), the disassembler, and the
6725iASL
6726Data Table Compiler. ACPI 5.0 defines these new tables:
6727
6728    BGRT        /* Boot Graphics Resource Table */
6729    DRTM        /* Dynamic Root of Trust for Measurement table */
6730    FPDT        /* Firmware Performance Data Table */
6731    GTDT        /* Generic Timer Description Table */
6732    MPST        /* Memory Power State Table */
6733    PCCT        /* Platform Communications Channel Table */
6734    PMTT        /* Platform Memory Topology Table */
6735    RASF        /* RAS Feature table */
6736
6737Operation Regions/SpaceIDs:
6738---------------------------
6739
6740All new operation regions are fully supported by the iASL compiler, the
6741disassembler, and the ACPICA runtime code (for dispatch to region
6742handlers.)
6743The new operation region Space IDs are:
6744
6745    GeneralPurposeIo
6746    GenericSerialBus
6747
6748Resource Descriptors:
6749---------------------
6750
6751All new ASL resource descriptors are fully supported by the iASL
6752compiler,
6753the
6754ASL/AML disassembler, and the ACPICA runtime Resource Manager code
6755(including
6756all new predefined resource tags). New descriptors are:
6757
6758    FixedDma
6759    GpioIo
6760    GpioInt
6761    I2cSerialBus
6762    SpiSerialBus
6763    UartSerialBus
6764
6765ASL/AML Operators, New and Modified:
6766------------------------------------
6767
6768One new operator is added, the Connection operator, which is used to
6769associate
6770a GeneralPurposeIo or GenericSerialBus resource descriptor with
6771individual
6772field objects within an operation region. Several new protocols are
6773associated
6774with the AccessAs operator. All are fully supported by the iASL compiler,
6775disassembler, and runtime ACPICA AML interpreter:
6776
6777    Connection                      // Declare Field Connection
6778attributes
6779    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
6780    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
6781Protocol
6782    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
6783    RawDataBuffer                       // Data type for Vendor Data
6784fields
6785
6786Predefined ASL/AML Objects:
6787---------------------------
6788
6789All new predefined objects/control-methods are supported by the iASL
6790compiler
6791and the ACPICA runtime validation/repair (arguments and return values.)
6792New
6793predefined names include the following:
6794
6795Standard Predefined Names (Objects or Control Methods):
6796    _AEI, _CLS, _CPC, _CWS, _DEP,
6797    _DLM, _EVT, _GCP, _CRT, _GWS,
6798    _HRV, _PRE, _PSE, _SRT, _SUB.
6799
6800Resource Tags (Names used to access individual fields within resource
6801descriptors):
6802    _DBT, _DPL, _DRS, _END, _FLC,
6803    _IOR, _LIN, _MOD, _PAR, _PHA,
6804    _PIN, _PPI, _POL, _RXL, _SLV,
6805    _SPE, _STB, _TXL, _VEN.
6806
6807ACPICA External Interfaces:
6808---------------------------
6809
6810Several new interfaces have been defined for use by ACPI-related device
6811drivers and other host OS services:
6812
6813AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
6814to
6815acquire and release AML mutexes that are defined in the DSDT/SSDT tables
6816provided by the BIOS. They are intended to be used in conjunction with
6817the
6818ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
6819mutual exclusion with the AML code/interpreter.
6820
6821AcpiGetEventResources: Returns the (formatted) resource descriptors as
6822defined
6823by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
6824provides
6825resource descriptors associated with hardware-reduced platform events,
6826similar
6827to the AcpiGetCurrentResources interface.
6828
6829Operation Region Handlers: For General Purpose IO and Generic Serial Bus
6830operation regions, information about the Connection() object and any
6831optional
6832length information is passed to the region handler within the Context
6833parameter.
6834
6835AcpiBufferToResource: This interface converts a raw AML buffer containing
6836a
6837resource template or resource descriptor to the ACPI_RESOURCE internal
6838format
6839suitable for use by device drivers. Can be used by an operation region
6840handler
6841to convert the Connection() buffer object into a ACPI_RESOURCE.
6842
6843Miscellaneous/Tools/TestSuites:
6844-------------------------------
6845
6846Support for extended _HID names (Four alpha characters instead of three).
6847Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
6848Support for ACPI 5.0 features in the ASLTS test suite.
6849Fully updated documentation (ACPICA and iASL reference documents.)
6850
6851ACPI Table Definition Language:
6852-------------------------------
6853
6854Support for this language was implemented and released as a subsystem of
6855the
6856iASL compiler in 2010. (See the iASL compiler User Guide.)
6857
6858
6859Non-ACPI 5.0 changes for this release:
6860--------------------------------------
6861
68621) ACPICA Core Subsystem:
6863
6864Fix a problem with operation region declarations where a failure can
6865occur
6866if
6867the region name and an argument that evaluates to an object (such as the
6868region address) are in different namespace scopes. Lin Ming, ACPICA BZ
6869937.
6870
6871Do not abort an ACPI table load if an invalid space ID is found within.
6872This
6873will be caught later if the offending method is executed. ACPICA BZ 925.
6874
6875Fixed an issue with the FFixedHW space ID where the ID was not always
6876recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
6877
6878Fixed a problem with the 32-bit generation of the unix-specific OSL
6879(osunixxf.c). Lin Ming, ACPICA BZ 936.
6880
6881Several changes made to enable generation with the GCC 4.6 compiler.
6882ACPICA BZ
6883935.
6884
6885New error messages: Unsupported I/O requests (not 8/16/32 bit), and
6886Index/Bank
6887field registers out-of-range.
6888
68892) iASL Compiler/Disassembler and Tools:
6890
6891iASL: Implemented the __PATH__ operator, which returns the full pathname
6892of
6893the current source file.
6894
6895AcpiHelp: Automatically display expanded keyword information for all ASL
6896operators.
6897
6898Debugger: Add "Template" command to disassemble/dump resource template
6899buffers.
6900
6901Added a new master script to generate and execute the ASLTS test suite.
6902Automatically handles 32- and 64-bit generation. See tests/aslts.sh
6903
6904iASL: Fix problem with listing generation during processing of the
6905Switch()
6906operator where AML listing was disabled until the entire Switch block was
6907completed.
6908
6909iASL: Improve support for semicolon statement terminators. Fix "invalid
6910character" message for some cases when the semicolon is used. Semicolons
6911are
6912now allowed after every <Term> grammar element. ACPICA BZ 927.
6913
6914iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
6915923.
6916
6917Disassembler: Fix problem with disassembly of the DataTableRegion
6918operator
6919where an inadvertent "Unhandled deferred opcode" message could be
6920generated.
6921
69223) Example Code and Data Size
6923
6924These are the sizes for the OS-independent acpica.lib produced by the
6925Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6926includes the debug output trace mechanism and has a much larger code and
6927data
6928size.
6929
6930  Previous Release:
6931    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6932    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6933  Current Release:
6934    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
6935    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
6936
6937----------------------------------------
693822 September 2011. Summary of changes for version 20110922:
6939
69400) ACPI 5.0 News:
6941
6942Support for ACPI 5.0 in ACPICA has been underway for several months and
6943will
6944be released at the same time that ACPI 5.0 is officially released.
6945
6946The ACPI 5.0 specification is on track for release in the next few
6947months.
6948
69491) ACPICA Core Subsystem:
6950
6951Fixed a problem where the maximum sleep time for the Sleep() operator was
6952intended to be limited to two seconds, but was inadvertently limited to
695320
6954seconds instead.
6955
6956Linux and Unix makefiles: Added header file dependencies to ensure
6957correct
6958generation of ACPICA core code and utilities. Also simplified the
6959makefiles
6960considerably through the use of the vpath variable to specify search
6961paths.
6962ACPICA BZ 924.
6963
69642) iASL Compiler/Disassembler and Tools:
6965
6966iASL: Implemented support to check the access length for all fields
6967created to
6968access named Resource Descriptor fields. For example, if a resource field
6969is
6970defined to be two bits, a warning is issued if a CreateXxxxField() is
6971used
6972with an incorrect bit length. This is implemented for all current
6973resource
6974descriptor names. ACPICA BZ 930.
6975
6976Disassembler: Fixed a byte ordering problem with the output of 24-bit and
697756-
6978bit integers.
6979
6980iASL: Fixed a couple of issues associated with variable-length package
6981objects. 1) properly handle constants like One, Ones, Zero -- do not make
6982a
6983VAR_PACKAGE when these are used as a package length. 2) Allow the
6984VAR_PACKAGE
6985opcode (in addition to PACKAGE) when validating object types for
6986predefined
6987names.
6988
6989iASL: Emit statistics for all output files (instead of just the ASL input
6990and
6991AML output). Includes listings, hex files, etc.
6992
6993iASL: Added -G option to the table compiler to allow the compilation of
6994custom
6995ACPI tables. The only part of a table that is required is the standard
699636-
6997byte
6998ACPI header.
6999
7000AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
7001headers),
7002which also adds correct 64-bit support. Also, now all output filenames
7003are
7004completely lower case.
7005
7006AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
7007loading table files. A warning is issued for any such tables. The only
7008exception is an FADT. This also fixes a possible fault when attempting to
7009load
7010non-AML tables. ACPICA BZ 932.
7011
7012AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
7013a
7014missing table terminator could cause a fault when using the -p option.
7015
7016AcpiSrc: Fixed a possible divide-by-zero fault when generating file
7017statistics.
7018
70193) Example Code and Data Size
7020
7021These are the sizes for the OS-independent acpica.lib produced by the
7022Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
7023includes the debug output trace mechanism and has a much larger code and
7024data
7025size.
7026
7027  Previous Release (VC 9.0):
7028    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7029    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7030  Current Release (VC 9.0):
7031    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7032    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7033
7034
7035----------------------------------------
703623 June 2011. Summary of changes for version 20110623:
7037
70381) ACPI CA Core Subsystem:
7039
7040Updated the predefined name repair mechanism to not attempt repair of a
7041_TSS
7042return object if a _PSS object is present. We can only sort the _TSS
7043return
7044package if there is no _PSS within the same scope. This is because if
7045_PSS
7046is
7047present, the ACPI specification dictates that the _TSS Power Dissipation
7048field
7049is to be ignored, and therefore some BIOSs leave garbage values in the
7050_TSS
7051Power field(s). In this case, it is best to just return the _TSS package
7052as-
7053is. Reported by, and fixed with assistance from Fenghua Yu.
7054
7055Added an option to globally disable the control method return value
7056validation
7057and repair. This runtime option can be used to disable return value
7058repair
7059if
7060this is causing a problem on a particular machine. Also added an option
7061to
7062AcpiExec (-dr) to set this disable flag.
7063
7064All makefiles and project files: Major changes to improve generation of
7065ACPICA
7066tools. ACPICA BZ 912:
7067    Reduce default optimization levels to improve compatibility
7068    For Linux, add strict-aliasing=0 for gcc 4
7069    Cleanup and simplify use of command line defines
7070    Cleanup multithread library support
7071    Improve usage messages
7072
7073Linux-specific header: update handling of THREAD_ID and pthread. For the
707432-
7075bit case, improve casting to eliminate possible warnings, especially with
7076the
7077acpica tools.
7078
7079Example Code and Data Size: These are the sizes for the OS-independent
7080acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7081debug
7082version of the code includes the debug output trace mechanism and has a
7083much
7084larger code and data size.
7085
7086  Previous Release (VC 9.0):
7087    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
7088    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7089  Current Release (VC 9.0):
7090    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7091    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7092
70932) iASL Compiler/Disassembler and Tools:
7094
7095With this release, a new utility named "acpihelp" has been added to the
7096ACPICA
7097package. This utility summarizes the ACPI specification chapters for the
7098ASL
7099and AML languages. It generates under Linux/Unix as well as Windows, and
7100provides the following functionality:
7101    Find/display ASL operator(s) -- with description and syntax.
7102    Find/display ASL keyword(s) -- with exact spelling and descriptions.
7103    Find/display ACPI predefined name(s) -- with description, number
7104        of arguments, and the return value data type.
7105    Find/display AML opcode name(s) -- with opcode, arguments, and
7106grammar.
7107    Decode/display AML opcode -- with opcode name, arguments, and
7108grammar.
7109
7110Service Layers: Make multi-thread support configurable. Conditionally
7111compile
7112the multi-thread support so that threading libraries will not be linked
7113if
7114not
7115necessary. The only tool that requires multi-thread support is AcpiExec.
7116
7117iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
7118of
7119Bison appear to want the interface to yyerror to be a const char * (or at
7120least this is a problem when generating iASL on some systems.) ACPICA BZ
7121923
7122Pierre Lejeune.
7123
7124Tools: Fix for systems where O_BINARY is not defined. Only used for
7125Windows
7126versions of the tools.
7127
7128----------------------------------------
712927 May 2011. Summary of changes for version 20110527:
7130
71311) ACPI CA Core Subsystem:
7132
7133ASL Load() operator: Reinstate most restrictions on the incoming ACPI
7134table
7135signature. Now, only allow SSDT, OEMx, and a null signature. History:
7136    1) Originally, we checked the table signature for "SSDT" or "PSDT".
7137       (PSDT is now obsolete.)
7138    2) We added support for OEMx tables, signature "OEM" plus a fourth
7139       "don't care" character.
7140    3) Valid tables were encountered with a null signature, so we just
7141       gave up on validating the signature, (05/2008).
7142    4) We encountered non-AML tables such as the MADT, which caused
7143       interpreter errors and kernel faults. So now, we once again allow
7144       only SSDT, OEMx, and now, also a null signature. (05/2011).
7145
7146Added the missing _TDL predefined name to the global name list in order
7147to
7148enable validation. Affects both the core ACPICA code and the iASL
7149compiler.
7150
7151Example Code and Data Size: These are the sizes for the OS-independent
7152acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7153debug
7154version of the code includes the debug output trace mechanism and has a
7155much
7156larger code and data size.
7157
7158  Previous Release (VC 9.0):
7159    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
7160    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
7161  Current Release (VC 9.0):
7162    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
7163    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7164
71652) iASL Compiler/Disassembler and Tools:
7166
7167Debugger/AcpiExec: Implemented support for "complex" method arguments on
7168the
7169debugger command line. This adds support beyond simple integers --
7170including
7171Strings, Buffers, and Packages. Includes support for nested packages.
7172Increased the default command line buffer size to accommodate these
7173arguments.
7174See the ACPICA reference for details and syntax. ACPICA BZ 917.
7175
7176Debugger/AcpiExec: Implemented support for "default" method arguments for
7177the
7178Execute/Debug command. Now, the debugger will always invoke a control
7179method
7180with the required number of arguments -- even if the command line
7181specifies
7182none or insufficient arguments. It uses default integer values for any
7183missing
7184arguments. Also fixes a bug where only six method arguments maximum were
7185supported instead of the required seven.
7186
7187Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
7188and
7189also return status in order to prevent buffer overruns. See the ACPICA
7190reference for details and syntax. ACPICA BZ 921
7191
7192iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
7193makefiles to simplify support for the two different but similar parser
7194generators, bison and yacc.
7195
7196Updated the generic unix makefile for gcc 4. The default gcc version is
7197now
7198expected to be 4 or greater, since options specific to gcc 4 are used.
7199
7200----------------------------------------
720113 April 2011. Summary of changes for version 20110413:
7202
72031) ACPI CA Core Subsystem:
7204
7205Implemented support to execute a so-called "orphan" _REG method under the
7206EC
7207device. This change will force the execution of a _REG method underneath
7208the
7209EC
7210device even if there is no corresponding operation region of type
7211EmbeddedControl. Fixes a problem seen on some machines and apparently is
7212compatible with Windows behavior. ACPICA BZ 875.
7213
7214Added more predefined methods that are eligible for automatic NULL
7215package
7216element removal. This change adds another group of predefined names to
7217the
7218list
7219of names that can be repaired by having NULL package elements dynamically
7220removed. This group are those methods that return a single variable-
7221length
7222package containing simple data types such as integers, buffers, strings.
7223This
7224includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
7225_PSL,
7226_Sx,
7227and _TZD. ACPICA BZ 914.
7228
7229Split and segregated all internal global lock functions to a new file,
7230evglock.c.
7231
7232Updated internal address SpaceID for DataTable regions. Moved this
7233internal
7234space
7235id in preparation for ACPI 5.0 changes that will include some new space
7236IDs.
7237This
7238change should not affect user/host code.
7239
7240Example Code and Data Size: These are the sizes for the OS-independent
7241acpica.lib
7242produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
7243version of
7244the code includes the debug output trace mechanism and has a much larger
7245code
7246and
7247data size.
7248
7249  Previous Release (VC 9.0):
7250    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
7251    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
7252  Current Release (VC 9.0):
7253    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
7254    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
7255
72562) iASL Compiler/Disassembler and Tools:
7257
7258iASL/DTC: Major update for new grammar features. Allow generic data types
7259in
7260custom ACPI tables. Field names are now optional. Any line can be split
7261to
7262multiple lines using the continuation char (\). Large buffers now use
7263line-
7264continuation character(s) and no colon on the continuation lines. See the
7265grammar
7266update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
7267Moore.
7268
7269iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
7270statements.
7271Since the parser stuffs a "zero" as the return value for these statements
7272(due
7273to
7274the underlying AML grammar), they were seen as "return with value" by the
7275iASL
7276semantic checking. They are now seen correctly as "null" return
7277statements.
7278
7279iASL: Check if a_REG declaration has a corresponding Operation Region.
7280Adds a
7281check for each _REG to ensure that there is in fact a corresponding
7282operation
7283region declaration in the same scope. If not, the _REG method is not very
7284useful
7285since it probably won't be executed. ACPICA BZ 915.
7286
7287iASL/DTC: Finish support for expression evaluation. Added a new
7288expression
7289parser
7290that implements c-style operator precedence and parenthesization. ACPICA
7291bugzilla
7292908.
7293
7294Disassembler/DTC: Remove support for () and <> style comments in data
7295tables.
7296Now
7297that DTC has full expression support, we don't want to have comment
7298strings
7299that
7300start with a parentheses or a less-than symbol. Now, only the standard /*
7301and
7302//
7303comments are supported, as well as the bracket [] comments.
7304
7305AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
7306"unusual"
7307headers in the acpidump file. Update the header validation to support
7308these
7309tables. Problem introduced in previous AcpiXtract version in the change
7310to
7311support "wrong checksum" error messages emitted by acpidump utility.
7312
7313iASL: Add a * option to generate all template files (as a synonym for
7314ALL)
7315as
7316in
7317"iasl -T *" or "iasl -T ALL".
7318
7319iASL/DTC: Do not abort compiler on fatal errors. We do not want to
7320completely
7321abort the compiler on "fatal" errors, simply should abort the current
7322compile.
7323This allows multiple compiles with a single (possibly wildcard) compiler
7324invocation.
7325
7326----------------------------------------
732716 March 2011. Summary of changes for version 20110316:
7328
73291) ACPI CA Core Subsystem:
7330
7331Fixed a problem caused by a _PRW method appearing at the namespace root
7332scope
7333during the setup of wake GPEs. A fault could occur if a _PRW directly
7334under
7335the
7336root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
7337
7338Implemented support for "spurious" Global Lock interrupts. On some
7339systems, a
7340global lock interrupt can occur without the pending flag being set. Upon
7341a
7342GL
7343interrupt, we now ensure that a thread is actually waiting for the lock
7344before
7345signaling GL availability. Rafael Wysocki, Bob Moore.
7346
7347Example Code and Data Size: These are the sizes for the OS-independent
7348acpica.lib
7349produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
7350version of
7351the code includes the debug output trace mechanism and has a much larger
7352code
7353and
7354data size.
7355
7356  Previous Release (VC 9.0):
7357    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7358    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7359  Current Release (VC 9.0):
7360    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
7361    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
7362
73632) iASL Compiler/Disassembler and Tools:
7364
7365Implemented full support for the "SLIC" ACPI table. Includes support in
7366the
7367header files, disassembler, table compiler, and template generator. Bob
7368Moore,
7369Lin Ming.
7370
7371AcpiXtract: Correctly handle embedded comments and messages from
7372AcpiDump.
7373Apparently some or all versions of acpidump will occasionally emit a
7374comment
7375like
7376"Wrong checksum", etc., into the dump file. This was causing problems for
7377AcpiXtract. ACPICA BZ 905.
7378
7379iASL: Fix the Linux makefile by removing an inadvertent double file
7380inclusion.
7381ACPICA BZ 913.
7382
7383AcpiExec: Update installation of operation region handlers. Install one
7384handler
7385for a user-defined address space. This is used by the ASL test suite
7386(ASLTS).
7387
7388----------------------------------------
738911 February 2011. Summary of changes for version 20110211:
7390
73911) ACPI CA Core Subsystem:
7392
7393Added a mechanism to defer _REG methods for some early-installed
7394handlers.
7395Most user handlers should be installed before call to
7396AcpiEnableSubsystem.
7397However, Event handlers and region handlers should be installed after
7398AcpiInitializeObjects. Override handlers for the "default" regions should
7399be
7400installed early, however. This change executes all _REG methods for the
7401default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
7402chicken/egg issues between them. ACPICA BZ 848.
7403
7404Implemented an optimization for GPE detection. This optimization will
7405simply
7406ignore GPE registers that contain no enabled GPEs -- there is no need to
7407read the register since this information is available internally. This
7408becomes more important on machines with a large GPE space. ACPICA
7409bugzilla
7410884. Lin Ming. Suggestion from Joe Liu.
7411
7412Removed all use of the highly unreliable FADT revision field. The
7413revision
7414number in the FADT has been found to be completely unreliable and cannot
7415be
7416trusted. Only the actual table length can be used to infer the version.
7417This
7418change updates the ACPICA core and the disassembler so that both no
7419longer
7420even look at the FADT version and instead depend solely upon the FADT
7421length.
7422
7423Fix an unresolved name issue for the no-debug and no-error-message source
7424generation cases. The _AcpiModuleName was left undefined in these cases,
7425but
7426it is actually needed as a parameter to some interfaces. Define
7427_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
7428
7429Split several large files (makefiles and project files updated)
7430  utglobal.c   -> utdecode.c
7431  dbcomds.c    -> dbmethod.c dbnames.c
7432  dsopcode.c   -> dsargs.c dscontrol.c
7433  dsload.c     -> dsload2.c
7434  aslanalyze.c -> aslbtypes.c aslwalks.c
7435
7436Example Code and Data Size: These are the sizes for the OS-independent
7437acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7438debug version of the code includes the debug output trace mechanism and
7439has
7440a much larger code and data size.
7441
7442  Previous Release (VC 9.0):
7443    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7444    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7445  Current Release (VC 9.0):
7446    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7447    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7448
74492) iASL Compiler/Disassembler and Tools:
7450
7451iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
7452These are useful C-style macros with the standard definitions. ACPICA
7453bugzilla 898.
7454
7455iASL/DTC: Added support for integer expressions and labels. Support for
7456full
7457expressions for all integer fields in all ACPI tables. Support for labels
7458in
7459"generic" portions of tables such as UEFI. See the iASL reference manual.
7460
7461Debugger: Added a command to display the status of global handlers. The
7462"handlers" command will display op region, fixed event, and miscellaneous
7463global handlers. installation status -- and for op regions, whether
7464default
7465or user-installed handler will be used.
7466
7467iASL: Warn if reserved method incorrectly returns a value. Many
7468predefined
7469names are defined such that they do not return a value. If implemented as
7470a
7471method, issue a warning if such a name explicitly returns a value. ACPICA
7472Bugzilla 855.
7473
7474iASL: Added detection of GPE method name conflicts. Detects a conflict
7475where
7476there are two GPE methods of the form _Lxy and _Exy in the same scope.
7477(For
7478example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
7479
7480iASL/DTC: Fixed a couple input scanner issues with comments and line
7481numbers. Comment remover could get confused and miss a comment ending.
7482Fixed
7483a problem with line counter maintenance.
7484
7485iASL/DTC: Reduced the severity of some errors from fatal to error. There
7486is
7487no need to abort on simple errors within a field definition.
7488
7489Debugger: Simplified the output of the help command. All help output now
7490in
7491a single screen, instead of help subcommands. ACPICA Bugzilla 897.
7492
7493----------------------------------------
749412 January 2011. Summary of changes for version 20110112:
7495
74961) ACPI CA Core Subsystem:
7497
7498Fixed a race condition between method execution and namespace walks that
7499can
7500possibly cause a fault. The problem was apparently introduced in version
750120100528 as a result of a performance optimization that reduces the
7502number
7503of
7504namespace walks upon method exit by using the delete_namespace_subtree
7505function instead of the delete_namespace_by_owner function used
7506previously.
7507Bug is a missing namespace lock in the delete_namespace_subtree function.
7508dana.myers@oracle.com
7509
7510Fixed several issues and a possible fault with the automatic "serialized"
7511method support. History: This support changes a method to "serialized" on
7512the
7513fly if the method generates an AE_ALREADY_EXISTS error, indicating the
7514possibility that it cannot handle reentrancy. This fix repairs a couple
7515of
7516issues seen in the field, especially on machines with many cores:
7517
7518    1) Delete method children only upon the exit of the last thread,
7519       so as to not delete objects out from under other running threads
7520      (and possibly causing a fault.)
7521    2) Set the "serialized" bit for the method only upon the exit of the
7522       Last thread, so as to not cause deadlock when running threads
7523       attempt to exit.
7524    3) Cleanup the use of the AML "MethodFlags" and internal method flags
7525       so that there is no longer any confusion between the two.
7526
7527    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
7528
7529Debugger: Now lock the namespace for duration of a namespace dump.
7530Prevents
7531issues if the namespace is changing dynamically underneath the debugger.
7532Especially affects temporary namespace nodes, since the debugger displays
7533these also.
7534
7535Updated the ordering of include files. The ACPICA headers should appear
7536before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
7537set
7538any necessary compiler-specific defines, etc. Affects the ACPI-related
7539tools
7540and utilities.
7541
7542Updated all ACPICA copyrights and signons to 2011. Added the 2011
7543copyright
7544to all module headers and signons, including the Linux header. This
7545affects
7546virtually every file in the ACPICA core subsystem, iASL compiler, and all
7547utilities.
7548
7549Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
7550project files for VC++ 6.0 are now obsolete. New project files can be
7551found
7552under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
7553details.
7554
7555Example Code and Data Size: These are the sizes for the OS-independent
7556acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7557debug version of the code includes the debug output trace mechanism and
7558has a
7559much larger code and data size.
7560
7561  Previous Release (VC 6.0):
7562    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
7563    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
7564  Current Release (VC 9.0):
7565    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7566    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7567
75682) iASL Compiler/Disassembler and Tools:
7569
7570iASL: Added generic data types to the Data Table compiler. Add "generic"
7571data
7572types such as UINT32, String, Unicode, etc., to simplify the generation
7573of
7574platform-defined tables such as UEFI. Lin Ming.
7575
7576iASL: Added listing support for the Data Table Compiler. Adds listing
7577support
7578(-l) to display actual binary output for each line of input code.
7579
7580----------------------------------------
758109 December 2010. Summary of changes for version 20101209:
7582
75831) ACPI CA Core Subsystem:
7584
7585Completed the major overhaul of the GPE support code that was begun in
7586July
75872010. Major features include: removal of _PRW execution in ACPICA (host
7588executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
7589changes to existing interfaces, simplification of GPE handler operation,
7590and
7591a handful of new interfaces:
7592
7593    AcpiUpdateAllGpes
7594    AcpiFinishGpe
7595    AcpiSetupGpeForWake
7596    AcpiSetGpeWakeMask
7597    One new file, evxfgpe.c to consolidate all external GPE interfaces.
7598
7599See the ACPICA Programmer Reference for full details and programming
7600information. See the new section 4.4 "General Purpose Event (GPE)
7601Support"
7602for a full overview, and section 8.7 "ACPI General Purpose Event
7603Management"
7604for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
7605Ming,
7606Bob Moore, Rafael Wysocki.
7607
7608Implemented a new GPE feature for Windows compatibility, the "Implicit
7609Wake
7610GPE Notify". This feature will automatically issue a Notify(2) on a
7611device
7612when a Wake GPE is received if there is no corresponding GPE method or
7613handler. ACPICA BZ 870.
7614
7615Fixed a problem with the Scope() operator during table parse and load
7616phase.
7617During load phase (table load or method execution), the scope operator
7618should
7619not enter the target into the namespace. Instead, it should open a new
7620scope
7621at the target location. Linux BZ 19462, ACPICA BZ 882.
7622
7623Example Code and Data Size: These are the sizes for the OS-independent
7624acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7625debug version of the code includes the debug output trace mechanism and
7626has a
7627much larger code and data size.
7628
7629  Previous Release:
7630    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
7631    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
7632  Current Release:
7633    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7634    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7635
76362) iASL Compiler/Disassembler and Tools:
7637
7638iASL: Relax the alphanumeric restriction on _CID strings. These strings
7639are
7640"bus-specific" per the ACPI specification, and therefore any characters
7641are
7642acceptable. The only checks that can be performed are for a null string
7643and
7644perhaps for a leading asterisk. ACPICA BZ 886.
7645
7646iASL: Fixed a problem where a syntax error that caused a premature EOF
7647condition on the source file emitted a very confusing error message. The
7648premature EOF is now detected correctly. ACPICA BZ 891.
7649
7650Disassembler: Decode the AccessSize within a Generic Address Structure
7651(byte
7652access, word access, etc.) Note, this field does not allow arbitrary bit
7653access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
7654
7655New: AcpiNames utility - Example namespace dump utility. Shows an example
7656of
7657ACPICA configuration for a minimal namespace dump utility. Uses table and
7658namespace managers, but no AML interpreter. Does not add any
7659functionality
7660over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
7661partition and configure ACPICA. ACPICA BZ 883.
7662
7663AML Debugger: Increased the debugger buffer size for method return
7664objects.
7665Was 4K, increased to 16K. Also enhanced error messages for debugger
7666method
7667execution, including the buffer overflow case.
7668
7669----------------------------------------
767013 October 2010. Summary of changes for version 20101013:
7671
76721) ACPI CA Core Subsystem:
7673
7674Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
7675now
7676clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
7677HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
7678
7679Changed the type of the predefined namespace object _TZ from ThermalZone
7680to
7681Device. This was found to be confusing to the host software that
7682processes
7683the various thermal zones, since _TZ is not really a ThermalZone.
7684However,
7685a
7686Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
7687Zhang.
7688
7689Added Windows Vista SP2 to the list of supported _OSI strings. The actual
7690string is "Windows 2006 SP2".
7691
7692Eliminated duplicate code in AcpiUtExecute* functions. Now that the
7693nsrepair
7694code automatically repairs _HID-related strings, this type of code is no
7695longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
7696878.
7697
7698Example Code and Data Size: These are the sizes for the OS-independent
7699acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7700debug version of the code includes the debug output trace mechanism and
7701has a
7702much larger code and data size.
7703
7704  Previous Release:
7705    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7706    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7707  Current Release:
7708    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7709    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7710
77112) iASL Compiler/Disassembler and Tools:
7712
7713iASL: Implemented additional compile-time validation for _HID strings.
7714The
7715non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
7716length
7717of
7718the string must be exactly seven or eight characters. For both _HID and
7719_CID
7720strings, all characters must be alphanumeric. ACPICA BZ 874.
7721
7722iASL: Allow certain "null" resource descriptors. Some BIOS code creates
7723descriptors that are mostly or all zeros, with the expectation that they
7724will
7725be filled in at runtime. iASL now allows this as long as there is a
7726"resource
7727tag" (name) associated with the descriptor, which gives the ASL a handle
7728needed to modify the descriptor. ACPICA BZ 873.
7729
7730Added single-thread support to the generic Unix application OSL.
7731Primarily
7732for iASL support, this change removes the use of semaphores in the
7733single-
7734threaded ACPICA tools/applications - increasing performance. The
7735_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
7736option. ACPICA BZ 879.
7737
7738AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
7739support
7740for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
7741
7742iASL: Moved all compiler messages to a new file, aslmessages.h.
7743
7744----------------------------------------
774515 September 2010. Summary of changes for version 20100915:
7746
77471) ACPI CA Core Subsystem:
7748
7749Removed the AcpiOsDerivePciId OSL interface. The various host
7750implementations
7751of this function were not OS-dependent and are now obsolete and can be
7752removed from all host OSLs. This function has been replaced by
7753AcpiHwDerivePciId, which is now part of the ACPICA core code.
7754AcpiHwDerivePciId has been implemented without recursion. Adds one new
7755module, hwpci.c. ACPICA BZ 857.
7756
7757Implemented a dynamic repair for _HID and _CID strings. The following
7758problems are now repaired at runtime: 1) Remove a leading asterisk in the
7759string, and 2) the entire string is uppercased. Both repairs are in
7760accordance with the ACPI specification and will simplify host driver
7761code.
7762ACPICA BZ 871.
7763
7764The ACPI_THREAD_ID type is no longer configurable, internally it is now
7765always UINT64. This simplifies the ACPICA code, especially any printf
7766output.
7767UINT64 is the only common data type for all thread_id types across all
7768operating systems. It is now up to the host OSL to cast the native
7769thread_id
7770type to UINT64 before returning the value to ACPICA (via
7771AcpiOsGetThreadId).
7772Lin Ming, Bob Moore.
7773
7774Added the ACPI_INLINE type to enhance the ACPICA configuration. The
7775"inline"
7776keyword is not standard across compilers, and this type allows inline to
7777be
7778configured on a per-compiler basis. Lin Ming.
7779
7780Made the system global AcpiGbl_SystemAwakeAndRunning publicly
7781available.
7782Added an extern for this boolean in acpixf.h. Some hosts utilize this
7783value
7784during suspend/restore operations. ACPICA BZ 869.
7785
7786All code that implements error/warning messages with the "ACPI:" prefix
7787has
7788been moved to a new module, utxferror.c.
7789
7790The UINT64_OVERLAY was moved to utmath.c, which is the only module where
7791it
7792is used. ACPICA BZ 829. Lin Ming, Bob Moore.
7793
7794Example Code and Data Size: These are the sizes for the OS-independent
7795acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7796debug version of the code includes the debug output trace mechanism and
7797has a
7798much larger code and data size.
7799
7800  Previous Release:
7801    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
7802    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
7803  Current Release:
7804    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7805    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7806
78072) iASL Compiler/Disassembler and Tools:
7808
7809iASL/Disassembler: Write ACPI errors to stderr instead of the output
7810file.
7811This keeps the output files free of random error messages that may
7812originate
7813from within the namespace/interpreter code. Used this opportunity to
7814merge
7815all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
7816866. Lin Ming, Bob Moore.
7817
7818Tools: update some printfs for ansi warnings on size_t. Handle width
7819change
7820of size_t on 32-bit versus 64-bit generations. Lin Ming.
7821
7822----------------------------------------
782306 August 2010. Summary of changes for version 20100806:
7824
78251) ACPI CA Core Subsystem:
7826
7827Designed and implemented a new host interface to the _OSI support code.
7828This
7829will allow the host to dynamically add or remove multiple _OSI strings,
7830as
7831well as install an optional handler that is called for each _OSI
7832invocation.
7833Also added a new AML debugger command, 'osi' to display and modify the
7834global
7835_OSI string table, and test support in the AcpiExec utility. See the
7836ACPICA
7837reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
7838New Functions:
7839    AcpiInstallInterface - Add an _OSI string.
7840    AcpiRemoveInterface - Delete an _OSI string.
7841    AcpiInstallInterfaceHandler - Install optional _OSI handler.
7842Obsolete Functions:
7843    AcpiOsValidateInterface - no longer used.
7844New Files:
7845    source/components/utilities/utosi.c
7846
7847Re-introduced the support to enable multi-byte transfers for Embedded
7848Controller (EC) operation regions. A reported problem was found to be a
7849bug
7850in the host OS, not in the multi-byte support. Previously, the maximum
7851data
7852size passed to the EC operation region handler was a single byte. There
7853are
7854often EC Fields larger than one byte that need to be transferred, and it
7855is
7856useful for the EC driver to lock these as a single transaction. This
7857change
7858enables single transfers larger than 8 bits. This effectively changes the
7859access to the EC space from ByteAcc to AnyAcc, and will probably require
7860changes to the host OS Embedded Controller driver to enable 16/32/64/256-
7861bit
7862transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
7863
7864Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
7865prototype in acpiosxf.h had the output value pointer as a (void *).
7866It should be a (UINT64 *). This may affect some host OSL code.
7867
7868Fixed a couple problems with the recently modified Linux makefiles for
7869iASL
7870and AcpiExec. These new makefiles place the generated object files in the
7871local directory so that there can be no collisions between the files that
7872are
7873shared between them that are compiled with different options.
7874
7875Example Code and Data Size: These are the sizes for the OS-independent
7876acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7877debug version of the code includes the debug output trace mechanism and
7878has a
7879much larger code and data size.
7880
7881  Previous Release:
7882    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7883    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
7884  Current Release:
7885    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
7886    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
7887
78882) iASL Compiler/Disassembler and Tools:
7889
7890iASL/Disassembler: Added a new option (-da, "disassemble all") to load
7891the
7892namespace from and disassemble an entire group of AML files. Useful for
7893loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
7894and
7895disassembling with one simple command. ACPICA BZ 865. Lin Ming.
7896
7897iASL: Allow multiple invocations of -e option. This change allows
7898multiple
7899uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
7900834.
7901Lin Ming.
7902
7903----------------------------------------
790402 July 2010. Summary of changes for version 20100702:
7905
79061) ACPI CA Core Subsystem:
7907
7908Implemented several updates to the recently added GPE reference count
7909support. The model for "wake" GPEs is changing to give the host OS
7910complete
7911control of these GPEs. Eventually, the ACPICA core will not execute any
7912_PRW
7913methods, since the host already must execute them. Also, additional
7914changes
7915were made to help ensure that the reference counts are kept in proper
7916synchronization with reality. Rafael J. Wysocki.
7917
79181) Ensure that GPEs are not enabled twice during initialization.
79192) Ensure that GPE enable masks stay in sync with the reference count.
79203) Do not inadvertently enable GPEs when writing GPE registers.
79214) Remove the internal wake reference counter and add new AcpiGpeWakeup
7922interface. This interface will set or clear individual GPEs for wakeup.
79235) Remove GpeType argument from AcpiEnable and AcpiDisable. These
7924interfaces
7925are now used for "runtime" GPEs only.
7926
7927Changed the behavior of the GPE install/remove handler interfaces. The
7928GPE
7929is
7930no longer disabled during this process, as it was found to cause problems
7931on
7932some machines. Rafael J. Wysocki.
7933
7934Reverted a change introduced in version 20100528 to enable Embedded
7935Controller multi-byte transfers. This change was found to cause problems
7936with
7937Index Fields and possibly Bank Fields. It will be reintroduced when these
7938problems have been resolved.
7939
7940Fixed a problem with references to Alias objects within Package Objects.
7941A
7942reference to an Alias within the definition of a Package was not always
7943resolved properly. Aliases to objects like Processors, Thermal zones,
7944etc.
7945were resolved to the actual object instead of a reference to the object
7946as
7947it
7948should be. Package objects are only allowed to contain integer, string,
7949buffer, package, and reference objects. Redhat bugzilla 608648.
7950
7951Example Code and Data Size: These are the sizes for the OS-independent
7952acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7953debug version of the code includes the debug output trace mechanism and
7954has a
7955much larger code and data size.
7956
7957  Previous Release:
7958    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7959    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
7960  Current Release:
7961    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7962    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
7963
79642) iASL Compiler/Disassembler and Tools:
7965
7966iASL: Implemented a new compiler subsystem to allow definition and
7967compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
7968These
7969are called "ACPI Data Tables", and the new compiler is the "Data Table
7970Compiler". This compiler is intended to simplify the existing error-prone
7971process of creating these tables for the BIOS, as well as allowing the
7972disassembly, modification, recompilation, and override of existing ACPI
7973data
7974tables. See the iASL User Guide for detailed information.
7975
7976iASL: Implemented a new Template Generator option in support of the new
7977Data
7978Table Compiler. This option will create examples of all known ACPI tables
7979that can be used as the basis for table development. See the iASL
7980documentation and the -T option.
7981
7982Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
7983Descriptor Table).
7984
7985Updated the Linux makefiles for iASL and AcpiExec to place the generated
7986object files in the local directory so that there can be no collisions
7987between the shared files between them that are generated with different
7988options.
7989
7990Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
7991Use
7992the #define __APPLE__ to enable this support.
7993
7994----------------------------------------
799528 May 2010. Summary of changes for version 20100528:
7996
7997Note: The ACPI 4.0a specification was released on April 5, 2010 and is
7998available at www.acpi.info. This is primarily an errata release.
7999
80001) ACPI CA Core Subsystem:
8001
8002Undefined ACPI tables: We are looking for the definitions for the
8003following
8004ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
8005
8006Implemented support to enable multi-byte transfers for Embedded
8007Controller
8008(EC) operation regions. Previously, the maximum data size passed to the
8009EC
8010operation region handler was a single byte. There are often EC Fields
8011larger
8012than one byte that need to be transferred, and it is useful for the EC
8013driver
8014to lock these as a single transaction. This change enables single
8015transfers
8016larger than 8 bits. This effectively changes the access to the EC space
8017from
8018ByteAcc to AnyAcc, and will probably require changes to the host OS
8019Embedded
8020Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
8021bit
8022transfers. Alexey Starikovskiy, Lin Ming
8023
8024Implemented a performance enhancement for namespace search and access.
8025This
8026change enhances the performance of namespace searches and walks by adding
8027a
8028backpointer to the parent in each namespace node. On large namespaces,
8029this
8030change can improve overall ACPI performance by up to 9X. Adding a pointer
8031to
8032each namespace node increases the overall size of the internal namespace
8033by
8034about 5%, since each namespace entry usually consists of both a namespace
8035node and an ACPI operand object. However, this is the first growth of the
8036namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
8037
8038Implemented a performance optimization that reduces the number of
8039namespace
8040walks. On control method exit, only walk the namespace if the method is
8041known
8042to have created namespace objects outside of its local scope. Previously,
8043the
8044entire namespace was traversed on each control method exit. This change
8045can
8046improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
8047Moore.
8048
8049Added support to truncate I/O addresses to 16 bits for Windows
8050compatibility.
8051Some ASL code has been seen in the field that inadvertently has bits set
8052above bit 15. This feature is optional and is enabled if the BIOS
8053requests
8054any Windows OSI strings. It can also be enabled by the host OS. Matthew
8055Garrett, Bob Moore.
8056
8057Added support to limit the maximum time for the ASL Sleep() operator. To
8058prevent accidental deep sleeps, limit the maximum time that Sleep() will
8059actually sleep. Configurable, the default maximum is two seconds. ACPICA
8060bugzilla 854.
8061
8062Added run-time validation support for the _WDG and_WED Microsoft
8063predefined
8064methods. These objects are defined by "Windows Instrumentation", and are
8065not
8066part of the ACPI spec. ACPICA BZ 860.
8067
8068Expanded all statistic counters used during namespace and device
8069initialization from 16 to 32 bits in order to support very large
8070namespaces.
8071
8072Replaced all instances of %d in printf format specifiers with %u since
8073nearly
8074all integers in ACPICA are unsigned.
8075
8076Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
8077returned
8078as AE_NO_HANDLER.
8079
8080Example Code and Data Size: These are the sizes for the OS-independent
8081acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8082debug version of the code includes the debug output trace mechanism and
8083has a
8084much larger code and data size.
8085
8086  Previous Release:
8087    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
8088    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
8089  Current Release:
8090    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8091    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
8092
80932) iASL Compiler/Disassembler and Tools:
8094
8095iASL: Added compiler support for the _WDG and_WED Microsoft predefined
8096methods. These objects are defined by "Windows Instrumentation", and are
8097not
8098part of the ACPI spec. ACPICA BZ 860.
8099
8100AcpiExec: added option to disable the memory tracking mechanism. The -dt
8101option will disable the tracking mechanism, which improves performance
8102considerably.
8103
8104AcpiExec: Restructured the command line options into -d (disable) and -e
8105(enable) options.
8106
8107----------------------------------------
810828 April 2010. Summary of changes for version 20100428:
8109
81101) ACPI CA Core Subsystem:
8111
8112Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
8113including FADT-based and GPE Block Devices, execute any _PRW methods in
8114the
8115new table, and process any _Lxx/_Exx GPE methods in the new table. Any
8116runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
8117immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
8118Devices. Provides compatibility with other ACPI implementations. Two new
8119files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
8120Moore.
8121
8122Fixed a regression introduced in version 20100331 within the table
8123manager
8124where initial table loading could fail. This was introduced in the fix
8125for
8126AcpiReallocateRootTable. Also, renamed some of fields in the table
8127manager
8128data structures to clarify their meaning and use.
8129
8130Fixed a possible allocation overrun during internal object copy in
8131AcpiUtCopySimpleObject. The original code did not correctly handle the
8132case
8133where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
8134847.
8135
8136Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
8137possible access beyond end-of-allocation. Also, now fully validate
8138descriptor
8139(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
8140
8141Example Code and Data Size: These are the sizes for the OS-independent
8142acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8143debug version of the code includes the debug output trace mechanism and
8144has a
8145much larger code and data size.
8146
8147  Previous Release:
8148    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
8149    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
8150  Current Release:
8151    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
8152    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
8153
81542) iASL Compiler/Disassembler and Tools:
8155
8156iASL: Implemented Min/Max/Len/Gran validation for address resource
8157descriptors. This change implements validation for the address fields
8158that
8159are common to all address-type resource descriptors. These checks are
8160implemented: Checks for valid Min/Max, length within the Min/Max window,
8161valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
8162per
8163table 6-40 in the ACPI 4.0a specification. Also split the large
8164aslrestype1.c
8165and aslrestype2.c files into five new files. ACPICA BZ 840.
8166
8167iASL: Added support for the _Wxx predefined names. This support was
8168missing
8169and these names were not recognized by the compiler as valid predefined
8170names. ACPICA BZ 851.
8171
8172iASL: Added an error for all predefined names that are defined to return
8173no
8174value and thus must be implemented as Control Methods. These include all
8175of
8176the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
8177names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
8178
8179iASL: Implemented the -ts option to emit hex AML data in ASL format, as
8180an
8181ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
8182be
8183dynamically loaded via the Load() operator. Also cleaned up output for
8184the
8185-
8186ta and -tc options. ACPICA BZ 853.
8187
8188Tests: Added a new file with examples of extended iASL error checking.
8189Demonstrates the advanced error checking ability of the iASL compiler.
8190Available at tests/misc/badcode.asl.
8191
8192----------------------------------------
819331 March 2010. Summary of changes for version 20100331:
8194
81951) ACPI CA Core Subsystem:
8196
8197Completed a major update for the GPE support in order to improve support
8198for
8199shared GPEs and to simplify both host OS and ACPICA code. Added a
8200reference
8201count mechanism to support shared GPEs that require multiple device
8202drivers.
8203Several external interfaces have changed. One external interface has been
8204removed. One new external interface was added. Most of the GPE external
8205interfaces now use the GPE spinlock instead of the events mutex (and the
8206Flags parameter for many GPE interfaces has been removed.) See the
8207updated
8208ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
8209Rafael
8210Wysocki. ACPICA BZ 831.
8211
8212Changed:
8213    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
8214Removed:
8215    AcpiSetGpeType
8216New:
8217    AcpiSetGpe
8218
8219Implemented write support for DataTable operation regions. These regions
8220are
8221defined via the DataTableRegion() operator. Previously, only read support
8222was
8223implemented. The ACPI specification allows DataTableRegions to be
8224read/write,
8225however.
8226
8227Implemented a new subsystem option to force a copy of the DSDT to local
8228memory. Optionally copy the entire DSDT to local memory (instead of
8229simply
8230mapping it.) There are some (albeit very rare) BIOSs that corrupt or
8231replace
8232the original DSDT, creating the need for this option. Default is FALSE,
8233do
8234not copy the DSDT.
8235
8236Implemented detection of a corrupted or replaced DSDT. This change adds
8237support to detect a DSDT that has been corrupted and/or replaced from
8238outside
8239the OS (by firmware). This is typically catastrophic for the system, but
8240has
8241been seen on some machines. Once this problem has been detected, the DSDT
8242copy option can be enabled via system configuration. Lin Ming, Bob Moore.
8243
8244Fixed two problems with AcpiReallocateRootTable during the root table
8245copy.
8246When copying the root table to the new allocation, the length used was
8247incorrect. The new size was used instead of the current table size,
8248meaning
8249too much data was copied. Also, the count of available slots for ACPI
8250tables
8251was not set correctly. Alexey Starikovskiy, Bob Moore.
8252
8253Example Code and Data Size: These are the sizes for the OS-independent
8254acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8255debug version of the code includes the debug output trace mechanism and
8256has a
8257much larger code and data size.
8258
8259  Previous Release:
8260    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
8261    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
8262  Current Release:
8263    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
8264    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
8265
82662) iASL Compiler/Disassembler and Tools:
8267
8268iASL: Implement limited typechecking for values returned from predefined
8269control methods. The type of any returned static (unnamed) object is now
8270validated. For example, Return(1). ACPICA BZ 786.
8271
8272iASL: Fixed a predefined name object verification regression. Fixes a
8273problem
8274introduced in version 20100304. An error is incorrectly generated if a
8275predefined name is declared as a static named object with a value defined
8276using the keywords "Zero", "One", or "Ones". Lin Ming.
8277
8278iASL: Added Windows 7 support for the -g option (get local ACPI tables)
8279by
8280reducing the requested registry access rights. ACPICA BZ 842.
8281
8282Disassembler: fixed a possible fault when generating External()
8283statements.
8284Introduced in commit ae7d6fd: Properly handle externals with parent-
8285prefix
8286(carat). Fixes a string length allocation calculation. Lin Ming.
8287
8288----------------------------------------
828904 March 2010. Summary of changes for version 20100304:
8290
82911) ACPI CA Core Subsystem:
8292
8293Fixed a possible problem with the AML Mutex handling function
8294AcpiExReleaseMutex where the function could fault under the very rare
8295condition when the interpreter has blocked, the interpreter lock is
8296released,
8297the interpreter is then reentered via the same thread, and attempts to
8298acquire an AML mutex that was previously acquired. FreeBSD report 140979.
8299Lin
8300Ming.
8301
8302Implemented additional configuration support for the AML "Debug Object".
8303Output from the debug object can now be enabled via a global variable,
8304AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
8305debugging.
8306This debug output is now available in the release version of ACPICA
8307instead
8308of just the debug version. Also, the entire debug output module can now
8309be
8310configured out of the ACPICA build if desired. One new file added,
8311executer/exdebug.c. Lin Ming, Bob Moore.
8312
8313Added header support for the ACPI MCHI table (Management Controller Host
8314Interface Table). This table was added in ACPI 4.0, but the defining
8315document
8316has only recently become available.
8317
8318Standardized output of integer values for ACPICA warnings/errors. Always
8319use
83200x prefix for hex output, always use %u for unsigned integer decimal
8321output.
8322Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
8323400
8324invocations.) These invocations were converted from the original
8325ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
8326
8327Example Code and Data Size: These are the sizes for the OS-independent
8328acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8329debug version of the code includes the debug output trace mechanism and
8330has a
8331much larger code and data size.
8332
8333  Previous Release:
8334    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
8335    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
8336  Current Release:
8337    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
8338    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
8339
83402) iASL Compiler/Disassembler and Tools:
8341
8342iASL: Implemented typechecking support for static (non-control method)
8343predefined named objects that are declared with the Name() operator. For
8344example, the type of this object is now validated to be of type Integer:
8345Name(_BBN, 1). This change migrates the compiler to using the core
8346predefined
8347name table instead of maintaining a local version. Added a new file,
8348aslpredef.c. ACPICA BZ 832.
8349
8350Disassembler: Added support for the ACPI 4.0 MCHI table.
8351
8352----------------------------------------
835321 January 2010. Summary of changes for version 20100121:
8354
83551) ACPI CA Core Subsystem:
8356
8357Added the 2010 copyright to all module headers and signons. This affects
8358virtually every file in the ACPICA core subsystem, the iASL compiler, the
8359tools/utilities, and the test suites.
8360
8361Implemented a change to the AcpiGetDevices interface to eliminate
8362unnecessary
8363invocations of the _STA method. In the case where a specific _HID is
8364requested, do not run _STA until a _HID match is found. This eliminates
8365potentially dozens of _STA calls during a search for a particular
8366device/HID,
8367which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
8368
8369Implemented an additional repair for predefined method return values.
8370Attempt
8371to repair unexpected NULL elements within returned Package objects.
8372Create
8373an
8374Integer of value zero, a NULL String, or a zero-length Buffer as
8375appropriate.
8376ACPICA BZ 818. Lin Ming, Bob Moore.
8377
8378Removed the obsolete ACPI_INTEGER data type. This type was introduced as
8379the
8380code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
8381(with
838264-bit AML integers). It is now obsolete and this change removes it from
8383the
8384ACPICA code base, replaced by UINT64. The original typedef has been
8385retained
8386for now for compatibility with existing device driver code. ACPICA BZ
8387824.
8388
8389Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
8390in
8391the parse tree object.
8392
8393Added additional warning options for the gcc-4 generation. Updated the
8394source
8395accordingly. This includes some code restructuring to eliminate
8396unreachable
8397code, elimination of some gotos, elimination of unused return values,
8398some
8399additional casting, and removal of redundant declarations.
8400
8401Example Code and Data Size: These are the sizes for the OS-independent
8402acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8403debug version of the code includes the debug output trace mechanism and
8404has a
8405much larger code and data size.
8406
8407  Previous Release:
8408    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
8409    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
8410  Current Release:
8411    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
8412    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
8413
84142) iASL Compiler/Disassembler and Tools:
8415
8416No functional changes for this release.
8417
8418----------------------------------------
841914 December 2009. Summary of changes for version 20091214:
8420
84211) ACPI CA Core Subsystem:
8422
8423Enhanced automatic data type conversions for predefined name repairs.
8424This
8425change expands the automatic repairs/conversions for predefined name
8426return
8427values to make Integers, Strings, and Buffers fully interchangeable.
8428Also,
8429a
8430Buffer can be converted to a Package of Integers if necessary. The
8431nsrepair.c
8432module was completely restructured. Lin Ming, Bob Moore.
8433
8434Implemented automatic removal of null package elements during predefined
8435name
8436repairs. This change will automatically remove embedded and trailing NULL
8437package elements from returned package objects that are defined to
8438contain
8439a
8440variable number of sub-packages. The driver is then presented with a
8441package
8442with no null elements to deal with. ACPICA BZ 819.
8443
8444Implemented a repair for the predefined _FDE and _GTM names. The expected
8445return value for both names is a Buffer of 5 DWORDs. This repair fixes
8446two
8447possible problems (both seen in the field), where a package of integers
8448is
8449returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
8450Kim.
8451
8452Implemented additional module-level code support. This change will
8453properly
8454execute module-level code that is not at the root of the namespace (under
8455a
8456Device object, etc.). Now executes the code within the current scope
8457instead
8458of the root. ACPICA BZ 762. Lin Ming.
8459
8460Fixed possible mutex acquisition errors when running _REG methods. Fixes
8461a
8462problem where mutex errors can occur when running a _REG method that is
8463in
8464the same scope as a method-defined operation region or an operation
8465region
8466under a module-level IF block. This type of code is rare, so the problem
8467has
8468not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
8469
8470Fixed a possible memory leak during module-level code execution. An
8471object
8472could be leaked for each block of executed module-level code if the
8473interpreter slack mode is enabled This change deletes any implicitly
8474returned
8475object from the module-level code block. Lin Ming.
8476
8477Removed messages for successful predefined repair(s). The repair
8478mechanism
8479was considered too wordy. Now, messages are only unconditionally emitted
8480if
8481the return object cannot be repaired. Existing messages for successful
8482repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
8483827.
8484
8485Example Code and Data Size: These are the sizes for the OS-independent
8486acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8487debug version of the code includes the debug output trace mechanism and
8488has a
8489much larger code and data size.
8490
8491  Previous Release:
8492    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
8493    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
8494  Current Release:
8495    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
8496    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
8497
84982) iASL Compiler/Disassembler and Tools:
8499
8500iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
8501files
8502were no longer automatically removed at the termination of the compile.
8503
8504acpiexec: Implemented the -f option to specify default region fill value.
8505This option specifies the value used to initialize buffers that simulate
8506operation regions. Default value is zero. Useful for debugging problems
8507that
8508depend on a specific initial value for a region or field.
8509
8510----------------------------------------
851112 November 2009. Summary of changes for version 20091112:
8512
85131) ACPI CA Core Subsystem:
8514
8515Implemented a post-order callback to AcpiWalkNamespace. The existing
8516interface only has a pre-order callback. This change adds an additional
8517parameter for a post-order callback which will be more useful for bus
8518scans.
8519ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
8520
8521Modified the behavior of the operation region memory mapping cache for
8522SystemMemory. Ensure that the memory mappings created for operation
8523regions
8524do not cross 4K page boundaries. Crossing a page boundary while mapping
8525regions can cause kernel warnings on some hosts if the pages have
8526different
8527attributes. Such regions are probably BIOS bugs, and this is the
8528workaround.
8529Linux BZ 14445. Lin Ming.
8530
8531Implemented an automatic repair for predefined methods that must return
8532sorted lists. This change will repair (by sorting) packages returned by
8533_ALR,
8534_PSS, and _TSS. Drivers can now assume that the packages are correctly
8535sorted
8536and do not contain NULL package elements. Adds one new file,
8537namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
8538
8539Fixed a possible fault during predefined name validation if a return
8540Package
8541object contains NULL elements. Also adds a warning if a NULL element is
8542followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
8543may
8544include repair or removal of all such NULL elements where possible.
8545
8546Implemented additional module-level executable AML code support. This
8547change
8548will execute module-level code that is not at the root of the namespace
8549(under a Device object, etc.) at table load time. Module-level executable
8550AML
8551code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
8552
8553Implemented a new internal function to create Integer objects. This
8554function
8555simplifies miscellaneous object creation code. ACPICA BZ 823.
8556
8557Reduced the severity of predefined repair messages, Warning to Info.
8558Since
8559the object was successfully repaired, a warning is too severe. Reduced to
8560an
8561info message for now. These messages may eventually be changed to debug-
8562only.
8563ACPICA BZ 812.
8564
8565Example Code and Data Size: These are the sizes for the OS-independent
8566acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8567debug version of the code includes the debug output trace mechanism and
8568has a
8569much larger code and data size.
8570
8571  Previous Release:
8572    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
8573    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
8574  Current Release:
8575    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
8576    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
8577
85782) iASL Compiler/Disassembler and Tools:
8579
8580iASL: Implemented Switch() with While(1) so that Break works correctly.
8581This
8582change correctly implements the Switch operator with a surrounding
8583While(1)
8584so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
8585
8586iASL: Added a message if a package initializer list is shorter than
8587package
8588length. Adds a new remark for a Package() declaration if an initializer
8589list
8590exists, but is shorter than the declared length of the package. Although
8591technically legal, this is probably a coding error and it is seen in the
8592field. ACPICA BZ 815. Lin Ming, Bob Moore.
8593
8594iASL: Fixed a problem where the compiler could fault after the maximum
8595number
8596of errors was reached (200).
8597
8598acpixtract: Fixed a possible warning for pointer cast if the compiler
8599warning
8600level set very high.
8601
8602----------------------------------------
860313 October 2009. Summary of changes for version 20091013:
8604
86051) ACPI CA Core Subsystem:
8606
8607Fixed a problem where an Operation Region _REG method could be executed
8608more
8609than once. If a custom address space handler is installed by the host
8610before
8611the "initialize operation regions" phase of the ACPICA initialization,
8612any
8613_REG methods for that address space could be executed twice. This change
8614fixes the problem. ACPICA BZ 427. Lin Ming.
8615
8616Fixed a possible memory leak for the Scope() ASL operator. When the exact
8617invocation of "Scope(\)" is executed (change scope to root), one internal
8618operand object was leaked. Lin Ming.
8619
8620Implemented a run-time repair for the _MAT predefined method. If the _MAT
8621return value is defined as a Field object in the AML, and the field
8622size is less than or equal to the default width of an integer (32 or
862364),_MAT
8624can incorrectly return an Integer instead of a Buffer. ACPICA now
8625automatically repairs this problem. ACPICA BZ 810.
8626
8627Implemented a run-time repair for the _BIF and _BIX predefined methods.
8628The
8629"OEM Information" field is often incorrectly returned as an Integer with
8630value zero if the field is not supported by the platform. This is due to
8631an
8632ambiguity in the ACPI specification. The field should always be a string.
8633ACPICA now automatically repairs this problem by returning a NULL string
8634within the returned Package. ACPICA BZ 807.
8635
8636Example Code and Data Size: These are the sizes for the OS-independent
8637acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8638debug version of the code includes the debug output trace mechanism and
8639has a
8640much larger code and data size.
8641
8642  Previous Release:
8643    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
8644    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
8645  Current Release:
8646    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
8647    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
8648
86492) iASL Compiler/Disassembler and Tools:
8650
8651Disassembler: Fixed a problem where references to external symbols that
8652contained one or more parent-prefixes (carats) were not handled
8653correctly,
8654possibly causing a fault. ACPICA BZ 806. Lin Ming.
8655
8656Disassembler: Restructured the code so that all functions that handle
8657external symbols are in a single module. One new file is added,
8658common/dmextern.c.
8659
8660AML Debugger: Added a max count argument for the Batch command (which
8661executes multiple predefined methods within the namespace.)
8662
8663iASL: Updated the compiler documentation (User Reference.) Available at
8664http://www.acpica.org/documentation/. ACPICA BZ 750.
8665
8666AcpiXtract: Updated for Lint and other formatting changes. Close all open
8667files.
8668
8669----------------------------------------
867003 September 2009. Summary of changes for version 20090903:
8671
86721) ACPI CA Core Subsystem:
8673
8674For Windows Vista compatibility, added the automatic execution of an _INI
8675method located at the namespace root (\_INI). This method is executed at
8676table load time. This support is in addition to the automatic execution
8677of
8678\_SB._INI. Lin Ming.
8679
8680Fixed a possible memory leak in the interpreter for AML package objects
8681if
8682the package initializer list is longer than the defined size of the
8683package.
8684This apparently can only happen if the BIOS changes the package size on
8685the
8686fly (seen in a _PSS object), as ASL compilers do not allow this. The
8687interpreter will truncate the package to the defined size (and issue an
8688error
8689message), but previously could leave the extra objects undeleted if they
8690were
8691pre-created during the argument processing (such is the case if the
8692package
8693consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
8694
8695Fixed a problem seen when a Buffer or String is stored to itself via ASL.
8696This has been reported in the field. Previously, ACPICA would zero out
8697the
8698buffer/string. Now, the operation is treated as a noop. Provides Windows
8699compatibility. ACPICA BZ 803. Lin Ming.
8700
8701Removed an extraneous error message for ASL constructs of the form
8702Store(LocalX,LocalX) when LocalX is uninitialized. These curious
8703statements
8704are seen in many BIOSs and are once again treated as NOOPs and no error
8705is
8706emitted when they are encountered. ACPICA BZ 785.
8707
8708Fixed an extraneous warning message if a _DSM reserved method returns a
8709Package object. _DSM can return any type of object, so validation on the
8710return type cannot be performed. ACPICA BZ 802.
8711
8712Example Code and Data Size: These are the sizes for the OS-independent
8713acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8714debug version of the code includes the debug output trace mechanism and
8715has a
8716much larger code and data size.
8717
8718  Previous Release:
8719    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
8720    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
8721  Current Release:
8722    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
8723    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
8724
87252) iASL Compiler/Disassembler and Tools:
8726
8727iASL: Fixed a problem with the use of the Alias operator and Resource
8728Templates. The correct alias is now constructed and no error is emitted.
8729ACPICA BZ 738.
8730
8731iASL: Implemented the -I option to specify additional search directories
8732for
8733include files. Allows multiple additional search paths for include files.
8734Directories are searched in the order specified on the command line
8735(after
8736the local directory is searched.) ACPICA BZ 800.
8737
8738iASL: Fixed a problem where the full pathname for include files was not
8739emitted for warnings/errors. This caused the IDE support to not work
8740properly. ACPICA BZ 765.
8741
8742iASL: Implemented the -@ option to specify a Windows-style response file
8743containing additional command line options. ACPICA BZ 801.
8744
8745AcpiExec: Added support to load multiple AML files simultaneously (such
8746as
8747a
8748DSDT and multiple SSDTs). Also added support for wildcards within the AML
8749pathname. These features allow all machine tables to be easily loaded and
8750debugged together. ACPICA BZ 804.
8751
8752Disassembler: Added missing support for disassembly of HEST table Error
8753Bank
8754subtables.
8755
8756----------------------------------------
875730 July 2009. Summary of changes for version 20090730:
8758
8759The ACPI 4.0 implementation for ACPICA is complete with this release.
8760
87611) ACPI CA Core Subsystem:
8762
8763ACPI 4.0: Added header file support for all new and changed ACPI tables.
8764Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
8765new
8766for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
8767BERT,
8768EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
8769There
8770have been some ACPI 4.0 changes to other existing tables. Split the large
8771actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
8772
8773ACPI 4.0: Implemented predefined name validation for all new names. There
8774are
877531 new names in ACPI 4.0. The predefined validation module was split into
8776two
8777files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
8778
8779Implemented support for so-called "module-level executable code". This is
8780executable AML code that exists outside of any control method and is
8781intended
8782to be executed at table load time. Although illegal since ACPI 2.0, this
8783type
8784of code still exists and is apparently still being created. Blocks of
8785this
8786code are now detected and executed as intended. Currently, the code
8787blocks
8788must exist under either an If, Else, or While construct; these are the
8789typical cases seen in the field. ACPICA BZ 762. Lin Ming.
8790
8791Implemented an automatic dynamic repair for predefined names that return
8792nested Package objects. This applies to predefined names that are defined
8793to
8794return a variable-length Package of sub-packages. If the number of sub-
8795packages is one, BIOS code is occasionally seen that creates a simple
8796single
8797package with no sub-packages. This code attempts to fix the problem by
8798wrapping a new package object around the existing package. These methods
8799can
8800be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
8801BZ
8802790.
8803
8804Fixed a regression introduced in 20090625 for the AcpiGetDevices
8805interface.
8806The _HID/_CID matching was broken and no longer matched IDs correctly.
8807ACPICA
8808BZ 793.
8809
8810Fixed a problem with AcpiReset where the reset would silently fail if the
8811register was one of the protected I/O ports. AcpiReset now bypasses the
8812port
8813validation mechanism. This may eventually be driven into the
8814AcpiRead/Write
8815interfaces.
8816
8817Fixed a regression related to the recent update of the AcpiRead/Write
8818interfaces. A sleep/suspend could fail if the optional PM2 Control
8819register
8820does not exist during an attempt to write the Bus Master Arbitration bit.
8821(However, some hosts already delete the code that writes this bit, and
8822the
8823code may in fact be obsolete at this date.) ACPICA BZ 799.
8824
8825Fixed a problem where AcpiTerminate could fault if inadvertently called
8826twice
8827in succession. ACPICA BZ 795.
8828
8829Example Code and Data Size: These are the sizes for the OS-independent
8830acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8831debug version of the code includes the debug output trace mechanism and
8832has a
8833much larger code and data size.
8834
8835  Previous Release:
8836    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
8837    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
8838  Current Release:
8839    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
8840    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
8841
88422) iASL Compiler/Disassembler and Tools:
8843
8844ACPI 4.0: Implemented disassembler support for all new ACPI tables and
8845changes to existing tables. ACPICA BZ 775.
8846
8847----------------------------------------
884825 June 2009. Summary of changes for version 20090625:
8849
8850The ACPI 4.0 Specification was released on June 16 and is available at
8851www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
8852continue for the next few releases.
8853
88541) ACPI CA Core Subsystem:
8855
8856ACPI 4.0: Implemented interpreter support for the IPMI operation region
8857address space. Includes support for bi-directional data buffers and an
8858IPMI
8859address space handler (to be installed by an IPMI device driver.) ACPICA
8860BZ
8861773. Lin Ming.
8862
8863ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
8864Includes
8865support in both the header files and the disassembler.
8866
8867Completed a major update for the AcpiGetObjectInfo external interface.
8868Changes include:
8869 - Support for variable, unlimited length HID, UID, and CID strings.
8870 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
8871etc.)
8872 - Call the _SxW power methods on behalf of a device object.
8873 - Determine if a device is a PCI root bridge.
8874 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
8875These changes will require an update to all callers of this interface.
8876See
8877the updated ACPICA Programmer Reference for details. One new source file
8878has
8879been added - utilities/utids.c. ACPICA BZ 368, 780.
8880
8881Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
8882transfers. The Value parameter has been extended from 32 bits to 64 bits
8883in
8884order to support new ACPI 4.0 tables. These changes will require an
8885update
8886to
8887all callers of these interfaces. See the ACPICA Programmer Reference for
8888details. ACPICA BZ 768.
8889
8890Fixed several problems with AcpiAttachData. The handler was not invoked
8891when
8892the host node was deleted. The data sub-object was not automatically
8893deleted
8894when the host node was deleted. The interface to the handler had an
8895unused
8896parameter, this was removed. ACPICA BZ 778.
8897
8898Enhanced the function that dumps ACPI table headers. All non-printable
8899characters in the string fields are now replaced with '?' (Signature,
8900OemId,
8901OemTableId, and CompilerId.) ACPI tables with non-printable characters in
8902these fields are occasionally seen in the field. ACPICA BZ 788.
8903
8904Fixed a problem with predefined method repair code where the code that
8905attempts to repair/convert an object of incorrect type is only executed
8906on
8907the first time the predefined method is called. The mechanism that
8908disables
8909warnings on subsequent calls was interfering with the repair mechanism.
8910ACPICA BZ 781.
8911
8912Fixed a possible memory leak in the predefined validation/repair code
8913when
8914a
8915buffer is automatically converted to an expected string object.
8916
8917Removed obsolete 16-bit files from the distribution and from the current
8918git
8919tree head. ACPICA BZ 776.
8920
8921Example Code and Data Size: These are the sizes for the OS-independent
8922acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8923debug version of the code includes the debug output trace mechanism and
8924has a
8925much larger code and data size.
8926
8927  Previous Release:
8928    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
8929    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
8930  Current Release:
8931    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
8932    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
8933
89342) iASL Compiler/Disassembler and Tools:
8935
8936ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
8937operation region keyword. ACPICA BZ 771, 772. Lin Ming.
8938
8939ACPI 4.0: iASL - implemented compile-time validation support for all new
8940predefined names and control methods (31 total). ACPICA BZ 769.
8941
8942----------------------------------------
894321 May 2009. Summary of changes for version 20090521:
8944
89451) ACPI CA Core Subsystem:
8946
8947Disabled the preservation of the SCI enable bit in the PM1 control
8948register.
8949The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
8950to
8951be
8952a "preserved" bit - "OSPM always preserves this bit position", section
89534.7.3.2.1. However, some machines fail if this bit is in fact preserved
8954because the bit needs to be explicitly set by the OS as a workaround. No
8955machines fail if the bit is not preserved. Therefore, ACPICA no longer
8956attempts to preserve this bit.
8957
8958Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
8959incorrectly formed _PRT package could cause a fault. Added validation to
8960ensure that each package element is actually a sub-package.
8961
8962Implemented a new interface to install or override a single control
8963method,
8964AcpiInstallMethod. This interface is useful when debugging in order to
8965repair
8966an existing method or to install a missing method without having to
8967override
8968the entire ACPI table. See the ACPICA Programmer Reference for use and
8969examples. Lin Ming, Bob Moore.
8970
8971Fixed several reference count issues with the DdbHandle object that is
8972created from a Load or LoadTable operator. Prevent premature deletion of
8973the
8974object. Also, mark the object as invalid once the table has been
8975unloaded.
8976This is needed because the handle itself may not be deleted after the
8977table
8978unload, depending on whether it has been stored in a named object by the
8979caller. Lin Ming.
8980
8981Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
8982mutexes of the same sync level are acquired but then not released in
8983strict
8984opposite order, the internally maintained Current Sync Level becomes
8985confused
8986and can cause subsequent execution errors. ACPICA BZ 471.
8987
8988Changed the allowable release order for ASL mutex objects. The ACPI 4.0
8989specification has been changed to make the SyncLevel for mutex objects
8990more
8991useful. When releasing a mutex, the SyncLevel of the mutex must now be
8992the
8993same as the current sync level. This makes more sense than the previous
8994rule
8995(SyncLevel less than or equal). This change updates the code to match the
8996specification.
8997
8998Fixed a problem with the local version of the AcpiOsPurgeCache function.
8999The
9000(local) cache must be locked during all cache object deletions. Andrew
9001Baumann.
9002
9003Updated the Load operator to use operation region interfaces. This
9004replaces
9005direct memory mapping with region access calls. Now, all region accesses
9006go
9007through the installed region handler as they should.
9008
9009Simplified and optimized the NsGetNextNode function. Reduced parameter
9010count
9011and reduced code for this frequently used function.
9012
9013Example Code and Data Size: These are the sizes for the OS-independent
9014acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9015debug version of the code includes the debug output trace mechanism and
9016has a
9017much larger code and data size.
9018
9019  Previous Release:
9020    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
9021    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
9022  Current Release:
9023    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
9024    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
9025
90262) iASL Compiler/Disassembler and Tools:
9027
9028Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
9029problems
9030with sub-table disassembly and handling invalid sub-tables. Attempt
9031recovery
9032after an invalid sub-table ID.
9033
9034----------------------------------------
903522 April 2009. Summary of changes for version 20090422:
9036
90371) ACPI CA Core Subsystem:
9038
9039Fixed a compatibility issue with the recently released I/O port
9040protection
9041mechanism. For windows compatibility, 1) On a port protection violation,
9042simply ignore the request and do not return an exception (allow the
9043control
9044method to continue execution.) 2) If only part of the request overlaps a
9045protected port, read/write the individual ports that are not protected.
9046Linux
9047BZ 13036. Lin Ming
9048
9049Enhanced the execution of the ASL/AML BreakPoint operator so that it
9050actually
9051breaks into the AML debugger if the debugger is present. This matches the
9052ACPI-defined behavior.
9053
9054Fixed several possible warnings related to the use of the configurable
9055ACPI_THREAD_ID. This type can now be configured as either an integer or a
9056pointer with no warnings. Also fixes several warnings in printf-like
9057statements for the 64-bit build when the type is configured as a pointer.
9058ACPICA BZ 766, 767.
9059
9060Fixed a number of possible warnings when compiling with gcc 4+ (depending
9061on
9062warning options.) Examples include printf formats, aliasing, unused
9063globals,
9064missing prototypes, missing switch default statements, use of non-ANSI
9065library functions, use of non-ANSI constructs. See generate/unix/Makefile
9066for
9067a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
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.6K Code, 17.6K Data, 100.2K Total
9077    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
9078  Current Release:
9079    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
9080    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
9081
90822) iASL Compiler/Disassembler and Tools:
9083
9084iASL: Fixed a generation warning from Bison 2.3 and fixed several
9085warnings
9086on
9087the 64-bit build.
9088
9089iASL: Fixed a problem where the Unix/Linux versions of the compiler could
9090not
9091correctly digest Windows/DOS formatted files (with CR/LF).
9092
9093iASL: Added a new option for "quiet mode" (-va) that produces only the
9094compilation summary, not individual errors and warnings. Useful for large
9095batch compilations.
9096
9097AcpiExec: Implemented a new option (-z) to enable a forced
9098semaphore/mutex
9099timeout that can be used to detect hang conditions during execution of
9100AML
9101code (includes both internal semaphores and AML-defined mutexes and
9102events.)
9103
9104Added new makefiles for the generation of acpica in a generic unix-like
9105environment. These makefiles are intended to generate the acpica tools
9106and
9107utilities from the original acpica git source tree structure.
9108
9109Test Suites: Updated and cleaned up the documentation files. Updated the
9110copyrights to 2009, affecting all source files. Use the new version of
9111iASL
9112with quiet mode. Increased the number of available semaphores in the
9113Windows
9114OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
9115added
9116an alternate implementation of the semaphore timeout to allow aslts to
9117execute fully on Cygwin.
9118
9119----------------------------------------
912020 March 2009. Summary of changes for version 20090320:
9121
91221) ACPI CA Core Subsystem:
9123
9124Fixed a possible race condition between AcpiWalkNamespace and dynamic
9125table
9126unloads. Added a reader/writer locking mechanism to allow multiple
9127concurrent
9128namespace walks (readers), but block a dynamic table unload until it can
9129gain
9130exclusive write access to the namespace. This fixes a problem where a
9131table
9132unload could (possibly catastrophically) delete the portion of the
9133namespace
9134that is currently being examined by a walk. Adds a new file, utlock.c,
9135that
9136implements the reader/writer lock mechanism. ACPICA BZ 749.
9137
9138Fixed a regression introduced in version 20090220 where a change to the
9139FADT
9140handling could cause the ACPICA subsystem to access non-existent I/O
9141ports.
9142
9143Modified the handling of FADT register and table (FACS/DSDT) addresses.
9144The
9145FADT can contain both 32-bit and 64-bit versions of these addresses.
9146Previously, the 64-bit versions were favored, meaning that if both 32 and
914764
9148versions were valid, but not equal, the 64-bit version was used. This was
9149found to cause some machines to fail. Now, in this case, the 32-bit
9150version
9151is used instead. This now matches the Windows behavior.
9152
9153Implemented a new mechanism to protect certain I/O ports. Provides
9154Microsoft
9155compatibility and protects the standard PC I/O ports from access via AML
9156code. Adds a new file, hwvalid.c
9157
9158Fixed a possible extraneous warning message from the FADT support. The
9159message warns of a 32/64 length mismatch between the legacy and GAS
9160definitions for a register.
9161
9162Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
9163is
9164made obsolete by the port protection mechanism above. It was previously
9165used
9166to validate the entire address range of an operation region, which could
9167be
9168incorrect if the range included illegal ports, but fields within the
9169operation region did not actually access those ports. Validation is now
9170performed on a per-field basis instead of the entire region.
9171
9172Modified the handling of the PM1 Status Register ignored bit (bit 11.)
9173Ignored bits must be "preserved" according to the ACPI spec. Usually,
9174this
9175means a read/modify/write when writing to the register. However, for
9176status
9177registers, writing a one means clear the event. Writing a zero means
9178preserve
9179the event (do not clear.) This behavior is clarified in the ACPI 4.0
9180spec,
9181and the ACPICA code now simply always writes a zero to the ignored bit.
9182
9183Modified the handling of ignored bits for the PM1 A/B Control Registers.
9184As
9185per the ACPI specification, for the control registers, preserve
9186(read/modify/write) all bits that are defined as either reserved or
9187ignored.
9188
9189Updated the handling of write-only bits in the PM1 A/B Control Registers.
9190When reading the register, zero the write-only bits as per the ACPI spec.
9191ACPICA BZ 443. Lin Ming.
9192
9193Removed "Linux" from the list of supported _OSI strings. Linux no longer
9194wants to reply true to this request. The Windows strings are the only
9195paths
9196through the AML that are tested and known to work properly.
9197
9198  Previous Release:
9199    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
9200    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
9201  Current Release:
9202    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
9203    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
9204
92052) iASL Compiler/Disassembler and Tools:
9206
9207Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
9208and
9209aetables.c
9210
9211----------------------------------------
921220 February 2009. Summary of changes for version 20090220:
9213
92141) ACPI CA Core Subsystem:
9215
9216Optimized the ACPI register locking. Removed locking for reads from the
9217ACPI
9218bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
9219is
9220not required when reading the single-bit registers. The
9221AcpiGetRegisterUnlocked function is no longer needed and has been
9222removed.
9223This will improve performance for reads on these registers. ACPICA BZ
9224760.
9225
9226Fixed the parameter validation for AcpiRead/Write. Now return
9227AE_BAD_PARAMETER if the input register pointer is null, and
9228AE_BAD_ADDRESS
9229if
9230the register has an address of zero. Previously, these cases simply
9231returned
9232AE_OK. For optional registers such as PM1B status/enable/control, the
9233caller
9234should check for a valid register address before calling. ACPICA BZ 748.
9235
9236Renamed the external ACPI bit register access functions. Renamed
9237AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
9238functions. The new names are AcpiReadBitRegister and
9239AcpiWriteBitRegister.
9240Also, restructured the code for these functions by simplifying the code
9241path
9242and condensing duplicate code to reduce code size.
9243
9244Added new functions to transparently handle the possibly split PM1 A/B
9245registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
9246functions
9247now handle the split registers for PM1 Status, Enable, and Control.
9248ACPICA
9249BZ
9250746.
9251
9252Added a function to handle the PM1 control registers,
9253AcpiHwWritePm1Control.
9254This function writes both of the PM1 control registers (A/B). These
9255registers
9256are different than the PM1 A/B status and enable registers in that
9257different
9258values can be written to the A/B registers. Most notably, the SLP_TYP
9259bits
9260can be different, as per the values returned from the _Sx predefined
9261methods.
9262
9263Removed an extra register write within AcpiHwClearAcpiStatus. This
9264function
9265was writing an optional PM1B status register twice. The existing call to
9266the
9267low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
9268A/B
9269register. ACPICA BZ 751.
9270
9271Split out the PM1 Status registers from the FADT. Added new globals for
9272these
9273registers (A/B), similar to the way the PM1 Enable registers are handled.
9274Instead of overloading the FADT Event Register blocks. This makes the
9275code
9276clearer and less prone to error.
9277
9278Fixed the warning message for when the platform contains too many ACPI
9279tables
9280for the default size of the global root table data structure. The
9281calculation
9282for the truncation value was incorrect.
9283
9284Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
9285obsolete macro, since it is now a simple reference to ->common.type.
9286There
9287were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
9288
9289Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
9290TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
9291simply SLEEP_TYPE. ACPICA BZ 754.
9292
9293Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
9294function is only needed on 64-bit host operating systems and is thus not
9295included for 32-bit hosts.
9296
9297Debug output: print the input and result for invocations of the _OSI
9298reserved
9299control method via the ACPI_LV_INFO debug level. Also, reduced some of
9300the
9301verbosity of this debug level. Len Brown.
9302
9303Example Code and Data Size: These are the sizes for the OS-independent
9304acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9305debug version of the code includes the debug output trace mechanism and
9306has a
9307much larger code and data size.
9308
9309  Previous Release:
9310    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
9311    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
9312  Current Release:
9313    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
9314    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
9315
93162) iASL Compiler/Disassembler and Tools:
9317
9318Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
9319various legal performance profiles.
9320
9321----------------------------------------
932223 January 2009. Summary of changes for version 20090123:
9323
93241) ACPI CA Core Subsystem:
9325
9326Added the 2009 copyright to all module headers and signons. This affects
9327virtually every file in the ACPICA core subsystem, the iASL compiler, and
9328the tools/utilities.
9329
9330Implemented a change to allow the host to override any ACPI table,
9331including
9332dynamically loaded tables. Previously, only the DSDT could be replaced by
9333the
9334host. With this change, the AcpiOsTableOverride interface is called for
9335each
9336table found in the RSDT/XSDT during ACPICA initialization, and also
9337whenever
9338a table is dynamically loaded via the AML Load operator.
9339
9340Updated FADT flag definitions, especially the Boot Architecture flags.
9341
9342Debugger: For the Find command, automatically pad the input ACPI name
9343with
9344underscores if the name is shorter than 4 characters. This enables a
9345match
9346with the actual namespace entry which is itself padded with underscores.
9347
9348Example Code and Data Size: These are the sizes for the OS-independent
9349acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9350debug version of the code includes the debug output trace mechanism and
9351has a
9352much larger code and data size.
9353
9354  Previous Release:
9355    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
9356    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
9357  Current Release:
9358    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
9359    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
9360
93612) iASL Compiler/Disassembler and Tools:
9362
9363Fix build error under Bison-2.4.
9364
9365Disassembler: Enhanced FADT support. Added decoding of the Boot
9366Architecture
9367flags. Now decode all flags, regardless of the FADT version. Flag output
9368includes the FADT version which first defined each flag.
9369
9370The iASL -g option now dumps the RSDT to a file (in addition to the FADT
9371and
9372DSDT). Windows only.
9373
9374----------------------------------------
937504 December 2008. Summary of changes for version 20081204:
9376
93771) ACPI CA Core Subsystem:
9378
9379The ACPICA Programmer Reference has been completely updated and revamped
9380for
9381this release. This includes updates to the external interfaces, OSL
9382interfaces, the overview sections, and the debugger reference.
9383
9384Several new ACPICA interfaces have been implemented and documented in the
9385programmer reference:
9386AcpiReset - Writes the reset value to the FADT-defined reset register.
9387AcpiDisableAllGpes - Disable all available GPEs.
9388AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
9389AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
9390AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
9391AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
9392AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
9393
9394Most of the public ACPI hardware-related interfaces have been moved to a
9395new
9396file, components/hardware/hwxface.c
9397
9398Enhanced the FADT parsing and low-level ACPI register access: The ACPI
9399register lengths within the FADT are now used, and the low level ACPI
9400register access no longer hardcodes the ACPI register lengths. Given that
9401there may be some risk in actually trusting the FADT register lengths, a
9402run-
9403time option was added to fall back to the default hardcoded lengths if
9404the
9405FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
9406option is set to true for now, and a warning is issued if a suspicious
9407FADT
9408register length is overridden with the default value.
9409
9410Fixed a reference count issue in NsRepairObject. This problem was
9411introduced
9412in version 20081031 as part of a fix to repair Buffer objects within
9413Packages. Lin Ming.
9414
9415Added semaphore support to the Linux/Unix application OS-services layer
9416(OSL). ACPICA BZ 448. Lin Ming.
9417
9418Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
9419will
9420be implemented in the OSL, or will binary semaphores be used instead.
9421
9422Example Code and Data Size: These are the sizes for the OS-independent
9423acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9424debug version of the code includes the debug output trace mechanism and
9425has a
9426much larger code and data size.
9427
9428  Previous Release:
9429    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
9430    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
9431  Current Release:
9432    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
9433    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
9434
94352) iASL Compiler/Disassembler and Tools:
9436
9437iASL: Completed the '-e' option to include additional ACPI tables in
9438order
9439to
9440aid with disassembly and External statement generation. ACPICA BZ 742.
9441Lin
9442Ming.
9443
9444iASL: Removed the "named object in while loop" error. The compiler cannot
9445determine how many times a loop will execute. ACPICA BZ 730.
9446
9447Disassembler: Implemented support for FADT revision 2 (MS extension).
9448ACPICA
9449BZ 743.
9450
9451Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
9452MCFG).
9453
9454----------------------------------------
945531 October 2008. Summary of changes for version 20081031:
9456
94571) ACPI CA Core Subsystem:
9458
9459Restructured the ACPICA header files into public/private. acpi.h now
9460includes
9461only the "public" acpica headers. All other acpica headers are "private"
9462and
9463should not be included by acpica users. One new file, accommon.h is used
9464to
9465include the commonly used private headers for acpica code generation.
9466Future
9467plans include moving all private headers to a new subdirectory.
9468
9469Implemented an automatic Buffer->String return value conversion for
9470predefined ACPI methods. For these methods (such as _BIF), added
9471automatic
9472conversion for return objects that are required to be a String, but a
9473Buffer
9474was found instead. This can happen when reading string battery data from
9475an
9476operation region, because it used to be difficult to convert the data
9477from
9478buffer to string from within the ASL. Ensures that the host OS is
9479provided
9480with a valid null-terminated string. Linux BZ 11822.
9481
9482Updated the FACS waking vector interfaces. Split
9483AcpiSetFirmwareWakingVector
9484into two: one for the 32-bit vector, another for the 64-bit vector. This
9485is
9486required because the host OS must setup the wake much differently for
9487each
9488vector (real vs. protected mode, etc.) and the interface itself should
9489not
9490be
9491deciding which vector to use. Also, eliminated the
9492GetFirmwareWakingVector
9493interface, as it served no purpose (only the firmware reads the vector,
9494OS
9495only writes the vector.) ACPICA BZ 731.
9496
9497Implemented a mechanism to escape infinite AML While() loops. Added a
9498loop
9499counter to force exit from AML While loops if the count becomes too
9500large.
9501This can occur in poorly written AML when the hardware does not respond
9502within a while loop and the loop does not implement a timeout. The
9503maximum
9504loop count is configurable. A new exception code is returned when a loop
9505is
9506broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
9507
9508Optimized the execution of AML While loops. Previously, a control state
9509object was allocated and freed for each execution of the loop. The
9510optimization is to simply reuse the control state for each iteration.
9511This
9512speeds up the raw loop execution time by about 5%.
9513
9514Enhanced the implicit return mechanism. For Windows compatibility, return
9515an
9516implicit integer of value zero for methods that contain no executable
9517code.
9518Such methods are seen in the field as stubs (presumably), and can cause
9519drivers to fail if they expect a return value. Lin Ming.
9520
9521Allow multiple backslashes as root prefixes in namepaths. In a fully
9522qualified namepath, allow multiple backslash prefixes. This can happen
9523(and
9524is seen in the field) because of the use of a double-backslash in strings
9525(since backslash is the escape character) causing confusion. ACPICA BZ
9526739
9527Lin Ming.
9528
9529Emit a warning if two different FACS or DSDT tables are discovered in the
9530FADT. Checks if there are two valid but different addresses for the FACS
9531and
9532DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
9533
9534Consolidated the method argument count validation code. Merged the code
9535that
9536validates control method argument counts into the predefined validation
9537module. Eliminates possible multiple warnings for incorrect argument
9538counts.
9539
9540Implemented ACPICA example code. Includes code for ACPICA initialization,
9541handler installation, and calling a control method. Available at
9542source/tools/examples.
9543
9544Added a global pointer for FACS table to simplify internal FACS access.
9545Use
9546the global pointer instead of using AcpiGetTableByIndex for each FACS
9547access.
9548This simplifies the code for the Global Lock and the Firmware Waking
9549Vector(s).
9550
9551Example Code and Data Size: These are the sizes for the OS-independent
9552acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9553debug version of the code includes the debug output trace mechanism and
9554has a
9555much larger code and data size.
9556
9557  Previous Release:
9558    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
9559    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
9560  Current Release:
9561    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
9562    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
9563
95642) iASL Compiler/Disassembler and Tools:
9565
9566iASL: Improved disassembly of external method calls. Added the -e option
9567to
9568allow the inclusion of additional ACPI tables to help with the
9569disassembly
9570of
9571method invocations and the generation of external declarations during the
9572disassembly. Certain external method invocations cannot be disassembled
9573properly without the actual declaration of the method. Use the -e option
9574to
9575include the table where the external method(s) are actually declared.
9576Most
9577useful for disassembling SSDTs that make method calls back to the master
9578DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
9579-d
9580-e dsdt.aml ssdt1.aml
9581
9582iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
9583problem where the use of an alias within a namepath would result in a not
9584found error or cause the compiler to fault. Also now allows forward
9585references from the Alias operator itself. ACPICA BZ 738.
9586
9587----------------------------------------
958826 September 2008. Summary of changes for version 20080926:
9589
95901) ACPI CA Core Subsystem:
9591
9592Designed and implemented a mechanism to validate predefined ACPI methods
9593and
9594objects. This code validates the predefined ACPI objects (objects whose
9595names
9596start with underscore) that appear in the namespace, at the time they are
9597evaluated. The argument count and the type of the returned object are
9598validated against the ACPI specification. The purpose of this validation
9599is
9600to detect problems with the BIOS-implemented predefined ACPI objects
9601before
9602the results are returned to the ACPI-related drivers. Future enhancements
9603may
9604include actual repair of incorrect return objects where possible. Two new
9605files are nspredef.c and acpredef.h.
9606
9607Fixed a fault in the AML parser if a memory allocation fails during the
9608Op
9609completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
9610
9611Fixed an issue with implicit return compatibility. This change improves
9612the
9613implicit return mechanism to be more compatible with the MS interpreter.
9614Lin
9615Ming, ACPICA BZ 349.
9616
9617Implemented support for zero-length buffer-to-string conversions. Allow
9618zero
9619length strings during interpreter buffer-to-string conversions. For
9620example,
9621during the ToDecimalString and ToHexString operators, as well as implicit
9622conversions. Fiodor Suietov, ACPICA BZ 585.
9623
9624Fixed two possible memory leaks in the error exit paths of
9625AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
9626are
9627similar in that they use a stack of state objects in order to eliminate
9628recursion. The stack must be fully unwound and deallocated if an error
9629occurs. Lin Ming. ACPICA BZ 383.
9630
9631Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
9632global
9633ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
9634Moore ACPICA BZ 442.
9635
9636Removed the obsolete version number in module headers. Removed the
9637"$Revision" number that appeared in each module header. This version
9638number
9639was useful under SourceSafe and CVS, but has no meaning under git. It is
9640not
9641only incorrect, it could also be misleading.
9642
9643Example Code and Data Size: These are the sizes for the OS-independent
9644acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9645debug version of the code includes the debug output trace mechanism and
9646has a
9647much larger code and data size.
9648
9649  Previous Release:
9650    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9651    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
9652  Current Release:
9653    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
9654    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
9655
9656----------------------------------------
965729 August 2008. Summary of changes for version 20080829:
9658
96591) ACPI CA Core Subsystem:
9660
9661Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
9662Reference. Changes include the elimination of cheating on the Object
9663field
9664for the DdbHandle subtype, addition of a reference class field to
9665differentiate the various reference types (instead of an AML opcode), and
9666the
9667cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
9668
9669Reduce an error to a warning for an incorrect method argument count.
9670Previously aborted with an error if too few arguments were passed to a
9671control method via the external ACPICA interface. Now issue a warning
9672instead
9673and continue. Handles the case where the method inadvertently declares
9674too
9675many arguments, but does not actually use the extra ones. Applies mainly
9676to
9677the predefined methods. Lin Ming. Linux BZ 11032.
9678
9679Disallow the evaluation of named object types with no intrinsic value.
9680Return
9681AE_TYPE for objects that have no value and therefore evaluation is
9682undefined:
9683Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
9684of
9685these types were allowed, but an exception would be generated at some
9686point
9687during the evaluation. Now, the error is generated up front.
9688
9689Fixed a possible memory leak in the AcpiNsGetExternalPathname function
9690(nsnames.c). Fixes a leak in the error exit path.
9691
9692Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
9693debug
9694levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
9695ACPI_EXCEPTION
9696interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
9697ACPI_LV_EVENTS.
9698
9699Removed obsolete and/or unused exception codes from the acexcep.h header.
9700There is the possibility that certain device drivers may be affected if
9701they
9702use any of these exceptions.
9703
9704The ACPICA documentation has been added to the public git source tree,
9705under
9706acpica/documents. Included are the ACPICA programmer reference, the iASL
9707compiler reference, and the changes.txt release logfile.
9708
9709Example Code and Data Size: These are the sizes for the OS-independent
9710acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9711debug version of the code includes the debug output trace mechanism and
9712has a
9713much larger code and data size.
9714
9715  Previous Release:
9716    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9717    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
9718  Current Release:
9719    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9720    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
9721
97222) iASL Compiler/Disassembler and Tools:
9723
9724Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
9725defines _SCP with 3 arguments. Previous versions defined it with only 1
9726argument. iASL now allows both definitions.
9727
9728iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
9729zero-
9730length subtables when disassembling ACPI tables. Also fixed a couple of
9731errors where a full 16-bit table type field was not extracted from the
9732input
9733properly.
9734
9735acpisrc: Improve comment counting mechanism for generating source code
9736statistics. Count first and last lines of multi-line comments as
9737whitespace,
9738not comment lines. Handle Linux legal header in addition to standard
9739acpica
9740header.
9741
9742----------------------------------------
9743
974429 July 2008. Summary of changes for version 20080729:
9745
97461) ACPI CA Core Subsystem:
9747
9748Fix a possible deadlock in the GPE dispatch. Remove call to
9749AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
9750attempt
9751to acquire the GPE lock but can deadlock since the GPE lock is already
9752held
9753at dispatch time. This code was introduced in version 20060831 as a
9754response
9755to Linux BZ 6881 and has since been removed from Linux.
9756
9757Add a function to dereference returned reference objects. Examines the
9758return
9759object from a call to AcpiEvaluateObject. Any Index or RefOf references
9760are
9761automatically dereferenced in an attempt to return something useful
9762(these
9763reference types cannot be converted into an external ACPI_OBJECT.)
9764Provides
9765MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
9766
9767x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
9768subtables for the MADT and one new subtable for the SRAT. Includes
9769disassembler and AcpiSrc support. Data from the Intel 64 Architecture
9770x2APIC
9771Specification, June 2008.
9772
9773Additional error checking for pathname utilities. Add error check after
9774all
9775calls to AcpiNsGetPathnameLength. Add status return from
9776AcpiNsBuildExternalPath and check after all calls. Add parameter
9777validation
9778to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
9779
9780Return status from the global init function AcpiUtGlobalInitialize. This
9781is
9782used by both the kernel subsystem and the utilities such as iASL
9783compiler.
9784The function could possibly fail when the caches are initialized. Yang
9785Yi.
9786
9787Add a function to decode reference object types to strings. Created for
9788improved error messages.
9789
9790Improve object conversion error messages. Better error messages during
9791object
9792conversion from internal to the external ACPI_OBJECT. Used for external
9793calls
9794to AcpiEvaluateObject.
9795
9796Example Code and Data Size: These are the sizes for the OS-independent
9797acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9798debug version of the code includes the debug output trace mechanism and
9799has a
9800much larger code and data size.
9801
9802  Previous Release:
9803    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
9804    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
9805  Current Release:
9806    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9807    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
9808
98092) iASL Compiler/Disassembler and Tools:
9810
9811Debugger: fix a possible hang when evaluating non-methods. Fixes a
9812problem
9813introduced in version 20080701. If the object being evaluated (via
9814execute
9815command) is not a method, the debugger can hang while trying to obtain
9816non-
9817existent parameters.
9818
9819iASL: relax error for using reserved "_T_x" identifiers. These names can
9820appear in a disassembled ASL file if they were emitted by the original
9821compiler. Instead of issuing an error or warning and forcing the user to
9822manually change these names, issue a remark instead.
9823
9824iASL: error if named object created in while loop. Emit an error if any
9825named
9826object is created within a While loop. If allowed, this code will
9827generate
9828a
9829run-time error on the second iteration of the loop when an attempt is
9830made
9831to
9832create the same named object twice. ACPICA bugzilla 730.
9833
9834iASL: Support absolute pathnames for include files. Add support for
9835absolute
9836pathnames within the Include operator. previously, only relative
9837pathnames
9838were supported.
9839
9840iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
9841Descriptor.
9842The ACPI spec requires one interrupt minimum. BZ 423
9843
9844iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
9845Handles the case for the Interrupt Resource Descriptor where
9846the ResourceSource argument is omitted but ResourceSourceIndex
9847is present. Now leave room for the Index. BZ 426
9848
9849iASL: Prevent error message if CondRefOf target does not exist. Fixes
9850cases
9851where an error message is emitted if the target does not exist. BZ 516
9852
9853iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
9854(get ACPI tables on Windows). This was apparently broken in version
985520070919.
9856
9857AcpiXtract: Handle EOF while extracting data. Correctly handle the case
9858where
9859the EOF happens immediately after the last table in the input file. Print
9860completion message. Previously, no message was displayed in this case.
9861
9862----------------------------------------
986301 July 2008. Summary of changes for version 20080701:
9864
98650) Git source tree / acpica.org
9866
9867Fixed a problem where a git-clone from http would not transfer the entire
9868source tree.
9869
98701) ACPI CA Core Subsystem:
9871
9872Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
9873enable bit. Now performs a read-change-write of the enable register
9874instead
9875of simply writing out the cached enable mask. This will prevent
9876inadvertent
9877enabling of GPEs if a rogue GPE is received during initialization (before
9878GPE
9879handlers are installed.)
9880
9881Implemented a copy for dynamically loaded tables. Previously, dynamically
9882loaded tables were simply mapped - but on some machines this memory is
9883corrupted after suspend. Now copy the table to a local buffer. For the
9884OpRegion case, added checksum verify. Use the table length from the table
9885header, not the region length. For the Buffer case, use the table length
9886also. Dennis Noordsij, Bob Moore. BZ 10734
9887
9888Fixed a problem where the same ACPI table could not be dynamically loaded
9889and
9890unloaded more than once. Without this change, a table cannot be loaded
9891again
9892once it has been loaded/unloaded one time. The current mechanism does not
9893unregister a table upon an unload. During a load, if the same table is
9894found,
9895this no longer returns an exception. BZ 722
9896
9897Fixed a problem where the wrong descriptor length was calculated for the
9898EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
9899EndTag
9900are calculated as 12 bytes long, but the actual length in the internal
9901descriptor is 16 because of the round-up to 8 on the 64-bit build.
9902Reported
9903by Linn Crosetto. BZ 728
9904
9905Fixed a possible memory leak in the Unload operator. The DdbHandle
9906returned
9907by Load() did not have its reference count decremented during unload,
9908leading
9909to a memory leak. Lin Ming. BZ 727
9910
9911Fixed a possible memory leak when deleting thermal/processor objects. Any
9912associated notify handlers (and objects) were not being deleted. Fiodor
9913Suietov. BZ 506
9914
9915Fixed the ordering of the ASCII names in the global mutex table to match
9916the
9917actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
9918only.
9919Vegard Nossum. BZ 726
9920
9921Enhanced the AcpiGetObjectInfo interface to return the number of required
9922arguments if the object is a control method. Added this call to the
9923debugger
9924so the proper number of default arguments are passed to a method. This
9925prevents a warning when executing methods from AcpiExec.
9926
9927Added a check for an invalid handle in AcpiGetObjectInfo. Return
9928AE_BAD_PARAMETER if input handle is invalid. BZ 474
9929
9930Fixed an extraneous warning from exconfig.c on the 64-bit build.
9931
9932Example Code and Data Size: These are the sizes for the OS-independent
9933acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9934debug version of the code includes the debug output trace mechanism and
9935has a
9936much larger code and data size.
9937
9938  Previous Release:
9939    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
9940    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
9941  Current Release:
9942    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
9943    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
9944
99452) iASL Compiler/Disassembler and Tools:
9946
9947iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
9948resource descriptor names.
9949
9950iASL: Detect invalid ASCII characters in input (windows version). Removed
9951the
9952"-CF" flag from the flex compile, enables correct detection of non-ASCII
9953characters in the input. BZ 441
9954
9955iASL: Eliminate warning when result of LoadTable is not used. Eliminate
9956the
9957"result of operation not used" warning when the DDB handle returned from
9958LoadTable is not used. The warning is not needed. BZ 590
9959
9960AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
9961method
9962to
9963pass address of table to the AML. Added option to disable OpRegion
9964simulation
9965to allow creation of an OpRegion with a real address that was passed to
9966_CFG.
9967All of this allows testing of the Load and Unload operators from
9968AcpiExec.
9969
9970Debugger: update tables command for unloaded tables. Handle unloaded
9971tables
9972and use the standard table header output routine.
9973
9974----------------------------------------
997509 June 2008. Summary of changes for version 20080609:
9976
99771) ACPI CA Core Subsystem:
9978
9979Implemented a workaround for reversed _PRT entries. A significant number
9980of
9981BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
9982change dynamically detects and repairs this problem. Provides
9983compatibility
9984with MS ACPI. BZ 6859
9985
9986Simplified the internal ACPI hardware interfaces to eliminate the locking
9987flag parameter from Register Read/Write. Added a new external interface,
9988AcpiGetRegisterUnlocked.
9989
9990Fixed a problem where the invocation of a GPE control method could hang.
9991This
9992was a regression introduced in 20080514. The new method argument count
9993validation mechanism can enter an infinite loop when a GPE method is
9994dispatched. Problem fixed by removing the obsolete code that passed GPE
9995block
9996information to the notify handler via the control method parameter
9997pointer.
9998
9999Fixed a problem where the _SST execution status was incorrectly returned
10000to
10001the caller of AcpiEnterSleepStatePrep. This was a regression introduced
10002in
1000320080514. _SST is optional and a NOT_FOUND exception should never be
10004returned. BZ 716
10005
10006Fixed a problem where a deleted object could be accessed from within the
10007AML
10008parser. This was a regression introduced in version 20080123 as a fix for
10009the
10010Unload operator. Lin Ming. BZ 10669
10011
10012Cleaned up the debug operand dump mechanism. Eliminated unnecessary
10013operands
10014and eliminated the use of a negative index in a loop. Operands are now
10015displayed in the correct order, not backwards. This also fixes a
10016regression
10017introduced in 20080514 on 64-bit systems where the elimination of
10018ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
10019715
10020
10021Fixed a possible memory leak in EvPciConfigRegionSetup where the error
10022exit
10023path did not delete a locally allocated structure.
10024
10025Updated definitions for the DMAR and SRAT tables to synchronize with the
10026current specifications. Includes disassembler support.
10027
10028Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
10029loop termination value was used. Loop terminated on iteration early,
10030missing
10031one mutex. Linn Crosetto
10032
10033Example Code and Data Size: These are the sizes for the OS-independent
10034acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10035debug version of the code includes the debug output trace mechanism and
10036has a
10037much larger code and data size.
10038
10039  Previous Release:
10040    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
10041    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
10042  Current Release:
10043    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
10044    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
10045
100462) iASL Compiler/Disassembler and Tools:
10047
10048Disassembler: Implemented support for EisaId() within _CID objects. Now
10049disassemble integer _CID objects back to EisaId invocations, including
10050multiple integers within _CID packages. Includes single-step support for
10051debugger also.
10052
10053Disassembler: Added support for DMAR and SRAT table definition changes.
10054
10055----------------------------------------
1005614 May 2008. Summary of changes for version 20080514:
10057
100581) ACPI CA Core Subsystem:
10059
10060Fixed a problem where GPEs were enabled too early during the ACPICA
10061initialization. This could lead to "handler not installed" errors on some
10062machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
10063This
10064ensures that all operation regions and devices throughout the namespace
10065have
10066been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
10067
10068Implemented a change to the enter sleep code. Moved execution of the _GTS
10069method to just before setting sleep enable bit. The execution was moved
10070from
10071AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
10072immediately before the SLP_EN bit is set, as per the ACPI specification.
10073Luming Yu, BZ 1653.
10074
10075Implemented a fix to disable unknown GPEs (2nd version). Now always
10076disable
10077the GPE, even if ACPICA thinks that that it is already disabled. It is
10078possible that the AML or some other code has enabled the GPE unbeknownst
10079to
10080the ACPICA code.
10081
10082Fixed a problem with the Field operator where zero-length fields would
10083return
10084an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
10085ASL
10086field declarations in Field(), BankField(), and IndexField(). BZ 10606.
10087
10088Implemented a fix for the Load operator, now load the table at the
10089namespace
10090root. This reverts a change introduced in version 20071019. The table is
10091now
10092loaded at the namespace root even though this goes against the ACPI
10093specification. This provides compatibility with other ACPI
10094implementations.
10095The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
10096Ming.
10097
10098Fixed a problem where ACPICA would not Load() tables with unusual
10099signatures.
10100Now ignore ACPI table signature for Load() operator. Only "SSDT" is
10101acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
10102Therefore, signature validation is worthless. Apparently MS ACPI accepts
10103such
10104signatures, ACPICA must be compatible. BZ 10454.
10105
10106Fixed a possible negative array index in AcpiUtValidateException. Added
10107NULL
10108fields to the exception string arrays to eliminate a -1 subtraction on
10109the
10110SubStatus field.
10111
10112Updated the debug tracking macros to reduce overall code and data size.
10113Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
10114instead of pointers to static strings. Jan Beulich and Bob Moore.
10115
10116Implemented argument count checking in control method invocation via
10117AcpiEvaluateObject. Now emit an error if too few arguments, warning if
10118too
10119many. This applies only to extern programmatic control method execution,
10120not
10121method-to-method calls within the AML. Lin Ming.
10122
10123Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
10124no
10125longer needed, especially with the removal of 16-bit support. It was
10126replaced
10127mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
10128bit
10129on
1013032/64-bit platforms is required.
10131
10132Added the C const qualifier for appropriate string constants -- mostly
10133MODULE_NAME and printf format strings. Jan Beulich.
10134
10135Example Code and Data Size: These are the sizes for the OS-independent
10136acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10137debug version of the code includes the debug output trace mechanism and
10138has a
10139much larger code and data size.
10140
10141  Previous Release:
10142    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
10143    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
10144  Current Release:
10145    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
10146    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
10147
101482) iASL Compiler/Disassembler and Tools:
10149
10150Implemented ACPI table revision ID validation in the disassembler. Zero
10151is
10152always invalid. For DSDTs, the ID controls the interpreter integer width.
101531
10154means 32-bit and this is unusual. 2 or greater is 64-bit.
10155
10156----------------------------------------
1015721 March 2008. Summary of changes for version 20080321:
10158
101591) ACPI CA Core Subsystem:
10160
10161Implemented an additional change to the GPE support in order to suppress
10162spurious or stray GPEs. The AcpiEvDisableGpe function will now
10163permanently
10164disable incoming GPEs that are neither enabled nor disabled -- meaning
10165that
10166the GPE is unknown to the system. This should prevent future interrupt
10167floods
10168from that GPE. BZ 6217 (Zhang Rui)
10169
10170Fixed a problem where NULL package elements were not returned to the
10171AcpiEvaluateObject interface correctly. The element was simply ignored
10172instead of returning a NULL ACPI_OBJECT package element, potentially
10173causing
10174a buffer overflow and/or confusing the caller who expected a fixed number
10175of
10176elements. BZ 10132 (Lin Ming, Bob Moore)
10177
10178Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
10179Dword,
10180Qword), Field, BankField, and IndexField operators when invoked from
10181inside
10182an executing control method. In this case, these operators created
10183namespace
10184nodes that were incorrectly left marked as permanent nodes instead of
10185temporary nodes. This could cause a problem if there is race condition
10186between an exiting control method and a running namespace walk. (Reported
10187by
10188Linn Crosetto)
10189
10190Fixed a problem where the CreateField and CreateXXXField operators would
10191incorrectly allow duplicate names (the name of the field) with no
10192exception
10193generated.
10194
10195Implemented several changes for Notify handling. Added support for new
10196Notify
10197values (ACPI 2.0+) and improved the Notify debug output. Notify on
10198PowerResource objects is no longer allowed, as per the ACPI
10199specification.
10200(Bob Moore, Zhang Rui)
10201
10202All Reference Objects returned via the AcpiEvaluateObject interface are
10203now
10204marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
10205for
10206NULL objects - either NULL package elements or unresolved named
10207references.
10208
10209Fixed a problem where an extraneous debug message was produced for
10210package
10211objects (when debugging enabled). The message "Package List length larger
10212than NumElements count" is now produced in the correct case, and is now
10213an
10214error message rather than a debug message. Added a debug message for the
10215opposite case, where NumElements is larger than the Package List (the
10216package
10217will be padded out with NULL elements as per the ACPI spec.)
10218
10219Implemented several improvements for the output of the ASL "Debug" object
10220to
10221clarify and keep all data for a given object on one output line.
10222
10223Fixed two size calculation issues with the variable-length Start
10224Dependent
10225resource descriptor.
10226
10227Example Code and Data Size: These are the sizes for the OS-independent
10228acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10229debug version of the code includes the debug output trace mechanism and
10230has
10231a much larger code and data size.
10232
10233  Previous Release:
10234    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
10235    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
10236  Current Release:
10237    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
10238    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
10239
102402) iASL Compiler/Disassembler and Tools:
10241
10242Fixed a problem with the use of the Switch operator where execution of
10243the
10244containing method by multiple concurrent threads could cause an
10245AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
10246actual Switch opcode, it must be simulated with local named temporary
10247variables and if/else pairs. The solution chosen was to mark any method
10248that
10249uses Switch as Serialized, thus preventing multiple thread entries. BZ
10250469.
10251
10252----------------------------------------
1025313 February 2008. Summary of changes for version 20080213:
10254
102551) ACPI CA Core Subsystem:
10256
10257Implemented another MS compatibility design change for GPE/Notify
10258handling.
10259GPEs are now cleared/enabled asynchronously to allow all pending notifies
10260to
10261complete first. It is expected that the OSL will queue the enable request
10262behind all pending notify requests (may require changes to the local host
10263OSL
10264in AcpiOsExecute). Alexey Starikovskiy.
10265
10266Fixed a problem where buffer and package objects passed as arguments to a
10267control method via the external AcpiEvaluateObject interface could cause
10268an
10269AE_AML_INTERNAL exception depending on the order and type of operators
10270executed by the target control method.
10271
10272Fixed a problem where resource descriptor size optimization could cause a
10273problem when a _CRS resource template is passed to a _SRS method. The
10274_SRS
10275resource template must use the same descriptors (with the same size) as
10276returned from _CRS. This change affects the following resource
10277descriptors:
10278IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
102799487)
10280
10281Fixed a problem where a CopyObject to RegionField, BankField, and
10282IndexField
10283objects did not perform an implicit conversion as it should. These types
10284must
10285retain their initial type permanently as per the ACPI specification.
10286However,
10287a CopyObject to all other object types should not perform an implicit
10288conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
10289
10290Fixed a problem with the AcpiGetDevices interface where the mechanism to
10291match device CIDs did not examine the entire list of available CIDs, but
10292instead aborted on the first non-matching CID. Andrew Patterson.
10293
10294Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
10295was
10296inadvertently changed to return a 16-bit value instead of a 32-bit value,
10297truncating the upper dword of a 64-bit value. This macro is only used to
10298display debug output, so no incorrect calculations were made. Also,
10299reimplemented the macro so that a 64-bit shift is not performed by
10300inefficient compilers.
10301
10302Added missing va_end statements that should correspond with each va_start
10303statement.
10304
10305Example Code and Data Size: These are the sizes for the OS-independent
10306acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10307debug version of the code includes the debug output trace mechanism and
10308has
10309a much larger code and data size.
10310
10311  Previous Release:
10312    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
10313    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
10314  Current Release:
10315    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
10316    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
10317
103182) iASL Compiler/Disassembler and Tools:
10319
10320Implemented full disassembler support for the following new ACPI tables:
10321BERT, EINJ, and ERST. Implemented partial disassembler support for the
10322complicated HEST table. These tables support the Windows Hardware Error
10323Architecture (WHEA).
10324
10325----------------------------------------
1032623 January 2008. Summary of changes for version 20080123:
10327
103281) ACPI CA Core Subsystem:
10329
10330Added the 2008 copyright to all module headers and signons. This affects
10331virtually every file in the ACPICA core subsystem, the iASL compiler, and
10332the tools/utilities.
10333
10334Fixed a problem with the SizeOf operator when used with Package and
10335Buffer
10336objects. These objects have deferred execution for some arguments, and
10337the
10338execution is now completed before the SizeOf is executed. This problem
10339caused
10340unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
10341BZ
103429558
10343
10344Implemented an enhancement to the interpreter "slack mode". In the
10345absence
10346of
10347an explicit return or an implicitly returned object from the last
10348executed
10349opcode, a control method will now implicitly return an integer of value 0
10350for
10351Microsoft compatibility. (Lin Ming) BZ 392
10352
10353Fixed a problem with the Load operator where an exception was not
10354returned
10355in
10356the case where the table is already loaded. (Lin Ming) BZ 463
10357
10358Implemented support for the use of DDBHandles as an Indexed Reference, as
10359per
10360the ACPI spec. (Lin Ming) BZ 486
10361
10362Implemented support for UserTerm (Method invocation) for the Unload
10363operator
10364as per the ACPI spec. (Lin Ming) BZ 580
10365
10366Fixed a problem with the LoadTable operator where the OemId and
10367OemTableId
10368input strings could cause unexpected failures if they were shorter than
10369the
10370maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
10371
10372Implemented support for UserTerm (Method invocation) for the Unload
10373operator
10374as per the ACPI spec. (Lin Ming) BZ 580
10375
10376Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
10377HEST,
10378IBFT, UEFI, WDAT. Disassembler support is forthcoming.
10379
10380Example Code and Data Size: These are the sizes for the OS-independent
10381acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10382debug version of the code includes the debug output trace mechanism and
10383has
10384a much larger code and data size.
10385
10386  Previous Release:
10387    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
10388    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
10389  Current Release:
10390    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
10391    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
10392
103932) iASL Compiler/Disassembler and Tools:
10394
10395Implemented support in the disassembler for checksum validation on
10396incoming
10397binary DSDTs and SSDTs. If incorrect, a message is displayed within the
10398table
10399header dump at the start of the disassembly.
10400
10401Implemented additional debugging information in the namespace listing
10402file
10403created during compilation. In addition to the namespace hierarchy, the
10404full
10405pathname to each namespace object is displayed.
10406
10407Fixed a problem with the disassembler where invalid ACPI tables could
10408cause
10409faults or infinite loops.
10410
10411Fixed an unexpected parse error when using the optional "parameter types"
10412list in a control method declaration. (Lin Ming) BZ 397
10413
10414Fixed a problem where two External declarations with the same name did
10415not
10416cause an error (Lin Ming) BZ 509
10417
10418Implemented support for full TermArgs (adding Argx, Localx and method
10419invocation) for the ParameterData parameter to the LoadTable operator.
10420(Lin
10421Ming) BZ 583,587
10422
10423----------------------------------------
1042419 December 2007. Summary of changes for version 20071219:
10425
104261) ACPI CA Core Subsystem:
10427
10428Implemented full support for deferred execution for the TermArg string
10429arguments for DataTableRegion. This enables forward references and full
10430operand resolution for the three string arguments. Similar to
10431OperationRegion
10432deferred argument execution.) Lin Ming. BZ 430
10433
10434Implemented full argument resolution support for the BankValue argument
10435to
10436BankField. Previously, only constants were supported, now any TermArg may
10437be
10438used. Lin Ming BZ 387, 393
10439
10440Fixed a problem with AcpiGetDevices where the search of a branch of the
10441device tree could be terminated prematurely. In accordance with the ACPI
10442specification, the search down the current branch is terminated if a
10443device
10444is both not present and not functional (instead of just not present.)
10445Yakui
10446Zhao.
10447
10448Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
10449if
10450the underlying AML code changed the GPE enable registers. Now, any
10451unknown
10452incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
10453disabled
10454instead of simply ignored. Rui Zhang.
10455
10456Fixed a problem with Index Fields where the Index register was
10457incorrectly
10458limited to a maximum of 32 bits. Now any size may be used.
10459
10460Fixed a couple memory leaks associated with "implicit return" objects
10461when
10462the AML Interpreter slack mode is enabled. Lin Ming BZ 349
10463
10464Example Code and Data Size: These are the sizes for the OS-independent
10465acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10466debug version of the code includes the debug output trace mechanism and
10467has
10468a much larger code and data size.
10469
10470  Previous Release:
10471    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
10472    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
10473  Current Release:
10474    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
10475    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
10476
10477----------------------------------------
1047814 November 2007. Summary of changes for version 20071114:
10479
104801) ACPI CA Core Subsystem:
10481
10482Implemented event counters for each of the Fixed Events, the ACPI SCI
10483(interrupt) itself, and control methods executed. Named
10484AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
10485These
10486should be useful for debugging and statistics.
10487
10488Implemented a new external interface, AcpiGetStatistics, to retrieve the
10489contents of the various event counters. Returns the current values for
10490AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
10491AcpiMethodCount. The interface can be expanded in the future if new
10492counters
10493are added. Device drivers should use this interface rather than access
10494the
10495counters directly.
10496
10497Fixed a problem with the FromBCD and ToBCD operators. With some
10498compilers,
10499the ShortDivide function worked incorrectly, causing problems with the
10500BCD
10501functions with large input values. A truncation from 64-bit to 32-bit
10502inadvertently occurred. Internal BZ 435. Lin Ming
10503
10504Fixed a problem with Index references passed as method arguments.
10505References
10506passed as arguments to control methods were dereferenced immediately
10507(before
10508control was passed to the called method). The references are now
10509correctly
10510passed directly to the called method. BZ 5389. Lin Ming
10511
10512Fixed a problem with CopyObject used in conjunction with the Index
10513operator.
10514The reference was incorrectly dereferenced before the copy. The reference
10515is
10516now correctly copied. BZ 5391. Lin Ming
10517
10518Fixed a problem with Control Method references within Package objects.
10519These
10520references are now correctly generated. This completes the package
10521construction overhaul that began in version 20071019.
10522
10523Example Code and Data Size: These are the sizes for the OS-independent
10524acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10525debug version of the code includes the debug output trace mechanism and
10526has
10527a much larger code and data size.
10528
10529  Previous Release:
10530    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
10531    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
10532  Current Release:
10533    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
10534    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
10535
10536
105372) iASL Compiler/Disassembler and Tools:
10538
10539The AcpiExec utility now installs handlers for all of the predefined
10540Operation Region types. New types supported are: PCI_Config, CMOS, and
10541PCIBARTarget.
10542
10543Fixed a problem with the 64-bit version of AcpiExec where the extended
10544(64-
10545bit) address fields for the DSDT and FACS within the FADT were not being
10546used, causing truncation of the upper 32-bits of these addresses. Lin
10547Ming
10548and Bob Moore
10549
10550----------------------------------------
1055119 October 2007. Summary of changes for version 20071019:
10552
105531) ACPI CA Core Subsystem:
10554
10555Fixed a problem with the Alias operator when the target of the alias is a
10556named ASL operator that opens a new scope -- Scope, Device,
10557PowerResource,
10558Processor, and ThermalZone. In these cases, any children of the original
10559operator could not be accessed via the alias, potentially causing
10560unexpected
10561AE_NOT_FOUND exceptions. (BZ 9067)
10562
10563Fixed a problem with the Package operator where all named references were
10564created as object references and left otherwise unresolved. According to
10565the
10566ACPI specification, a Package can only contain Data Objects or references
10567to
10568control methods. The implication is that named references to Data Objects
10569(Integer, Buffer, String, Package, BufferField, Field) should be resolved
10570immediately upon package creation. This is the approach taken with this
10571change. References to all other named objects (Methods, Devices, Scopes,
10572etc.) are all now properly created as reference objects. (BZ 5328)
10573
10574Reverted a change to Notify handling that was introduced in version
1057520070508. This version changed the Notify handling from asynchronous to
10576fully synchronous (Device driver Notify handling with respect to the
10577Notify
10578ASL operator). It was found that this change caused more problems than it
10579solved and was removed by most users.
10580
10581Fixed a problem with the Increment and Decrement operators where the type
10582of
10583the target object could be unexpectedly and incorrectly changed. (BZ 353)
10584Lin Ming.
10585
10586Fixed a problem with the Load and LoadTable operators where the table
10587location within the namespace was ignored. Instead, the table was always
10588loaded into the root or current scope. Lin Ming.
10589
10590Fixed a problem with the Load operator when loading a table from a buffer
10591object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
10592
10593Fixed a problem with the Debug object where a store of a DdbHandle
10594reference
10595object to the Debug object could cause a fault.
10596
10597Added a table checksum verification for the Load operator, in the case
10598where
10599the load is from a buffer. (BZ 578).
10600
10601Implemented additional parameter validation for the LoadTable operator.
10602The
10603length of the input strings SignatureString, OemIdString, and OemTableId
10604are
10605now checked for maximum lengths. (BZ 582) Lin Ming.
10606
10607Example Code and Data Size: These are the sizes for the OS-independent
10608acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10609debug version of the code includes the debug output trace mechanism and
10610has
10611a much larger code and data size.
10612
10613  Previous Release:
10614    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
10615    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
10616  Current Release:
10617    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
10618    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
10619
10620
106212) iASL Compiler/Disassembler:
10622
10623Fixed a problem where if a single file was specified and the file did not
10624exist, no error message was emitted. (Introduced with wildcard support in
10625version 20070917.)
10626
10627----------------------------------------
1062819 September 2007. Summary of changes for version 20070919:
10629
106301) ACPI CA Core Subsystem:
10631
10632Designed and implemented new external interfaces to install and remove
10633handlers for ACPI table-related events. Current events that are defined
10634are
10635LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
10636they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
10637AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
10638
10639Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
10640(acpi_serialized option on Linux) could cause some systems to hang during
10641initialization. (Bob Moore) BZ 8171
10642
10643Fixed a problem where objects of certain types (Device, ThermalZone,
10644Processor, PowerResource) can be not found if they are declared and
10645referenced from within the same control method (Lin Ming) BZ 341
10646
10647Example Code and Data Size: These are the sizes for the OS-independent
10648acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10649debug version of the code includes the debug output trace mechanism and
10650has
10651a much larger code and data size.
10652
10653  Previous Release:
10654    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
10655    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
10656  Current Release:
10657    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
10658    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
10659
10660
106612) iASL Compiler/Disassembler:
10662
10663Implemented support to allow multiple files to be compiled/disassembled
10664in
10665a
10666single invocation. This includes command line wildcard support for both
10667the
10668Windows and Unix versions of the compiler. This feature simplifies the
10669disassembly and compilation of multiple ACPI tables in a single
10670directory.
10671
10672----------------------------------------
1067308 May 2007. Summary of changes for version 20070508:
10674
106751) ACPI CA Core Subsystem:
10676
10677Implemented a Microsoft compatibility design change for the handling of
10678the
10679Notify AML operator. Previously, notify handlers were dispatched and
10680executed completely asynchronously in a deferred thread. The new design
10681still executes the notify handlers in a different thread, but the
10682original
10683thread that executed the Notify() now waits at a synchronization point
10684for
10685the notify handler to complete. Some machines depend on a synchronous
10686Notify
10687operator in order to operate correctly.
10688
10689Implemented support to allow Package objects to be passed as method
10690arguments to the external AcpiEvaluateObject interface. Previously, this
10691would return the AE_NOT_IMPLEMENTED exception. This feature had not been
10692implemented since there were no reserved control methods that required it
10693until recently.
10694
10695Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
10696that
10697contained invalid non-zero values in reserved fields could cause later
10698failures because these fields have meaning in later revisions of the
10699FADT.
10700For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
10701fields
10702are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
10703
10704Fixed a problem where the Global Lock handle was not properly updated if
10705a
10706thread that acquired the Global Lock via executing AML code then
10707attempted
10708to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
10709Joe
10710Liu.
10711
10712Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
10713could be corrupted if the interrupt being removed was at the head of the
10714list. Reported by Linn Crosetto.
10715
10716Example Code and Data Size: These are the sizes for the OS-independent
10717acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10718debug version of the code includes the debug output trace mechanism and
10719has
10720a much larger code and data size.
10721
10722  Previous Release:
10723    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10724    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
10725  Current Release:
10726    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
10727    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
10728
10729----------------------------------------
1073020 March 2007. Summary of changes for version 20070320:
10731
107321) ACPI CA Core Subsystem:
10733
10734Implemented a change to the order of interpretation and evaluation of AML
10735operand objects within the AML interpreter. The interpreter now evaluates
10736operands in the order that they appear in the AML stream (and the
10737corresponding ASL code), instead of in the reverse order (after the
10738entire
10739operand list has been parsed). The previous behavior caused several
10740subtle
10741incompatibilities with the Microsoft AML interpreter as well as being
10742somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
10743
10744Implemented a change to the ACPI Global Lock support. All interfaces to
10745the
10746global lock now allow the same thread to acquire the lock multiple times.
10747This affects the AcpiAcquireGlobalLock external interface to the global
10748lock
10749as well as the internal use of the global lock to support AML fields -- a
10750control method that is holding the global lock can now simultaneously
10751access
10752AML fields that require global lock protection. Previously, in both
10753cases,
10754this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
10755to
10756AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
10757Controller. There is no change to the behavior of the AML Acquire
10758operator,
10759as this can already be used to acquire a mutex multiple times by the same
10760thread. BZ 8066. With assistance from Alexey Starikovskiy.
10761
10762Fixed a problem where invalid objects could be referenced in the AML
10763Interpreter after error conditions. During operand evaluation, ensure
10764that
10765the internal "Return Object" field is cleared on error and only valid
10766pointers are stored there. Caused occasional access to deleted objects
10767that
10768resulted in "large reference count" warning messages. Valery Podrezov.
10769
10770Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
10771on
10772deeply nested control method invocations. BZ 7873, local BZ 487. Valery
10773Podrezov.
10774
10775Fixed an internal problem with the handling of result objects on the
10776interpreter result stack. BZ 7872. Valery Podrezov.
10777
10778Removed obsolete code that handled the case where AML_NAME_OP is the
10779target
10780of a reference (Reference.Opcode). This code was no longer necessary. BZ
107817874. Valery Podrezov.
10782
10783Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
10784was
10785a
10786remnant from the previously discontinued 16-bit support.
10787
10788Example Code and Data Size: These are the sizes for the OS-independent
10789acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10790debug version of the code includes the debug output trace mechanism and
10791has
10792a much larger code and data size.
10793
10794  Previous Release:
10795    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10796    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10797  Current Release:
10798    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10799    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
10800
10801----------------------------------------
1080226 January 2007. Summary of changes for version 20070126:
10803
108041) ACPI CA Core Subsystem:
10805
10806Added the 2007 copyright to all module headers and signons. This affects
10807virtually every file in the ACPICA core subsystem, the iASL compiler, and
10808the utilities.
10809
10810Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
10811during a table load. A bad pointer was passed in the case where the DSDT
10812is
10813overridden, causing a fault in this case.
10814
10815Example Code and Data Size: These are the sizes for the OS-independent
10816acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10817debug version of the code includes the debug output trace mechanism and
10818has
10819a much larger code and data size.
10820
10821  Previous Release:
10822    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10823    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10824  Current Release:
10825    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10826    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10827
10828----------------------------------------
1082915 December 2006. Summary of changes for version 20061215:
10830
108311) ACPI CA Core Subsystem:
10832
10833Support for 16-bit ACPICA has been completely removed since it is no
10834longer
10835necessary and it clutters the code. All 16-bit macros, types, and
10836conditional compiles have been removed, cleaning up and simplifying the
10837code
10838across the entire subsystem. DOS support is no longer needed since the
10839bootable Linux firmware kit is now available.
10840
10841The handler for the Global Lock is now removed during AcpiTerminate to
10842enable a clean subsystem restart, via the implementation of the
10843AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
10844HP)
10845
10846Implemented enhancements to the multithreading support within the
10847debugger
10848to enable improved multithreading debugging and evaluation of the
10849subsystem.
10850(Valery Podrezov)
10851
10852Debugger: Enhanced the Statistics/Memory command to emit the total
10853(maximum)
10854memory used during the execution, as well as the maximum memory consumed
10855by
10856each of the various object types. (Valery Podrezov)
10857
10858Example Code and Data Size: These are the sizes for the OS-independent
10859acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10860debug version of the code includes the debug output trace mechanism and
10861has
10862a much larger code and data size.
10863
10864  Previous Release:
10865    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
10866    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
10867  Current Release:
10868    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10869    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10870
10871
108722) iASL Compiler/Disassembler and Tools:
10873
10874AcpiExec: Implemented a new option (-m) to display full memory use
10875statistics upon subsystem/program termination. (Valery Podrezov)
10876
10877----------------------------------------
1087809 November 2006. Summary of changes for version 20061109:
10879
108801) ACPI CA Core Subsystem:
10881
10882Optimized the Load ASL operator in the case where the source operand is
10883an
10884operation region. Simply map the operation region memory, instead of
10885performing a bytewise read. (Region must be of type SystemMemory, see
10886below.)
10887
10888Fixed the Load ASL operator for the case where the source operand is a
10889region field. A buffer object is also allowed as the source operand. BZ
10890480
10891
10892Fixed a problem where the Load ASL operator allowed the source operand to
10893be
10894an operation region of any type. It is now restricted to regions of type
10895SystemMemory, as per the ACPI specification. BZ 481
10896
10897Additional cleanup and optimizations for the new Table Manager code.
10898
10899AcpiEnable will now fail if all of the required ACPI tables are not
10900loaded
10901(FADT, FACS, DSDT). BZ 477
10902
10903Added #pragma pack(8/4) to acobject.h to ensure that the structures in
10904this
10905header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
10906manually optimized to be aligned and will not work if it is byte-packed.
10907
10908Example Code and Data Size: These are the sizes for the OS-independent
10909acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10910debug version of the code includes the debug output trace mechanism and
10911has
10912a much larger code and data size.
10913
10914  Previous Release:
10915    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
10916    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
10917  Current Release:
10918    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
10919    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
10920
10921
109222) iASL Compiler/Disassembler and Tools:
10923
10924Fixed a problem where the presence of the _OSI predefined control method
10925within complex expressions could cause an internal compiler error.
10926
10927AcpiExec: Implemented full region support for multiple address spaces.
10928SpaceId is now part of the REGION object. BZ 429
10929
10930----------------------------------------
1093111 October 2006. Summary of changes for version 20061011:
10932
109331) ACPI CA Core Subsystem:
10934
10935Completed an AML interpreter performance enhancement for control method
10936execution. Previously a 2-pass parse/execution, control methods are now
10937completely parsed and executed in a single pass. This improves overall
10938interpreter performance by ~25%, reduces code size, and reduces CPU stack
10939use. (Valery Podrezov + interpreter changes in version 20051202 that
10940eliminated namespace loading during the pass one parse.)
10941
10942Implemented _CID support for PCI Root Bridge detection. If the _HID does
10943not
10944match the predefined PCI Root Bridge IDs, the _CID list (if present) is
10945now
10946obtained and also checked for an ID match.
10947
10948Implemented additional support for the PCI _ADR execution: upsearch until
10949a
10950device scope is found before executing _ADR. This allows PCI_Config
10951operation regions to be declared locally within control methods
10952underneath
10953PCI device objects.
10954
10955Fixed a problem with a possible race condition between threads executing
10956AcpiWalkNamespace and the AML interpreter. This condition was removed by
10957modifying AcpiWalkNamespace to (by default) ignore all temporary
10958namespace
10959entries created during any concurrent control method execution. An
10960additional namespace race condition is known to exist between
10961AcpiWalkNamespace and the Load/Unload ASL operators and is still under
10962investigation.
10963
10964Restructured the AML ParseLoop function, breaking it into several
10965subfunctions in order to reduce CPU stack use and improve
10966maintainability.
10967(Mikhail Kouzmich)
10968
10969AcpiGetHandle: Fix for parameter validation to detect invalid
10970combinations
10971of prefix handle and pathname. BZ 478
10972
10973Example Code and Data Size: These are the sizes for the OS-independent
10974acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10975debug version of the code includes the debug output trace mechanism and
10976has
10977a much larger code and data size.
10978
10979  Previous Release:
10980    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10981    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
10982  Current Release:
10983    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
10984    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
10985
109862) iASL Compiler/Disassembler and Tools:
10987
10988Ported the -g option (get local ACPI tables) to the new ACPICA Table
10989Manager
10990to restore original behavior.
10991
10992----------------------------------------
1099327 September 2006. Summary of changes for version 20060927:
10994
109951) ACPI CA Core Subsystem:
10996
10997Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
10998These functions now use a spinlock for mutual exclusion and the interrupt
10999level indication flag is not needed.
11000
11001Fixed a problem with the Global Lock where the lock could appear to be
11002obtained before it is actually obtained. The global lock semaphore was
11003inadvertently created with one unit instead of zero units. (BZ 464)
11004Fiodor
11005Suietov.
11006
11007Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
11008during
11009a read from a buffer or region field. (BZ 458) Fiodor Suietov.
11010
11011Example Code and Data Size: These are the sizes for the OS-independent
11012acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11013debug version of the code includes the debug output trace mechanism and
11014has
11015a much larger code and data size.
11016
11017  Previous Release:
11018    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11019    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
11020  Current Release:
11021    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11022    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
11023
11024
110252) iASL Compiler/Disassembler and Tools:
11026
11027Fixed a compilation problem with the pre-defined Resource Descriptor
11028field
11029names where an "object does not exist" error could be incorrectly
11030generated
11031if the parent ResourceTemplate pathname places the template within a
11032different namespace scope than the current scope. (BZ 7212)
11033
11034Fixed a problem where the compiler could hang after syntax errors
11035detected
11036in an ElseIf construct. (BZ 453)
11037
11038Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
11039operator. An incorrect output filename was produced when this parameter
11040was
11041a null string (""). Now, the original input filename is used as the AML
11042output filename, with an ".aml" extension.
11043
11044Implemented a generic batch command mode for the AcpiExec utility
11045(execute
11046any AML debugger command) (Valery Podrezov).
11047
11048----------------------------------------
1104912 September 2006. Summary of changes for version 20060912:
11050
110511) ACPI CA Core Subsystem:
11052
11053Enhanced the implementation of the "serialized mode" of the interpreter
11054(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
11055specified, instead of creating a serialization semaphore per control
11056method,
11057the interpreter lock is simply no longer released before a blocking
11058operation during control method execution. This effectively makes the AML
11059Interpreter single-threaded. The overhead of a semaphore per-method is
11060eliminated.
11061
11062Fixed a regression where an error was no longer emitted if a control
11063method
11064attempts to create 2 objects of the same name. This once again returns
11065AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
11066that
11067will dynamically serialize the control method to possible prevent future
11068errors. (BZ 440)
11069
11070Integrated a fix for a problem with PCI Express HID detection in the PCI
11071Config Space setup procedure. (BZ 7145)
11072
11073Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
11074AcpiHwInitialize function - the FADT registers are now validated when the
11075table is loaded.
11076
11077Added two new warnings during FADT verification - 1) if the FADT is
11078larger
11079than the largest known FADT version, and 2) if there is a mismatch
11080between
11081a
1108232-bit block address and the 64-bit X counterpart (when both are non-
11083zero.)
11084
11085Example Code and Data Size: These are the sizes for the OS-independent
11086acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11087debug version of the code includes the debug output trace mechanism and
11088has
11089a much larger code and data size.
11090
11091  Previous Release:
11092    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
11093    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
11094  Current Release:
11095    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11096    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
11097
11098
110992) iASL Compiler/Disassembler and Tools:
11100
11101Fixed a problem with the implementation of the Switch() operator where
11102the
11103temporary variable was declared too close to the actual Switch, instead
11104of
11105at method level. This could cause a problem if the Switch() operator is
11106within a while loop, causing an error on the second iteration. (BZ 460)
11107
11108Disassembler - fix for error emitted for unknown type for target of scope
11109operator. Now, ignore it and continue.
11110
11111Disassembly of an FADT now verifies the input FADT and reports any errors
11112found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
11113
11114Disassembly of raw data buffers with byte initialization data now
11115prefixes
11116each output line with the current buffer offset.
11117
11118Disassembly of ASF! table now includes all variable-length data fields at
11119the end of some of the subtables.
11120
11121The disassembler now emits a comment if a buffer appears to be a
11122ResourceTemplate, but cannot be disassembled as such because the EndTag
11123does
11124not appear at the very end of the buffer.
11125
11126AcpiExec - Added the "-t" command line option to enable the serialized
11127mode
11128of the AML interpreter.
11129
11130----------------------------------------
1113131 August 2006. Summary of changes for version 20060831:
11132
111331) ACPI CA Core Subsystem:
11134
11135Miscellaneous fixes for the Table Manager:
11136- Correctly initialize internal common FADT for all 64-bit "X" fields
11137- Fixed a couple table mapping issues during table load
11138- Fixed a couple alignment issues for IA64
11139- Initialize input array to zero in AcpiInitializeTables
11140- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
11141AcpiGetTableByIndex
11142
11143Change for GPE support: when a "wake" GPE is received, all wake GPEs are
11144now
11145immediately disabled to prevent the waking GPE from firing again and to
11146prevent other wake GPEs from interrupting the wake process.
11147
11148Added the AcpiGpeCount global that tracks the number of processed GPEs,
11149to
11150be used for debugging systems with a large number of ACPI interrupts.
11151
11152Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
11153both the ACPICA headers and the disassembler.
11154
11155Example Code and Data Size: These are the sizes for the OS-independent
11156acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11157debug version of the code includes the debug output trace mechanism and
11158has
11159a much larger code and data size.
11160
11161  Previous Release:
11162    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
11163    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
11164  Current Release:
11165    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
11166    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
11167
11168
111692) iASL Compiler/Disassembler and Tools:
11170
11171Disassembler support for the DMAR ACPI table.
11172
11173----------------------------------------
1117423 August 2006. Summary of changes for version 20060823:
11175
111761) ACPI CA Core Subsystem:
11177
11178The Table Manager component has been completely redesigned and
11179reimplemented. The new design is much simpler, and reduces the overall
11180code
11181and data size of the kernel-resident ACPICA by approximately 5%. Also, it
11182is
11183now possible to obtain the ACPI tables very early during kernel
11184initialization, even before dynamic memory management is initialized.
11185(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
11186
11187Obsolete ACPICA interfaces:
11188
11189- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
11190init
11191time).
11192- AcpiLoadTable: Not needed.
11193- AcpiUnloadTable: Not needed.
11194
11195New ACPICA interfaces:
11196
11197- AcpiInitializeTables: Must be called before the table manager can be
11198used.
11199- AcpiReallocateRootTable: Used to transfer the root table to dynamically
11200allocated memory after it becomes available.
11201- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
11202tables
11203in the RSDT/XSDT.
11204
11205Other ACPICA changes:
11206
11207- AcpiGetTableHeader returns the actual mapped table header, not a copy.
11208Use
11209AcpiOsUnmapMemory to free this mapping.
11210- AcpiGetTable returns the actual mapped table. The mapping is managed
11211internally and must not be deleted by the caller. Use of this interface
11212causes no additional dynamic memory allocation.
11213- AcpiFindRootPointer: Support for physical addressing has been
11214eliminated,
11215it appeared to be unused.
11216- The interface to AcpiOsMapMemory has changed to be consistent with the
11217other allocation interfaces.
11218- The interface to AcpiOsGetRootPointer has changed to eliminate
11219unnecessary
11220parameters.
11221- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
1122264-
11223bit platforms. Was previously 64 bits on all platforms.
11224- The interface to the ACPI Global Lock acquire/release macros have
11225changed
11226slightly since ACPICA no longer keeps a local copy of the FACS with a
11227constructed pointer to the actual global lock.
11228
11229Porting to the new table manager:
11230
11231- AcpiInitializeTables: Must be called once, and can be called anytime
11232during the OS initialization process. It allows the host to specify an
11233area
11234of memory to be used to store the internal version of the RSDT/XSDT (root
11235table). This allows the host to access ACPI tables before memory
11236management
11237is initialized and running.
11238- AcpiReallocateRootTable: Can be called after memory management is
11239running
11240to copy the root table to a dynamically allocated array, freeing up the
11241scratch memory specified in the call to AcpiInitializeTables.
11242- AcpiSubsystemInitialize: This existing interface is independent of the
11243Table Manager, and does not have to be called before the Table Manager
11244can
11245be used, it only must be called before the rest of ACPICA can be used.
11246- ACPI Tables: Some changes have been made to the names and structure of
11247the
11248actbl.h and actbl1.h header files and may require changes to existing
11249code.
11250For example, bitfields have been completely removed because of their lack
11251of
11252portability across C compilers.
11253- Update interfaces to the Global Lock acquire/release macros if local
11254versions are used. (see acwin.h)
11255
11256Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
11257
11258New files: tbfind.c
11259
11260Example Code and Data Size: These are the sizes for the OS-independent
11261acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11262debug version of the code includes the debug output trace mechanism and
11263has
11264a much larger code and data size.
11265
11266  Previous Release:
11267    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11268    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11269  Current Release:
11270    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
11271    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
11272
11273
112742) iASL Compiler/Disassembler and Tools:
11275
11276No changes for this release.
11277
11278----------------------------------------
1127921 July 2006. Summary of changes for version 20060721:
11280
112811) ACPI CA Core Subsystem:
11282
11283The full source code for the ASL test suite used to validate the iASL
11284compiler and the ACPICA core subsystem is being released with the ACPICA
11285source for the first time. The source is contained in a separate package
11286and
11287consists of over 1100 files that exercise all ASL/AML operators. The
11288package
11289should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
11290Fiodor
11291Suietov)
11292
11293Completed a new design and implementation for support of the ACPI Global
11294Lock. On the OS side, the global lock is now treated as a standard AML
11295mutex. Previously, multiple OS threads could "acquire" the global lock
11296simultaneously. However, this could cause the BIOS to be starved out of
11297the
11298lock - especially in cases such as the Embedded Controller driver where
11299there is a tight coupling between the OS and the BIOS.
11300
11301Implemented an optimization for the ACPI Global Lock interrupt mechanism.
11302The Global Lock interrupt handler no longer queues the execution of a
11303separate thread to signal the global lock semaphore. Instead, the
11304semaphore
11305is signaled directly from the interrupt handler.
11306
11307Implemented support within the AML interpreter for package objects that
11308contain a larger AML length (package list length) than the package
11309element
11310count. In this case, the length of the package is truncated to match the
11311package element count. Some BIOS code apparently modifies the package
11312length
11313on the fly, and this change supports this behavior. Provides
11314compatibility
11315with the MS AML interpreter. (With assistance from Fiodor Suietov)
11316
11317Implemented a temporary fix for the BankValue parameter of a Bank Field
11318to
11319support all constant values, now including the Zero and One opcodes.
11320Evaluation of this parameter must eventually be converted to a full
11321TermArg
11322evaluation. A not-implemented error is now returned (temporarily) for
11323non-
11324constant values for this parameter.
11325
11326Fixed problem reports (Fiodor Suietov) integrated:
11327- Fix for premature object deletion after CopyObject on Operation Region
11328(BZ
11329350)
11330
11331Example Code and Data Size: These are the sizes for the OS-independent
11332acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11333debug version of the code includes the debug output trace mechanism and
11334has
11335a much larger code and data size.
11336
11337  Previous Release:
11338    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
11339    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
11340  Current Release:
11341    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11342    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11343
11344
113452) iASL Compiler/Disassembler and Tools:
11346
11347No changes for this release.
11348
11349----------------------------------------
1135007 July 2006. Summary of changes for version 20060707:
11351
113521) ACPI CA Core Subsystem:
11353
11354Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
11355that do not allow the initialization of address pointers within packed
11356structures - even though the hardware itself may support misaligned
11357transfers. Some of the debug data structures are packed by default to
11358minimize size.
11359
11360Added an error message for the case where AcpiOsGetThreadId() returns
11361zero.
11362A non-zero value is required by the core ACPICA code to ensure the proper
11363operation of AML mutexes and recursive control methods.
11364
11365The DSDT is now the only ACPI table that determines whether the AML
11366interpreter is in 32-bit or 64-bit mode. Not really a functional change,
11367but
11368the hooks for per-table 32/64 switching have been removed from the code.
11369A
11370clarification to the ACPI specification is forthcoming in ACPI 3.0B.
11371
11372Fixed a possible leak of an OwnerID in the error path of
11373AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
11374deletion to a single place in AcpiTbUninstallTable to correct possible
11375leaks
11376when using the AcpiTbDeleteTablesByType interface (with assistance from
11377Lance Ortiz.)
11378
11379Fixed a problem with Serialized control methods where the semaphore
11380associated with the method could be over-signaled after multiple method
11381invocations.
11382
11383Fixed two issues with the locking of the internal namespace data
11384structure.
11385Both the Unload() operator and AcpiUnloadTable interface now lock the
11386namespace during the namespace deletion associated with the table unload
11387(with assistance from Linn Crosetto.)
11388
11389Fixed problem reports (Valery Podrezov) integrated:
11390- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
11391
11392Fixed problem reports (Fiodor Suietov) integrated:
11393- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
11394- On Address Space handler deletion, needless deactivation call (BZ 374)
11395- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
11396375)
11397- Possible memory leak, Notify sub-objects of Processor, Power,
11398ThermalZone
11399(BZ 376)
11400- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
11401- Minimum Length of RSDT should be validated (BZ 379)
11402- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
11403Handler (BZ (380)
11404- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
11405loaded
11406(BZ 381)
11407
11408Example Code and Data Size: These are the sizes for the OS-independent
11409acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11410debug version of the code includes the debug output trace mechanism and
11411has
11412a much larger code and data size.
11413
11414  Previous Release:
11415    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
11416    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
11417  Current Release:
11418    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11419    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11420
11421
114222) iASL Compiler/Disassembler and Tools:
11423
11424Fixed problem reports:
11425Compiler segfault when ASL contains a long (>1024) String declaration (BZ
11426436)
11427
11428----------------------------------------
1142923 June 2006. Summary of changes for version 20060623:
11430
114311) ACPI CA Core Subsystem:
11432
11433Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
11434allows the type to be customized to the host OS for improved efficiency
11435(since a spinlock is usually a very small object.)
11436
11437Implemented support for "ignored" bits in the ACPI registers. According
11438to
11439the ACPI specification, these bits should be preserved when writing the
11440registers via a read/modify/write cycle. There are 3 bits preserved in
11441this
11442manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
11443
11444Implemented the initial deployment of new OSL mutex interfaces. Since
11445some
11446host operating systems have separate mutex and semaphore objects, this
11447feature was requested. The base code now uses mutexes (and the new mutex
11448interfaces) wherever a binary semaphore was used previously. However, for
11449the current release, the mutex interfaces are defined as macros to map
11450them
11451to the existing semaphore interfaces. Therefore, no OSL changes are
11452required
11453at this time. (See acpiosxf.h)
11454
11455Fixed several problems with the support for the control method SyncLevel
11456parameter. The SyncLevel now works according to the ACPI specification
11457and
11458in concert with the Mutex SyncLevel parameter, since the current
11459SyncLevel
11460is a property of the executing thread. Mutual exclusion for control
11461methods
11462is now implemented with a mutex instead of a semaphore.
11463
11464Fixed three instances of the use of the C shift operator in the bitfield
11465support code (exfldio.c) to avoid the use of a shift value larger than
11466the
11467target data width. The behavior of C compilers is undefined in this case
11468and
11469can cause unpredictable results, and therefore the case must be detected
11470and
11471avoided. (Fiodor Suietov)
11472
11473Added an info message whenever an SSDT or OEM table is loaded dynamically
11474via the Load() or LoadTable() ASL operators. This should improve
11475debugging
11476capability since it will show exactly what tables have been loaded
11477(beyond
11478the tables present in the RSDT/XSDT.)
11479
11480Example Code and Data Size: These are the sizes for the OS-independent
11481acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11482debug version of the code includes the debug output trace mechanism and
11483has
11484a much larger code and data size.
11485
11486  Previous Release:
11487    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
11488    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
11489  Current Release:
11490    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
11491    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
11492
11493
114942) iASL Compiler/Disassembler and Tools:
11495
11496No changes for this release.
11497
11498----------------------------------------
1149908 June 2006. Summary of changes for version 20060608:
11500
115011) ACPI CA Core Subsystem:
11502
11503Converted the locking mutex used for the ACPI hardware to a spinlock.
11504This
11505change should eliminate all problems caused by attempting to acquire a
11506semaphore at interrupt level, and it means that all ACPICA external
11507interfaces that directly access the ACPI hardware can be safely called
11508from
11509interrupt level. OSL code that implements the semaphore interfaces should
11510be
11511able to eliminate any workarounds for being called at interrupt level.
11512
11513Fixed a regression introduced in 20060526 where the ACPI device
11514initialization could be prematurely aborted with an AE_NOT_FOUND if a
11515device
11516did not have an optional _INI method.
11517
11518Fixed an IndexField issue where a write to the Data Register should be
11519limited in size to the AccessSize (width) of the IndexField itself. (BZ
11520433,
11521Fiodor Suietov)
11522
11523Fixed problem reports (Valery Podrezov) integrated:
11524- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
11525
11526Fixed problem reports (Fiodor Suietov) integrated:
11527- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
11528
11529Removed four global mutexes that were obsolete and were no longer being
11530used.
11531
11532Example Code and Data Size: These are the sizes for the OS-independent
11533acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11534debug version of the code includes the debug output trace mechanism and
11535has
11536a much larger code and data size.
11537
11538  Previous Release:
11539    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
11540    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
11541  Current Release:
11542    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
11543    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
11544
11545
115462) iASL Compiler/Disassembler and Tools:
11547
11548Fixed a fault when using -g option (get tables from registry) on Windows
11549machines.
11550
11551Fixed problem reports integrated:
11552- Generate error if CreateField NumBits parameter is zero. (BZ 405)
11553- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
11554Suietov)
11555- Global table revision override (-r) is ignored (BZ 413)
11556
11557----------------------------------------
1155826 May 2006. Summary of changes for version 20060526:
11559
115601) ACPI CA Core Subsystem:
11561
11562Restructured, flattened, and simplified the internal interfaces for
11563namespace object evaluation - resulting in smaller code, less CPU stack
11564use,
11565and fewer interfaces. (With assistance from Mikhail Kouzmich)
11566
11567Fixed a problem with the CopyObject operator where the first parameter
11568was
11569not typed correctly for the parser, interpreter, compiler, and
11570disassembler.
11571Caused various errors and unexpected behavior.
11572
11573Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
11574produced incorrect results with some C compilers. Since the behavior of C
11575compilers when the shift value is larger than the datatype width is
11576apparently not well defined, the interpreter now detects this condition
11577and
11578simply returns zero as expected in all such cases. (BZ 395)
11579
11580Fixed problem reports (Valery Podrezov) integrated:
11581- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
11582- Allow interpreter to handle nested method declarations (BZ 5361)
11583
11584Fixed problem reports (Fiodor Suietov) integrated:
11585- AcpiTerminate doesn't free debug memory allocation list objects (BZ
11586355)
11587- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
11588356)
11589- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
11590- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
11591- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
11592- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
11593- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
11594- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
11595- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
11596365)
11597- Status of the Global Initialization Handler call not used (BZ 366)
11598- Incorrect object parameter to Global Initialization Handler (BZ 367)
11599
11600Example Code and Data Size: These are the sizes for the OS-independent
11601acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11602debug version of the code includes the debug output trace mechanism and
11603has
11604a much larger code and data size.
11605
11606  Previous Release:
11607    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
11608    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
11609  Current Release:
11610    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
11611    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
11612
11613
116142) iASL Compiler/Disassembler and Tools:
11615
11616Modified the parser to allow the names IO, DMA, and IRQ to be used as
11617namespace identifiers with no collision with existing resource descriptor
11618macro names. This provides compatibility with other ASL compilers and is
11619most useful for disassembly/recompilation of existing tables without
11620parse
11621errors. (With assistance from Thomas Renninger)
11622
11623Disassembler: fixed an incorrect disassembly problem with the
11624DataTableRegion and CopyObject operators. Fixed a possible fault during
11625disassembly of some Alias operators.
11626
11627----------------------------------------
1162812 May 2006. Summary of changes for version 20060512:
11629
116301) ACPI CA Core Subsystem:
11631
11632Replaced the AcpiOsQueueForExecution interface with a new interface named
11633AcpiOsExecute. The major difference is that the new interface does not
11634have
11635a Priority parameter, this appeared to be useless and has been replaced
11636by
11637a
11638Type parameter. The Type tells the host what type of execution is being
11639requested, such as global lock handler, notify handler, GPE handler, etc.
11640This allows the host to queue and execute the request as appropriate for
11641the
11642request type, possibly using different work queues and different
11643priorities
11644for the various request types. This enables fixes for multithreading
11645deadlock problems such as BZ #5534, and will require changes to all
11646existing
11647OS interface layers. (Alexey Starikovskiy and Bob Moore)
11648
11649Fixed a possible memory leak associated with the support for the so-
11650called
11651"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
11652Suietov)
11653
11654Fixed a problem with the Load() operator where a table load from an
11655operation region could overwrite an internal table buffer by up to 7
11656bytes
11657and cause alignment faults on IPF systems. (With assistance from Luming
11658Yu)
11659
11660Example Code and Data Size: These are the sizes for the OS-independent
11661acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11662debug version of the code includes the debug output trace mechanism and
11663has
11664a much larger code and data size.
11665
11666  Previous Release:
11667    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
11668    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
11669  Current Release:
11670    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
11671    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
11672
11673
11674
116752) iASL Compiler/Disassembler and Tools:
11676
11677Disassembler: Implemented support to cross reference the internal
11678namespace
11679and automatically generate ASL External() statements for symbols not
11680defined
11681within the current table being disassembled. This will simplify the
11682disassembly and recompilation of interdependent tables such as SSDTs
11683since
11684these statements will no longer have to be added manually.
11685
11686Disassembler: Implemented experimental support to automatically detect
11687invocations of external control methods and generate appropriate
11688External()
11689statements. This is problematic because the AML cannot be correctly
11690parsed
11691until the number of arguments for each control method is known.
11692Currently,
11693standalone method invocations and invocations as the source operand of a
11694Store() statement are supported.
11695
11696Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
11697LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
11698LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
11699more readable and likely closer to the original ASL source.
11700
11701----------------------------------------
1170221 April 2006. Summary of changes for version 20060421:
11703
117041) ACPI CA Core Subsystem:
11705
11706Removed a device initialization optimization introduced in 20051216 where
11707the _STA method was not run unless an _INI was also present for the same
11708device. This optimization could cause problems because it could allow
11709_INI
11710methods to be run within a not-present device subtree. (If a not-present
11711device had no _INI, _STA would not be run, the not-present status would
11712not
11713be discovered, and the children of the device would be incorrectly
11714traversed.)
11715
11716Implemented a new _STA optimization where namespace subtrees that do not
11717contain _INI are identified and ignored during device initialization.
11718Selectively running _STA can significantly improve boot time on large
11719machines (with assistance from Len Brown.)
11720
11721Implemented support for the device initialization case where the returned
11722_STA flags indicate a device not-present but functioning. In this case,
11723_INI
11724is not run, but the device children are examined for presence, as per the
11725ACPI specification.
11726
11727Implemented an additional change to the IndexField support in order to
11728conform to MS behavior. The value written to the Index Register is not
11729simply a byte offset, it is a byte offset in units of the access width of
11730the parent Index Field. (Fiodor Suietov)
11731
11732Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
11733interface is called during the creation of all AML operation regions, and
11734allows the host OS to exert control over what addresses it will allow the
11735AML code to access. Operation Regions whose addresses are disallowed will
11736cause a runtime exception when they are actually accessed (will not
11737affect
11738or abort table loading.) See oswinxf or osunixxf for an example
11739implementation.
11740
11741Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
11742interface allows the host OS to match the various "optional"
11743interface/behavior strings for the _OSI predefined control method as
11744appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
11745for an example implementation.
11746
11747Restructured and corrected various problems in the exception handling
11748code
11749paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
11750(with assistance from Takayoshi Kochi.)
11751
11752Modified the Linux source converter to ignore quoted string literals
11753while
11754converting identifiers from mixed to lower case. This will correct
11755problems
11756with the disassembler and other areas where such strings must not be
11757modified.
11758
11759The ACPI_FUNCTION_* macros no longer require quotes around the function
11760name. This allows the Linux source converter to convert the names, now
11761that
11762the converter ignores quoted strings.
11763
11764Example Code and Data Size: These are the sizes for the OS-independent
11765acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11766debug version of the code includes the debug output trace mechanism and
11767has
11768a much larger code and data size.
11769
11770  Previous Release:
11771
11772    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
11773    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
11774  Current Release:
11775    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
11776    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
11777
11778
117792) iASL Compiler/Disassembler and Tools:
11780
11781Implemented 3 new warnings for iASL, and implemented multiple warning
11782levels
11783(w2 flag).
11784
117851) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
11786not
11787WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
11788check for the possible timeout, a warning is issued.
11789
117902) Useless operators: If an ASL operator does not specify an optional
11791target
11792operand and it also does not use the function return value from the
11793operator, a warning is issued since the operator effectively does
11794nothing.
11795
117963) Unreferenced objects: If a namespace object is created, but never
11797referenced, a warning is issued. This is a warning level 2 since there
11798are
11799cases where this is ok, such as when a secondary table is loaded that
11800uses
11801the unreferenced objects. Even so, care is taken to only flag objects
11802that
11803don't look like they will ever be used. For example, the reserved methods
11804(starting with an underscore) are usually not referenced because it is
11805expected that the OS will invoke them.
11806
11807----------------------------------------
1180831 March 2006. Summary of changes for version 20060331:
11809
118101) ACPI CA Core Subsystem:
11811
11812Implemented header file support for the following additional ACPI tables:
11813ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
11814support,
11815all current and known ACPI tables are now defined in the ACPICA headers
11816and
11817are available for use by device drivers and other software.
11818
11819Implemented support to allow tables that contain ACPI names with invalid
11820characters to be loaded. Previously, this would cause the table load to
11821fail, but since there are several known cases of such tables on existing
11822machines, this change was made to enable ACPI support for them. Also,
11823this
11824matches the behavior of the Microsoft ACPI implementation.
11825
11826Fixed a couple regressions introduced during the memory optimization in
11827the
1182820060317 release. The namespace node definition required additional
11829reorganization and an internal datatype that had been changed to 8-bit
11830was
11831restored to 32-bit. (Valery Podrezov)
11832
11833Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
11834could be passed through to AcpiOsReleaseObject which is unexpected. Such
11835null pointers are now trapped and ignored, matching the behavior of the
11836previous implementation before the deployment of AcpiOsReleaseObject.
11837(Valery Podrezov, Fiodor Suietov)
11838
11839Fixed a memory mapping leak during the deletion of a SystemMemory
11840operation
11841region where a cached memory mapping was not deleted. This became a
11842noticeable problem for operation regions that are defined within
11843frequently
11844used control methods. (Dana Meyers)
11845
11846Reorganized the ACPI table header files into two main files: one for the
11847ACPI tables consumed by the ACPICA core, and another for the
11848miscellaneous
11849ACPI tables that are consumed by the drivers and other software. The
11850various
11851FADT definitions were merged into one common section and three different
11852tables (ACPI 1.0, 1.0+, and 2.0)
11853
11854Example Code and Data Size: These are the sizes for the OS-independent
11855acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11856debug version of the code includes the debug output trace mechanism and
11857has
11858a much larger code and data size.
11859
11860  Previous Release:
11861    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
11862    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
11863  Current Release:
11864    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
11865    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
11866
11867
118682) iASL Compiler/Disassembler and Tools:
11869
11870Disassembler: Implemented support to decode and format all non-AML ACPI
11871tables (tables other than DSDTs and SSDTs.) This includes the new tables
11872added to the ACPICA headers, therefore all current and known ACPI tables
11873are
11874supported.
11875
11876Disassembler: The change to allow ACPI names with invalid characters also
11877enables the disassembly of such tables. Invalid characters within names
11878are
11879changed to '*' to make the name printable; the iASL compiler will still
11880generate an error for such names, however, since this is an invalid ACPI
11881character.
11882
11883Implemented an option for AcpiXtract (-a) to extract all tables found in
11884the
11885input file. The default invocation extracts only the DSDTs and SSDTs.
11886
11887Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
11888makefile for the AcpiXtract utility.
11889
11890----------------------------------------
1189117 March 2006. Summary of changes for version 20060317:
11892
118931) ACPI CA Core Subsystem:
11894
11895Implemented the use of a cache object for all internal namespace nodes.
11896Since there are about 1000 static nodes in a typical system, this will
11897decrease memory use for cache implementations that minimize per-
11898allocation
11899overhead (such as a slab allocator.)
11900
11901Removed the reference count mechanism for internal namespace nodes, since
11902it
11903was deemed unnecessary. This reduces the size of each namespace node by
11904about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
11905case,
11906and 32 bytes for the 64-bit case.
11907
11908Optimized several internal data structures to reduce object size on 64-
11909bit
11910platforms by packing data within the 64-bit alignment. This includes the
11911frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
11912instances corresponding to the namespace objects.
11913
11914Added two new strings for the predefined _OSI method: "Windows 2001.1
11915SP1"
11916and "Windows 2006".
11917
11918Split the allocation tracking mechanism out to a separate file, from
11919utalloc.c to uttrack.c. This mechanism appears to be only useful for
11920application-level code. Kernels may wish to not include uttrack.c in
11921distributions.
11922
11923Removed all remnants of the obsolete ACPI_REPORT_* macros and the
11924associated
11925code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
11926macros.)
11927
11928Code and Data Size: These are the sizes for the acpica.lib produced by
11929the
11930Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11931ACPI
11932driver or OSPM code. The debug version of the code includes the debug
11933output
11934trace mechanism and has a much larger code and data size. Note that these
11935values will vary depending on the efficiency of the compiler and the
11936compiler options used during generation.
11937
11938  Previous Release:
11939    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11940    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
11941  Current Release:
11942    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
11943    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
11944
11945
119462) iASL Compiler/Disassembler and Tools:
11947
11948Implemented an ANSI C version of the acpixtract utility. This version
11949will
11950automatically extract the DSDT and all SSDTs from the input acpidump text
11951file and dump the binary output to separate files. It can also display a
11952summary of the input file including the headers for each table found and
11953will extract any single ACPI table, with any signature. (See
11954source/tools/acpixtract)
11955
11956----------------------------------------
1195710 March 2006. Summary of changes for version 20060310:
11958
119591) ACPI CA Core Subsystem:
11960
11961Tagged all external interfaces to the subsystem with the new
11962ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
11963assist
11964kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
11965macro. The default definition is NULL.
11966
11967Added the ACPI_THREAD_ID type for the return value from
11968AcpiOsGetThreadId.
11969This allows the host to define this as necessary to simplify kernel
11970integration. The default definition is ACPI_NATIVE_UINT.
11971
11972Fixed two interpreter problems related to error processing, the deletion
11973of
11974objects, and placing invalid pointers onto the internal operator result
11975stack. BZ 6028, 6151 (Valery Podrezov)
11976
11977Increased the reference count threshold where a warning is emitted for
11978large
11979reference counts in order to eliminate unnecessary warnings on systems
11980with
11981large namespaces (especially 64-bit.) Increased the value from 0x400 to
119820x800.
11983
11984Due to universal disagreement as to the meaning of the 'c' in the
11985calloc()
11986function, the ACPI_MEM_CALLOCATE macro has been renamed to
11987ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
11988ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
11989ACPI_FREE.
11990
11991Code and Data Size: These are the sizes for the acpica.lib produced by
11992the
11993Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11994ACPI
11995driver or OSPM code. The debug version of the code includes the debug
11996output
11997trace mechanism and has a much larger code and data size. Note that these
11998values will vary depending on the efficiency of the compiler and the
11999compiler options used during generation.
12000
12001  Previous Release:
12002    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
12003    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
12004  Current Release:
12005    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12006    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
12007
12008
120092) iASL Compiler/Disassembler:
12010
12011Disassembler: implemented support for symbolic resource descriptor
12012references. If a CreateXxxxField operator references a fixed offset
12013within
12014a
12015resource descriptor, a name is assigned to the descriptor and the offset
12016is
12017translated to the appropriate resource tag and pathname. The addition of
12018this support brings the disassembled code very close to the original ASL
12019source code and helps eliminate run-time errors when the disassembled
12020code
12021is modified (and recompiled) in such a way as to invalidate the original
12022fixed offsets.
12023
12024Implemented support for a Descriptor Name as the last parameter to the
12025ASL
12026Register() macro. This parameter was inadvertently left out of the ACPI
12027specification, and will be added for ACPI 3.0b.
12028
12029Fixed a problem where the use of the "_OSI" string (versus the full path
12030"\_OSI") caused an internal compiler error. ("No back ptr to op")
12031
12032Fixed a problem with the error message that occurs when an invalid string
12033is
12034used for a _HID object (such as one with an embedded asterisk:
12035"*PNP010A".)
12036The correct message is now displayed.
12037
12038----------------------------------------
1203917 February 2006. Summary of changes for version 20060217:
12040
120411) ACPI CA Core Subsystem:
12042
12043Implemented a change to the IndexField support to match the behavior of
12044the
12045Microsoft AML interpreter. The value written to the Index register is now
12046a
12047byte offset, no longer an index based upon the width of the Data
12048register.
12049This should fix IndexField problems seen on some machines where the Data
12050register is not exactly one byte wide. The ACPI specification will be
12051clarified on this point.
12052
12053Fixed a problem where several resource descriptor types could overrun the
12054internal descriptor buffer due to size miscalculation: VendorShort,
12055VendorLong, and Interrupt. This was noticed on IA64 machines, but could
12056affect all platforms.
12057
12058Fixed a problem where individual resource descriptors were misaligned
12059within
12060the internal buffer, causing alignment faults on IA64 platforms.
12061
12062Code and Data Size: These are the sizes for the acpica.lib produced by
12063the
12064Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12065ACPI
12066driver or OSPM code. The debug version of the code includes the debug
12067output
12068trace mechanism and has a much larger code and data size. Note that these
12069values will vary depending on the efficiency of the compiler and the
12070compiler options used during generation.
12071
12072  Previous Release:
12073    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12074    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
12075  Current Release:
12076    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
12077    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
12078
12079
120802) iASL Compiler/Disassembler:
12081
12082Implemented support for new reserved names: _WDG and _WED are Microsoft
12083extensions for Windows Instrumentation Management, _TDL is a new ACPI-
12084defined method (Throttling Depth Limit.)
12085
12086Fixed a problem where a zero-length VendorShort or VendorLong resource
12087descriptor was incorrectly emitted as a descriptor of length one.
12088
12089----------------------------------------
1209010 February 2006. Summary of changes for version 20060210:
12091
120921) ACPI CA Core Subsystem:
12093
12094Removed a couple of extraneous ACPI_ERROR messages that appeared during
12095normal execution. These became apparent after the conversion from
12096ACPI_DEBUG_PRINT.
12097
12098Fixed a problem where the CreateField operator could hang if the BitIndex
12099or
12100NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
12101
12102Fixed a problem where a DeRefOf operation on a buffer object incorrectly
12103failed with an exception. This also fixes a couple of related RefOf and
12104DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
12105
12106Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
12107of
12108AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
12109BZ
121105480)
12111
12112Implemented a memory cleanup at the end of the execution of each
12113iteration
12114of an AML While() loop, preventing the accumulation of outstanding
12115objects.
12116(Valery Podrezov, BZ 5427)
12117
12118Eliminated a chunk of duplicate code in the object resolution code.
12119(Valery
12120Podrezov, BZ 5336)
12121
12122Fixed several warnings during the 64-bit code generation.
12123
12124The AcpiSrc source code conversion tool now inserts one line of
12125whitespace
12126after an if() statement that is followed immediately by a comment,
12127improving
12128readability of the Linux code.
12129
12130Code and Data Size: The current and previous library sizes for the core
12131subsystem are shown below. These are the code and data sizes for the
12132acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12133These
12134values do not include any ACPI driver or OSPM code. The debug version of
12135the
12136code includes the debug output trace mechanism and has a much larger code
12137and data size. Note that these values will vary depending on the
12138efficiency
12139of the compiler and the compiler options used during generation.
12140
12141  Previous Release:
12142    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
12143    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
12144  Current Release:
12145    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12146    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
12147
12148
121492) iASL Compiler/Disassembler:
12150
12151Fixed a problem with the disassembly of a BankField operator with a
12152complex
12153expression for the BankValue parameter.
12154
12155----------------------------------------
1215627 January 2006. Summary of changes for version 20060127:
12157
121581) ACPI CA Core Subsystem:
12159
12160Implemented support in the Resource Manager to allow unresolved
12161namestring
12162references within resource package objects for the _PRT method. This
12163support
12164is in addition to the previously implemented unresolved reference support
12165within the AML parser. If the interpreter slack mode is enabled, these
12166unresolved references will be passed through to the caller as a NULL
12167package
12168entry.
12169
12170Implemented and deployed new macros and functions for error and warning
12171messages across the subsystem. These macros are simpler and generate less
12172code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
12173ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
12174macros remain defined to allow ACPI drivers time to migrate to the new
12175macros.
12176
12177Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
12178the
12179Acquire/Release Lock OSL interfaces.
12180
12181Fixed a problem where Alias ASL operators are sometimes not correctly
12182resolved, in both the interpreter and the iASL compiler.
12183
12184Fixed several problems with the implementation of the
12185ConcatenateResTemplate
12186ASL operator. As per the ACPI specification, zero length buffers are now
12187treated as a single EndTag. One-length buffers always cause a fatal
12188exception. Non-zero length buffers that do not end with a full 2-byte
12189EndTag
12190cause a fatal exception.
12191
12192Fixed a possible structure overwrite in the AcpiGetObjectInfo external
12193interface. (With assistance from Thomas Renninger)
12194
12195Code and Data Size: The current and previous library sizes for the core
12196subsystem are shown below. These are the code and data sizes for the
12197acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12198These
12199values do not include any ACPI driver or OSPM code. The debug version of
12200the
12201code includes the debug output trace mechanism and has a much larger code
12202and data size. Note that these values will vary depending on the
12203efficiency
12204of the compiler and the compiler options used during generation.
12205
12206  Previous Release:
12207    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
12208    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
12209  Current Release:
12210    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
12211    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
12212
12213
122142) iASL Compiler/Disassembler:
12215
12216Fixed an internal error that was generated for any forward references to
12217ASL
12218Alias objects.
12219
12220----------------------------------------
1222113 January 2006. Summary of changes for version 20060113:
12222
122231) ACPI CA Core Subsystem:
12224
12225Added 2006 copyright to all module headers and signons. This affects
12226virtually every file in the ACPICA core subsystem, iASL compiler, and the
12227utilities.
12228
12229Enhanced the ACPICA error reporting in order to simplify user migration
12230to
12231the non-debug version of ACPICA. Replaced all instances of the
12232ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
12233debug
12234levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
12235respectively. This preserves all error and warning messages in the non-
12236debug
12237version of the ACPICA code (this has been referred to as the "debug lite"
12238option.) Over 200 cases were converted to create a total of over 380
12239error/warning messages across the ACPICA code. This increases the code
12240and
12241data size of the default non-debug version of the code somewhat (about
1224213K),
12243but all error/warning reporting may be disabled if desired (and code
12244eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
12245configuration option. The size of the debug version of ACPICA remains
12246about
12247the same.
12248
12249Fixed a memory leak within the AML Debugger "Set" command. One object was
12250not properly deleted for every successful invocation of the command.
12251
12252Code and Data Size: The current and previous library sizes for the core
12253subsystem are shown below. These are the code and data sizes for the
12254acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12255These
12256values do not include any ACPI driver or OSPM code. The debug version of
12257the
12258code includes the debug output trace mechanism and has a much larger code
12259and data size. Note that these values will vary depending on the
12260efficiency
12261of the compiler and the compiler options used during generation.
12262
12263  Previous Release:
12264    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
12265    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
12266  Current Release:
12267    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
12268    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
12269
12270
122712) iASL Compiler/Disassembler:
12272
12273The compiler now officially supports the ACPI 3.0a specification that was
12274released on December 30, 2005. (Specification is available at
12275www.acpi.info)
12276
12277----------------------------------------
1227816 December 2005. Summary of changes for version 20051216:
12279
122801) ACPI CA Core Subsystem:
12281
12282Implemented optional support to allow unresolved names within ASL Package
12283objects. A null object is inserted in the package when a named reference
12284cannot be located in the current namespace. Enabled via the interpreter
12285slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
12286machines
12287that contain such code.
12288
12289Implemented an optimization to the initialization sequence that can
12290improve
12291boot time. During ACPI device initialization, the _STA method is now run
12292if
12293and only if the _INI method exists. The _STA method is used to determine
12294if
12295the device is present; An _INI can only be run if _STA returns present,
12296but
12297it is a waste of time to run the _STA method if the _INI does not exist.
12298(Prototype and assistance from Dong Wei)
12299
12300Implemented use of the C99 uintptr_t for the pointer casting macros if it
12301is
12302available in the current compiler. Otherwise, the default (void *) cast
12303is
12304used as before.
12305
12306Fixed some possible memory leaks found within the execution path of the
12307Break, Continue, If, and CreateField operators. (Valery Podrezov)
12308
12309Fixed a problem introduced in the 20051202 release where an exception is
12310generated during method execution if a control method attempts to declare
12311another method.
12312
12313Moved resource descriptor string constants that are used by both the AML
12314disassembler and AML debugger to the common utilities directory so that
12315these components are independent.
12316
12317Implemented support in the AcpiExec utility (-e switch) to globally
12318ignore
12319exceptions during control method execution (method is not aborted.)
12320
12321Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
12322generation.
12323
12324Code and Data Size: The current and previous library sizes for the core
12325subsystem are shown below. These are the code and data sizes for the
12326acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12327These
12328values do not include any ACPI driver or OSPM code. The debug version of
12329the
12330code includes the debug output trace mechanism and has a much larger code
12331and data size. Note that these values will vary depending on the
12332efficiency
12333of the compiler and the compiler options used during generation.
12334
12335  Previous Release:
12336    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12337    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
12338  Current Release:
12339    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
12340    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
12341
12342
123432) iASL Compiler/Disassembler:
12344
12345Fixed a problem where a CPU stack overflow fault could occur if a
12346recursive
12347method call was made from within a Return statement.
12348
12349----------------------------------------
1235002 December 2005. Summary of changes for version 20051202:
12351
123521) ACPI CA Core Subsystem:
12353
12354Modified the parsing of control methods to no longer create namespace
12355objects during the first pass of the parse. Objects are now created only
12356during the execute phase, at the moment the namespace creation operator
12357is
12358encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
12359This
12360should eliminate ALREADY_EXISTS exceptions seen on some machines where
12361reentrant control methods are protected by an AML mutex. The mutex will
12362now
12363correctly block multiple threads from attempting to create the same
12364object
12365more than once.
12366
12367Increased the number of available Owner Ids for namespace object tracking
12368from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
12369on
12370some machines with a large number of ACPI tables (either static or
12371dynamic).
12372
12373Fixed a problem with the AcpiExec utility where a fault could occur when
12374the
12375-b switch (batch mode) is used.
12376
12377Enhanced the namespace dump routine to output the owner ID for each
12378namespace object.
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.0K Code, 67.4K Data, 230.4K Total
12394  Current Release:
12395    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12396    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
12397
12398
123992) iASL Compiler/Disassembler:
12400
12401Fixed a parse error during compilation of certain Switch/Case constructs.
12402To
12403simplify the parse, the grammar now allows for multiple Default
12404statements
12405and this error is now detected and flagged during the analysis phase.
12406
12407Disassembler: The disassembly now includes the contents of the original
12408table header within a comment at the start of the file. This includes the
12409name and version of the original ASL compiler.
12410
12411----------------------------------------
1241217 November 2005. Summary of changes for version 20051117:
12413
124141) ACPI CA Core Subsystem:
12415
12416Fixed a problem in the AML parser where the method thread count could be
12417decremented below zero if any errors occurred during the method parse
12418phase.
12419This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
12420machines.
12421This also fixed a related regression with the mechanism that detects and
12422corrects methods that cannot properly handle reentrancy (related to the
12423deployment of the new OwnerId mechanism.)
12424
12425Eliminated the pre-parsing of control methods (to detect errors) during
12426table load. Related to the problem above, this was causing unwind issues
12427if
12428any errors occurred during the parse, and it seemed to be overkill. A
12429table
12430load should not be aborted if there are problems with any single control
12431method, thus rendering this feature rather pointless.
12432
12433Fixed a problem with the new table-driven resource manager where an
12434internal
12435buffer overflow could occur for small resource templates.
12436
12437Implemented a new external interface, AcpiGetVendorResource. This
12438interface
12439will find and return a vendor-defined resource descriptor within a _CRS
12440or
12441_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
12442Helgaas.
12443
12444Removed the length limit (200) on string objects as per the upcoming ACPI
124453.0A specification. This affects the following areas of the interpreter:
124461)
12447any implicit conversion of a Buffer to a String, 2) a String object
12448result
12449of the ASL Concatenate operator, 3) the String object result of the ASL
12450ToString operator.
12451
12452Fixed a problem in the Windows OS interface layer (OSL) where a
12453WAIT_FOREVER
12454on a semaphore object would incorrectly timeout. This allows the
12455multithreading features of the AcpiExec utility to work properly under
12456Windows.
12457
12458Updated the Linux makefiles for the iASL compiler and AcpiExec to include
12459the recently added file named "utresrc.c".
12460
12461Code and Data Size: The current and previous library sizes for the core
12462subsystem are shown below. These are the code and data sizes for the
12463acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12464These
12465values do not include any ACPI driver or OSPM code. The debug version of
12466the
12467code includes the debug output trace mechanism and has a much larger code
12468and data size. Note that these values will vary depending on the
12469efficiency
12470of the compiler and the compiler options used during generation.
12471
12472  Previous Release:
12473    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
12474    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12475  Current Release:
12476    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12477    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12478
12479
124802) iASL Compiler/Disassembler:
12481
12482Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
12483specification. For the iASL compiler, this means that string literals
12484within
12485the source ASL can be of any length.
12486
12487Enhanced the listing output to dump the AML code for resource descriptors
12488immediately after the ASL code for each descriptor, instead of in a block
12489at
12490the end of the entire resource template.
12491
12492Enhanced the compiler debug output to dump the entire original parse tree
12493constructed during the parse phase, before any transforms are applied to
12494the
12495tree. The transformed tree is dumped also.
12496
12497----------------------------------------
1249802 November 2005. Summary of changes for version 20051102:
12499
125001) ACPI CA Core Subsystem:
12501
12502Modified the subsystem initialization sequence to improve GPE support.
12503The
12504GPE initialization has been split into two parts in order to defer
12505execution
12506of the _PRW methods (Power Resources for Wake) until after the hardware
12507is
12508fully initialized and the SCI handler is installed. This allows the _PRW
12509methods to access fields protected by the Global Lock. This will fix
12510systems
12511where a NO_GLOBAL_LOCK exception has been seen during initialization.
12512
12513Converted the ACPI internal object disassemble and display code within
12514the
12515AML debugger to fully table-driven operation, reducing code size and
12516increasing maintainability.
12517
12518Fixed a regression with the ConcatenateResTemplate() ASL operator
12519introduced
12520in the 20051021 release.
12521
12522Implemented support for "local" internal ACPI object types within the
12523debugger "Object" command and the AcpiWalkNamespace external interfaces.
12524These local types include RegionFields, BankFields, IndexFields, Alias,
12525and
12526reference objects.
12527
12528Moved common AML resource handling code into a new file, "utresrc.c".
12529This
12530code is shared by both the Resource Manager and the AML Debugger.
12531
12532Code and Data Size: The current and previous library sizes for the core
12533subsystem are shown below. These are the code and data sizes for the
12534acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12535These
12536values do not include any ACPI driver or OSPM code. The debug version of
12537the
12538code includes the debug output trace mechanism and has a much larger code
12539and data size. Note that these values will vary depending on the
12540efficiency
12541of the compiler and the compiler options used during generation.
12542
12543  Previous Release:
12544    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
12545    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
12546  Current Release:
12547    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
12548    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12549
12550
125512) iASL Compiler/Disassembler:
12552
12553Fixed a problem with very large initializer lists (more than 4000
12554elements)
12555for both Buffer and Package objects where the parse stack could overflow.
12556
12557Enhanced the pre-compile source code scan for non-ASCII characters to
12558ignore
12559characters within comment fields. The scan is now always performed and is
12560no
12561longer optional, detecting invalid characters within a source file
12562immediately rather than during the parse phase or later.
12563
12564Enhanced the ASL grammar definition to force early reductions on all
12565list-
12566style grammar elements so that the overall parse stack usage is greatly
12567reduced. This should improve performance and reduce the possibility of
12568parse
12569stack overflow.
12570
12571Eliminated all reduce/reduce conflicts in the iASL parser generation.
12572Also,
12573with the addition of a %expected statement, the compiler generates from
12574source with no warnings.
12575
12576Fixed a possible segment fault in the disassembler if the input filename
12577does not contain a "dot" extension (Thomas Renninger).
12578
12579----------------------------------------
1258021 October 2005. Summary of changes for version 20051021:
12581
125821) ACPI CA Core Subsystem:
12583
12584Implemented support for the EM64T and other x86-64 processors. This
12585essentially entails recognizing that these processors support non-aligned
12586memory transfers. Previously, all 64-bit processors were assumed to lack
12587hardware support for non-aligned transfers.
12588
12589Completed conversion of the Resource Manager to nearly full table-driven
12590operation. Specifically, the resource conversion code (convert AML to
12591internal format and the reverse) and the debug code to dump internal
12592resource descriptors are fully table-driven, reducing code and data size
12593and
12594improving maintainability.
12595
12596The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
12597word
12598on 64-bit processors instead of a fixed 32-bit word. (With assistance
12599from
12600Alexey Starikovskiy)
12601
12602Implemented support within the resource conversion code for the Type-
12603Specific byte within the various ACPI 3.0 *WordSpace macros.
12604
12605Fixed some issues within the resource conversion code for the type-
12606specific
12607flags for both Memory and I/O address resource descriptors. For Memory,
12608implemented support for the MTP and TTP flags. For I/O, split the TRS and
12609TTP flags into two separate fields.
12610
12611Code and Data Size: The current and previous library sizes for the core
12612subsystem are shown below. These are the code and data sizes for the
12613acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12614These
12615values do not include any ACPI driver or OSPM code. The debug version of
12616the
12617code includes the debug output trace mechanism and has a much larger code
12618and data size. Note that these values will vary depending on the
12619efficiency
12620of the compiler and the compiler options used during generation.
12621
12622  Previous Release:
12623    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
12624    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
12625  Current Release:
12626    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
12627    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
12628
12629
12630
126312) iASL Compiler/Disassembler:
12632
12633Relaxed a compiler restriction that disallowed a ResourceIndex byte if
12634the
12635corresponding ResourceSource string was not also present in a resource
12636descriptor declaration. This restriction caused problems with existing
12637AML/ASL code that includes the Index byte without the string. When such
12638AML
12639was disassembled, it could not be compiled without modification. Further,
12640the modified code created a resource template with a different size than
12641the
12642original, breaking code that used fixed offsets into the resource
12643template
12644buffer.
12645
12646Removed a recent feature of the disassembler to ignore a lone
12647ResourceIndex
12648byte. This byte is now emitted if present so that the exact AML can be
12649reproduced when the disassembled code is recompiled.
12650
12651Improved comments and text alignment for the resource descriptor code
12652emitted by the disassembler.
12653
12654Implemented disassembler support for the ACPI 3.0 AccessSize field within
12655a
12656Register() resource descriptor.
12657
12658----------------------------------------
1265930 September 2005. Summary of changes for version 20050930:
12660
126611) ACPI CA Core Subsystem:
12662
12663Completed a major overhaul of the Resource Manager code - specifically,
12664optimizations in the area of the AML/internal resource conversion code.
12665The
12666code has been optimized to simplify and eliminate duplicated code, CPU
12667stack
12668use has been decreased by optimizing function parameters and local
12669variables, and naming conventions across the manager have been
12670standardized
12671for clarity and ease of maintenance (this includes function, parameter,
12672variable, and struct/typedef names.) The update may force changes in some
12673driver code, depending on how resources are handled by the host OS.
12674
12675All Resource Manager dispatch and information tables have been moved to a
12676single location for clarity and ease of maintenance. One new file was
12677created, named "rsinfo.c".
12678
12679The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
12680guarantee that the argument is not evaluated twice, making them less
12681prone
12682to macro side-effects. However, since there exists the possibility of
12683additional stack use if a particular compiler cannot optimize them (such
12684as
12685in the debug generation case), the original macros are optionally
12686available.
12687Note that some invocations of the return_VALUE macro may now cause size
12688mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
12689to
12690eliminate these. (From Randy Dunlap)
12691
12692Implemented a new mechanism to enable debug tracing for individual
12693control
12694methods. A new external interface, AcpiDebugTrace, is provided to enable
12695this mechanism. The intent is to allow the host OS to easily enable and
12696disable tracing for problematic control methods. This interface can be
12697easily exposed to a user or debugger interface if desired. See the file
12698psxface.c for details.
12699
12700AcpiUtCallocate will now return a valid pointer if a length of zero is
12701specified - a length of one is used and a warning is issued. This matches
12702the behavior of AcpiUtAllocate.
12703
12704Code and Data Size: The current and previous library sizes for the core
12705subsystem are shown below. These are the code and data sizes for the
12706acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12707These
12708values do not include any ACPI driver or OSPM code. The debug version of
12709the
12710code includes the debug output trace mechanism and has a much larger code
12711and data size. Note that these values will vary depending on the
12712efficiency
12713of the compiler and the compiler options used during generation.
12714
12715  Previous Release:
12716    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
12717    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
12718  Current Release:
12719    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
12720    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
12721
12722
127232) iASL Compiler/Disassembler:
12724
12725A remark is issued if the effective compile-time length of a package or
12726buffer is zero. Previously, this was a warning.
12727
12728----------------------------------------
1272916 September 2005. Summary of changes for version 20050916:
12730
127311) ACPI CA Core Subsystem:
12732
12733Fixed a problem within the Resource Manager where support for the Generic
12734Register descriptor was not fully implemented. This descriptor is now
12735fully
12736recognized, parsed, disassembled, and displayed.
12737
12738Completely restructured the Resource Manager code to utilize table-driven
12739dispatch and lookup, eliminating many of the large switch() statements.
12740This
12741reduces overall subsystem code size and code complexity. Affects the
12742resource parsing and construction, disassembly, and debug dump output.
12743
12744Cleaned up and restructured the debug dump output for all resource
12745descriptors. Improved readability of the output and reduced code size.
12746
12747Fixed a problem where changes to internal data structures caused the
12748optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
12749
12750Code and Data Size: The current and previous library sizes for the core
12751subsystem are shown below. These are the code and data sizes for the
12752acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12753These
12754values do not include any ACPI driver or OSPM code. The debug version of
12755the
12756code includes the debug output trace mechanism and has a much larger code
12757and data size. Note that these values will vary depending on the
12758efficiency
12759of the compiler and the compiler options used during generation.
12760
12761  Previous Release:
12762    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
12763    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
12764  Current Release:
12765    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
12766    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
12767
12768
127692) iASL Compiler/Disassembler:
12770
12771Updated the disassembler to automatically insert an EndDependentFn()
12772macro
12773into the ASL stream if this macro is missing in the original AML code,
12774simplifying compilation of the resulting ASL module.
12775
12776Fixed a problem in the disassembler where a disassembled ResourceSource
12777string (within a large resource descriptor) was not surrounded by quotes
12778and
12779not followed by a comma, causing errors when the resulting ASL module was
12780compiled. Also, escape sequences within a ResourceSource string are now
12781handled correctly (especially "\\")
12782
12783----------------------------------------
1278402 September 2005. Summary of changes for version 20050902:
12785
127861) ACPI CA Core Subsystem:
12787
12788Fixed a problem with the internal Owner ID allocation and deallocation
12789mechanisms for control method execution and recursive method invocation.
12790This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
12791messages seen on some systems. Recursive method invocation depth is
12792currently limited to 255. (Alexey Starikovskiy)
12793
12794Completely eliminated all vestiges of support for the "module-level
12795executable code" until this support is fully implemented and debugged.
12796This
12797should eliminate the NO_RETURN_VALUE exceptions seen during table load on
12798some systems that invoke this support.
12799
12800Fixed a problem within the resource manager code where the transaction
12801flags
12802for a 64-bit address descriptor were handled incorrectly in the type-
12803specific flag byte.
12804
12805Consolidated duplicate code within the address descriptor resource
12806manager
12807code, reducing overall subsystem code size.
12808
12809Fixed a fault when using the AML debugger "disassemble" command to
12810disassemble individual control methods.
12811
12812Removed references to the "release_current" directory within the Unix
12813release package.
12814
12815Code and Data Size: The current and previous core subsystem library sizes
12816are shown below. These are the code and data sizes for the acpica.lib
12817produced by the Microsoft Visual C++ 6.0 compiler. These values do not
12818include any ACPI driver or OSPM code. The debug version of the code
12819includes
12820the debug output trace mechanism and has a much larger code and data
12821size.
12822Note that these values will vary depending on the efficiency of the
12823compiler
12824and the compiler options used during generation.
12825
12826  Previous Release:
12827    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12828    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
12829  Current Release:
12830    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
12831    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
12832
12833
128342) iASL Compiler/Disassembler:
12835
12836Implemented an error check for illegal duplicate values in the interrupt
12837and
12838dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
12839Interrupt().
12840
12841Implemented error checking for the Irq() and IrqNoFlags() macros to
12842detect
12843too many values in the interrupt list (16 max) and invalid values in the
12844list (range 0 - 15)
12845
12846The maximum length string literal within an ASL file is now restricted to
12847200 characters as per the ACPI specification.
12848
12849Fixed a fault when using the -ln option (generate namespace listing).
12850
12851Implemented an error check to determine if a DescriptorName within a
12852resource descriptor has already been used within the current scope.
12853
12854----------------------------------------
1285515 August 2005.  Summary of changes for version 20050815:
12856
128571) ACPI CA Core Subsystem:
12858
12859Implemented a full bytewise compare to determine if a table load request
12860is
12861attempting to load a duplicate table. The compare is performed if the
12862table
12863signatures and table lengths match. This will allow different tables with
12864the same OEM Table ID and revision to be loaded - probably against the
12865ACPI
12866specification, but discovered in the field nonetheless.
12867
12868Added the changes.txt logfile to each of the zipped release packages.
12869
12870Code and Data Size: Current and previous core subsystem library sizes are
12871shown below. These are the code and data sizes for the acpica.lib
12872produced
12873by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12874any ACPI driver or OSPM code. The debug version of the code includes the
12875debug output trace mechanism and has a much larger code and data size.
12876Note
12877that these values will vary depending on the efficiency of the compiler
12878and
12879the compiler options used during generation.
12880
12881  Previous Release:
12882    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12883    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
12884  Current Release:
12885    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12886    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
12887
12888
128892) iASL Compiler/Disassembler:
12890
12891Fixed a problem where incorrect AML code could be generated for Package
12892objects if optimization is disabled (via the -oa switch).
12893
12894Fixed a problem with where incorrect AML code is generated for variable-
12895length packages when the package length is not specified and the number
12896of
12897initializer values is greater than 255.
12898
12899
12900----------------------------------------
1290129 July 2005.  Summary of changes for version 20050729:
12902
129031) ACPI CA Core Subsystem:
12904
12905Implemented support to ignore an attempt to install/load a particular
12906ACPI
12907table more than once. Apparently there exists BIOS code that repeatedly
12908attempts to load the same SSDT upon certain events. With assistance from
12909Venkatesh Pallipadi.
12910
12911Restructured the main interface to the AML parser in order to correctly
12912handle all exceptional conditions. This will prevent leakage of the
12913OwnerId
12914resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
12915some
12916machines. With assistance from Alexey Starikovskiy.
12917
12918Support for "module level code" has been disabled in this version due to
12919a
12920number of issues that have appeared on various machines. The support can
12921be
12922enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
12923compilation. When the issues are fully resolved, the code will be enabled
12924by
12925default again.
12926
12927Modified the internal functions for debug print support to define the
12928FunctionName parameter as a (const char *) for compatibility with
12929compiler
12930built-in macros such as __FUNCTION__, etc.
12931
12932Linted the entire ACPICA source tree for both 32-bit and 64-bit.
12933
12934Implemented support to display an object count summary for the AML
12935Debugger
12936commands Object and Methods.
12937
12938Code and Data Size: Current and previous core subsystem library sizes are
12939shown below. These are the code and data sizes for the acpica.lib
12940produced
12941by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12942any ACPI driver or OSPM code. The debug version of the code includes the
12943debug output trace mechanism and has a much larger code and data size.
12944Note
12945that these values will vary depending on the efficiency of the compiler
12946and
12947the compiler options used during generation.
12948
12949  Previous Release:
12950    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
12951    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
12952  Current Release:
12953    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12954    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
12955
12956
129572) iASL Compiler/Disassembler:
12958
12959Fixed a regression that appeared in the 20050708 version of the compiler
12960where an error message was inadvertently emitted for invocations of the
12961_OSI
12962reserved control method.
12963
12964----------------------------------------
1296508 July 2005.  Summary of changes for version 20050708:
12966
129671) ACPI CA Core Subsystem:
12968
12969The use of the CPU stack in the debug version of the subsystem has been
12970considerably reduced. Previously, a debug structure was declared in every
12971function that used the debug macros. This structure has been removed in
12972favor of declaring the individual elements as parameters to the debug
12973functions. This reduces the cumulative stack use during nested execution
12974of
12975ACPI function calls at the cost of a small increase in the code size of
12976the
12977debug version of the subsystem. With assistance from Alexey Starikovskiy
12978and
12979Len Brown.
12980
12981Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
12982headers to define a macro that will return the current function name at
12983runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
12984by
12985the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
12986compiler-dependent header, the function name is saved on the CPU stack
12987(one
12988pointer per function.) This mechanism is used because apparently there
12989exists no standard ANSI-C defined macro that that returns the function
12990name.
12991
12992Redesigned and reimplemented the "Owner ID" mechanism used to track
12993namespace objects created/deleted by ACPI tables and control method
12994execution. A bitmap is now used to allocate and free the IDs, thus
12995solving
12996the wraparound problem present in the previous implementation. The size
12997of
12998the namespace node descriptor was reduced by 2 bytes as a result (Alexey
12999Starikovskiy).
13000
13001Removed the UINT32_BIT and UINT16_BIT types that were used for the
13002bitfield
13003flag definitions within the headers for the predefined ACPI tables. These
13004have been replaced by UINT8_BIT in order to increase the code portability
13005of
13006the subsystem. If the use of UINT8 remains a problem, we may be forced to
13007eliminate bitfields entirely because of a lack of portability.
13008
13009Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
13010This
13011is a frequently used function and this improvement increases the
13012performance
13013of the entire subsystem (Alexey Starikovskiy).
13014
13015Fixed several possible memory leaks and the inverse - premature object
13016deletion (Alexey Starikovskiy).
13017
13018Code and Data Size: Current and previous core subsystem library sizes are
13019shown below. These are the code and data sizes for the acpica.lib
13020produced
13021by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13022any ACPI driver or OSPM code. The debug version of the code includes the
13023debug output trace mechanism and has a much larger code and data size.
13024Note
13025that these values will vary depending on the efficiency of the compiler
13026and
13027the compiler options used during generation.
13028
13029  Previous Release:
13030    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
13031    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
13032  Current Release:
13033    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
13034    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
13035
13036----------------------------------------
1303724 June 2005.  Summary of changes for version 20050624:
13038
130391) ACPI CA Core Subsystem:
13040
13041Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
13042the host-defined cache object. This allows the OSL implementation to
13043define
13044and type this object in any manner desired, simplifying the OSL
13045implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
13046Linux, and should be defined in the OS-specific header file for other
13047operating systems as required.
13048
13049Changed the interface to AcpiOsAcquireObject to directly return the
13050requested object as the function return (instead of ACPI_STATUS.) This
13051change was made for performance reasons, since this is the purpose of the
13052interface in the first place. AcpiOsAcquireObject is now similar to the
13053AcpiOsAllocate interface.
13054
13055Implemented a new AML debugger command named Businfo. This command
13056displays
13057information about all devices that have an associate _PRT object. The
13058_ADR,
13059_HID, _UID, and _CID are displayed for these devices.
13060
13061Modified the initialization sequence in AcpiInitializeSubsystem to call
13062the
13063OSL interface AcpiOslInitialize first, before any local initialization.
13064This
13065change was required because the global initialization now calls OSL
13066interfaces.
13067
13068Enhanced the Dump command to display the entire contents of Package
13069objects
13070(including all sub-objects and their values.)
13071
13072Restructured the code base to split some files because of size and/or
13073because the code logically belonged in a separate file. New files are
13074listed
13075below. All makefiles and project files included in the ACPI CA release
13076have
13077been updated.
13078    utilities/utcache.c           /* Local cache interfaces */
13079    utilities/utmutex.c           /* Local mutex support */
13080    utilities/utstate.c           /* State object support */
13081    interpreter/parser/psloop.c   /* Main AML parse loop */
13082
13083Code and Data Size: Current and previous core subsystem library sizes are
13084shown below. These are the code and data sizes for the acpica.lib
13085produced
13086by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13087any ACPI driver or OSPM code. The debug version of the code includes the
13088debug output trace mechanism and has a much larger code and data size.
13089Note
13090that these values will vary depending on the efficiency of the compiler
13091and
13092the compiler options used during generation.
13093
13094  Previous Release:
13095    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
13096    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
13097  Current Release:
13098    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
13099    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
13100
13101
131022) iASL Compiler/Disassembler:
13103
13104Fixed a regression introduced in version 20050513 where the use of a
13105Package
13106object within a Case() statement caused a compile time exception. The
13107original behavior has been restored (a Match() operator is emitted.)
13108
13109----------------------------------------
1311017 June 2005.  Summary of changes for version 20050617:
13111
131121) ACPI CA Core Subsystem:
13113
13114Moved the object cache operations into the OS interface layer (OSL) to
13115allow
13116the host OS to handle these operations if desired (for example, the Linux
13117OSL will invoke the slab allocator). This support is optional; the
13118compile
13119time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
13120cache
13121code in the ACPI CA core. The new OSL interfaces are shown below. See
13122utalloc.c for an example implementation, and acpiosxf.h for the exact
13123interface definitions. With assistance from Alexey Starikovskiy.
13124    AcpiOsCreateCache
13125    AcpiOsDeleteCache
13126    AcpiOsPurgeCache
13127    AcpiOsAcquireObject
13128    AcpiOsReleaseObject
13129
13130Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
13131return
13132and restore a flags parameter. This fits better with many OS lock models.
13133Note: the current execution state (interrupt handler or not) is no longer
13134passed to these interfaces. If necessary, the OSL must determine this
13135state
13136by itself, a simple and fast operation. With assistance from Alexey
13137Starikovskiy.
13138
13139Fixed a problem in the ACPI table handling where a valid XSDT was assumed
13140present if the revision of the RSDP was 2 or greater. According to the
13141ACPI
13142specification, the XSDT is optional in all cases, and the table manager
13143therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
13144Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
13145contain
13146only the RSDT.
13147
13148Fixed an interpreter problem with the Mid() operator in the case of an
13149input
13150string where the resulting output string is of zero length. It now
13151correctly
13152returns a valid, null terminated string object instead of a string object
13153with a null pointer.
13154
13155Fixed a problem with the control method argument handling to allow a
13156store
13157to an Arg object that already contains an object of type Device. The
13158Device
13159object is now correctly overwritten. Previously, an error was returned.
13160
13161
13162Enhanced the debugger Find command to emit object values in addition to
13163the
13164found object pathnames. The output format is the same as the dump
13165namespace
13166command.
13167
13168Enhanced the debugger Set command. It now has the ability to set the
13169value
13170of any Named integer object in the namespace (Previously, only method
13171locals
13172and args could be set.)
13173
13174Code and Data Size: Current and previous core subsystem library sizes are
13175shown below. These are the code and data sizes for the acpica.lib
13176produced
13177by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13178any ACPI driver or OSPM code. The debug version of the code includes the
13179debug output trace mechanism and has a much larger code and data size.
13180Note
13181that these values will vary depending on the efficiency of the compiler
13182and
13183the compiler options used during generation.
13184
13185  Previous Release:
13186    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
13187    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
13188  Current Release:
13189    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
13190    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
13191
13192
131932) iASL Compiler/Disassembler:
13194
13195Fixed a regression in the disassembler where if/else/while constructs
13196were
13197output incorrectly. This problem was introduced in the previous release
13198(20050526). This problem also affected the single-step disassembly in the
13199debugger.
13200
13201Fixed a problem where compiling the reserved _OSI method would randomly
13202(but
13203rarely) produce compile errors.
13204
13205Enhanced the disassembler to emit compilable code in the face of
13206incorrect
13207AML resource descriptors. If the optional ResourceSourceIndex is present,
13208but the ResourceSource is not, do not emit the ResourceSourceIndex in the
13209disassembly. Otherwise, the resulting code cannot be compiled without
13210errors.
13211
13212----------------------------------------
1321326 May 2005.  Summary of changes for version 20050526:
13214
132151) ACPI CA Core Subsystem:
13216
13217Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
13218the module level (not within a control method.) These opcodes are
13219executed
13220exactly once at the time the table is loaded. This type of code was legal
13221up
13222until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
13223in
13224order to provide backwards compatibility with earlier BIOS
13225implementations.
13226This eliminates the "Encountered executable code at module level" warning
13227that was previously generated upon detection of such code.
13228
13229Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
13230inadvertently be generated during the lookup of namespace objects in the
13231second pass parse of ACPI tables and control methods. It appears that
13232this
13233problem could occur during the resolution of forward references to
13234namespace
13235objects.
13236
13237Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
13238corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
13239allows the deadlock detection debug code to be compiled out in the normal
13240case, improving mutex performance (and overall subsystem performance)
13241considerably.
13242
13243Implemented a handful of miscellaneous fixes for possible memory leaks on
13244error conditions and error handling control paths. These fixes were
13245suggested by FreeBSD and the Coverity Prevent source code analysis tool.
13246
13247Added a check for a null RSDT pointer in AcpiGetFirmwareTable
13248(tbxfroot.c)
13249to prevent a fault in this error case.
13250
13251Code and Data Size: Current and previous core subsystem library sizes are
13252shown below. These are the code and data sizes for the acpica.lib
13253produced
13254by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13255any ACPI driver or OSPM code. The debug version of the code includes the
13256debug output trace mechanism and has a much larger code and data size.
13257Note
13258that these values will vary depending on the efficiency of the compiler
13259and
13260the compiler options used during generation.
13261
13262  Previous Release:
13263    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13264    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13265  Current Release:
13266    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
13267    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
13268
13269
132702) iASL Compiler/Disassembler:
13271
13272Implemented support to allow Type 1 and Type 2 ASL operators to appear at
13273the module level (not within a control method.) These operators will be
13274executed once at the time the table is loaded. This type of code was
13275legal
13276up until the release of ACPI 2.0B (2002) and is now supported by the iASL
13277compiler in order to provide backwards compatibility with earlier BIOS
13278ASL
13279code.
13280
13281The ACPI integer width (specified via the table revision ID or the -r
13282override, 32 or 64 bits) is now used internally during compile-time
13283constant
13284folding to ensure that constants are truncated to 32 bits if necessary.
13285Previously, the revision ID value was only emitted in the AML table
13286header.
13287
13288An error message is now generated for the Mutex and Method operators if
13289the
13290SyncLevel parameter is outside the legal range of 0 through 15.
13291
13292Fixed a problem with the Method operator ParameterTypes list handling
13293(ACPI
132943.0). Previously, more than 2 types or 2 arguments generated a syntax
13295error.
13296The actual underlying implementation of method argument typechecking is
13297still under development, however.
13298
13299----------------------------------------
1330013 May 2005.  Summary of changes for version 20050513:
13301
133021) ACPI CA Core Subsystem:
13303
13304Implemented support for PCI Express root bridges -- added support for
13305device
13306PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
13307
13308The interpreter now automatically truncates incoming 64-bit constants to
1330932
13310bits if currently executing out of a 32-bit ACPI table (Revision < 2).
13311This
13312also affects the iASL compiler constant folding. (Note: as per below, the
13313iASL compiler no longer allows 64-bit constants within 32-bit tables.)
13314
13315Fixed a problem where string and buffer objects with "static" pointers
13316(pointers to initialization data within an ACPI table) were not handled
13317consistently. The internal object copy operation now always copies the
13318data
13319to a newly allocated buffer, regardless of whether the source object is
13320static or not.
13321
13322Fixed a problem with the FromBCD operator where an implicit result
13323conversion was improperly performed while storing the result to the
13324target
13325operand. Since this is an "explicit conversion" operator, the implicit
13326conversion should never be performed on the output.
13327
13328Fixed a problem with the CopyObject operator where a copy to an existing
13329named object did not always completely overwrite the existing object
13330stored
13331at name. Specifically, a buffer-to-buffer copy did not delete the
13332existing
13333buffer.
13334
13335Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
13336and
13337structs for consistency.
13338
13339Code and Data Size: Current and previous core subsystem library sizes are
13340shown below. These are the code and data sizes for the acpica.lib
13341produced
13342by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13343any ACPI driver or OSPM code. The debug version of the code includes the
13344debug output trace mechanism and has a much larger code and data size.
13345Note
13346that these values will vary depending on the efficiency of the compiler
13347and
13348the compiler options used during generation.
13349
13350  Previous Release:
13351    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13352    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13353  Current Release: (Same sizes)
13354    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13355    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13356
13357
133582) iASL Compiler/Disassembler:
13359
13360The compiler now emits a warning if an attempt is made to generate a 64-
13361bit
13362integer constant from within a 32-bit ACPI table (Revision < 2). The
13363integer
13364is truncated to 32 bits.
13365
13366Fixed a problem with large package objects: if the static length of the
13367package is greater than 255, the "variable length package" opcode is
13368emitted. Previously, this caused an error. This requires an update to the
13369ACPI spec, since it currently (incorrectly) states that packages larger
13370than
13371255 elements are not allowed.
13372
13373The disassembler now correctly handles variable length packages and
13374packages
13375larger than 255 elements.
13376
13377----------------------------------------
1337808 April 2005.  Summary of changes for version 20050408:
13379
133801) ACPI CA Core Subsystem:
13381
13382Fixed three cases in the interpreter where an "index" argument to an ASL
13383function was still (internally) 32 bits instead of the required 64 bits.
13384This was the Index argument to the Index, Mid, and Match operators.
13385
13386The "strupr" function is now permanently local (AcpiUtStrupr), since this
13387is
13388not a POSIX-defined function and not present in most kernel-level C
13389libraries. All references to the C library strupr function have been
13390removed
13391from the headers.
13392
13393Completed the deployment of static functions/prototypes. All prototypes
13394with
13395the static attribute have been moved from the headers to the owning C
13396file.
13397
13398Implemented an extract option (-e) for the AcpiBin utility (AML binary
13399utility). This option allows the utility to extract individual ACPI
13400tables
13401from the output of AcpiDmp. It provides the same functionality of the
13402acpixtract.pl perl script without the worry of setting the correct perl
13403options. AcpiBin runs on Windows and has not yet been generated/validated
13404in
13405the Linux/Unix environment (but should be soon).
13406
13407Updated and fixed the table dump option for AcpiBin (-d). This option
13408converts a single ACPI table to a hex/ascii file, similar to the output
13409of
13410AcpiDmp.
13411
13412Code and Data Size: Current and previous core subsystem library sizes are
13413shown below. These are the code and data sizes for the acpica.lib
13414produced
13415by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13416any ACPI driver or OSPM code. The debug version of the code includes the
13417debug output trace mechanism and has a much larger code and data size.
13418Note
13419that these values will vary depending on the efficiency of the compiler
13420and
13421the compiler options used during generation.
13422
13423  Previous Release:
13424    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
13425    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
13426  Current Release:
13427    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13428    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13429
13430
134312) iASL Compiler/Disassembler:
13432
13433Disassembler fix: Added a check to ensure that the table length found in
13434the
13435ACPI table header within the input file is not longer than the actual
13436input
13437file size. This indicates some kind of file or table corruption.
13438
13439----------------------------------------
1344029 March 2005.  Summary of changes for version 20050329:
13441
134421) ACPI CA Core Subsystem:
13443
13444An error is now generated if an attempt is made to create a Buffer Field
13445of
13446length zero (A CreateField with a length operand of zero.)
13447
13448The interpreter now issues a warning whenever executable code at the
13449module
13450level is detected during ACPI table load. This will give some idea of the
13451prevalence of this type of code.
13452
13453Implemented support for references to named objects (other than control
13454methods) within package objects.
13455
13456Enhanced package object output for the debug object. Package objects are
13457now
13458completely dumped, showing all elements.
13459
13460Enhanced miscellaneous object output for the debug object. Any object can
13461now be written to the debug object (for example, a device object can be
13462written, and the type of the object will be displayed.)
13463
13464The "static" qualifier has been added to all local functions across both
13465the
13466core subsystem and the iASL compiler.
13467
13468The number of "long" lines (> 80 chars) within the source has been
13469significantly reduced, by about 1/3.
13470
13471Cleaned up all header files to ensure that all CA/iASL functions are
13472prototyped (even static functions) and the formatting is consistent.
13473
13474Two new header files have been added, acopcode.h and acnames.h.
13475
13476Removed several obsolete functions that were no longer used.
13477
13478Code and Data Size: Current and previous core subsystem library sizes are
13479shown below. These are the code and data sizes for the acpica.lib
13480produced
13481by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13482any ACPI driver or OSPM code. The debug version of the code includes the
13483debug output trace mechanism and has a much larger code and data size.
13484Note
13485that these values will vary depending on the efficiency of the compiler
13486and
13487the compiler options used during generation.
13488
13489  Previous Release:
13490    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13491    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
13492  Current Release:
13493    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
13494    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
13495
13496
13497
134982) iASL Compiler/Disassembler:
13499
13500Fixed a problem with the resource descriptor generation/support. For the
13501ResourceSourceIndex and the ResourceSource fields, both must be present,
13502or
13503both must be not present - can't have one without the other.
13504
13505The compiler now returns non-zero from the main procedure if any errors
13506have
13507occurred during the compilation.
13508
13509
13510----------------------------------------
1351109 March 2005.  Summary of changes for version 20050309:
13512
135131) ACPI CA Core Subsystem:
13514
13515The string-to-buffer implicit conversion code has been modified again
13516after
13517a change to the ACPI specification.  In order to match the behavior of
13518the
13519other major ACPI implementation, the target buffer is no longer truncated
13520if
13521the source string is smaller than an existing target buffer. This change
13522requires an update to the ACPI spec, and should eliminate the recent
13523AE_AML_BUFFER_LIMIT issues.
13524
13525The "implicit return" support was rewritten to a new algorithm that
13526solves
13527the general case. Rather than attempt to determine when a method is about
13528to
13529exit, the result of every ASL operator is saved momentarily until the
13530very
13531next ASL operator is executed. Therefore, no matter how the method exits,
13532there will always be a saved implicit return value. This feature is only
13533enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
13534eliminate
13535AE_AML_NO_RETURN_VALUE errors when enabled.
13536
13537Implemented implicit conversion support for the predicate (operand) of
13538the
13539If, Else, and While operators. String and Buffer arguments are
13540automatically
13541converted to Integers.
13542
13543Changed the string-to-integer conversion behavior to match the new ACPI
13544errata: "If no integer object exists, a new integer is created. The ASCII
13545string is interpreted as a hexadecimal constant. Each string character is
13546interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
13547with the first character as the most significant digit, and ending with
13548the
13549first non-hexadecimal character or end-of-string." This means that the
13550first
13551non-hex character terminates the conversion and this is the code that was
13552changed.
13553
13554Fixed a problem where the ObjectType operator would fail (fault) when
13555used
13556on an Index of a Package which pointed to a null package element. The
13557operator now properly returns zero (Uninitialized) in this case.
13558
13559Fixed a problem where the While operator used excessive memory by not
13560properly popping the result stack during execution. There was no memory
13561leak
13562after execution, however. (Code provided by Valery Podrezov.)
13563
13564Fixed a problem where references to control methods within Package
13565objects
13566caused the method to be invoked, instead of producing a reference object
13567pointing to the method.
13568
13569Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
13570to
13571improve performance and reduce code size. (Code provided by Alexey
13572Starikovskiy.)
13573
13574Code and Data Size: Current and previous core subsystem library sizes are
13575shown below. These are the code and data sizes for the acpica.lib
13576produced
13577by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13578any ACPI driver or OSPM code. The debug version of the code includes the
13579debug output trace mechanism and has a much larger code and data size.
13580Note
13581that these values will vary depending on the efficiency of the compiler
13582and
13583the compiler options used during generation.
13584
13585  Previous Release:
13586    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13587    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
13588  Current Release:
13589    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13590    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
13591
13592
135932) iASL Compiler/Disassembler:
13594
13595Fixed a problem with the Return operator with no arguments. Since the AML
13596grammar for the byte encoding requires an operand for the Return opcode,
13597the
13598compiler now emits a Return(Zero) for this case.  An ACPI specification
13599update has been written for this case.
13600
13601For tables other than the DSDT, namepath optimization is automatically
13602disabled. This is because SSDTs can be loaded anywhere in the namespace,
13603the
13604compiler has no knowledge of where, and thus cannot optimize namepaths.
13605
13606Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
13607inadvertently omitted from the ACPI specification, and will require an
13608update to the spec.
13609
13610The source file scan for ASCII characters is now optional (-a). This
13611change
13612was made because some vendors place non-ascii characters within comments.
13613However, the scan is simply a brute-force byte compare to ensure all
13614characters in the file are in the range 0x00 to 0x7F.
13615
13616Fixed a problem with the CondRefOf operator where the compiler was
13617inappropriately checking for the existence of the target. Since the point
13618of
13619the operator is to check for the existence of the target at run-time, the
13620compiler no longer checks for the target existence.
13621
13622Fixed a problem where errors generated from the internal AML interpreter
13623during constant folding were not handled properly, causing a fault.
13624
13625Fixed a problem with overly aggressive range checking for the Stall
13626operator. The valid range (max 255) is now only checked if the operand is
13627of
13628type Integer. All other operand types cannot be statically checked.
13629
13630Fixed a problem where control method references within the RefOf,
13631DeRefOf,
13632and ObjectType operators were not treated properly. They are now treated
13633as
13634actual references, not method invocations.
13635
13636Fixed and enhanced the "list namespace" option (-ln). This option was
13637broken
13638a number of releases ago.
13639
13640Improved error handling for the Field, IndexField, and BankField
13641operators.
13642The compiler now cleanly reports and recovers from errors in the field
13643component (FieldUnit) list.
13644
13645Fixed a disassembler problem where the optional ResourceDescriptor fields
13646TRS and TTP were not always handled correctly.
13647
13648Disassembler - Comments in output now use "//" instead of "/*"
13649
13650----------------------------------------
1365128 February 2005.  Summary of changes for version 20050228:
13652
136531) ACPI CA Core Subsystem:
13654
13655Fixed a problem where the result of an Index() operator (an object
13656reference) must increment the reference count on the target object for
13657the
13658life of the object reference.
13659
13660Implemented AML Interpreter and Debugger support for the new ACPI 3.0
13661Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
13662WordSpace
13663resource descriptors.
13664
13665Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
13666Space Descriptor" string, indicating interpreter support for the
13667descriptors
13668above.
13669
13670Implemented header support for the new ACPI 3.0 FADT flag bits.
13671
13672Implemented header support for the new ACPI 3.0 PCI Express bits for the
13673PM1
13674status/enable registers.
13675
13676Updated header support for the MADT processor local Apic struct and MADT
13677platform interrupt source struct for new ACPI 3.0 fields.
13678
13679Implemented header support for the SRAT and SLIT ACPI tables.
13680
13681Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
13682flag
13683at runtime.
13684
13685Code and Data Size: Current and previous core subsystem library sizes are
13686shown below. These are the code and data sizes for the acpica.lib
13687produced
13688by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13689any ACPI driver or OSPM code. The debug version of the code includes the
13690debug output trace mechanism and has a much larger code and data size.
13691Note
13692that these values will vary depending on the efficiency of the compiler
13693and
13694the compiler options used during generation.
13695
13696  Previous Release:
13697    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
13698    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
13699  Current Release:
13700    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13701    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
13702
13703
137042) iASL Compiler/Disassembler:
13705
13706Fixed a problem with the internal 64-bit String-to-integer conversion
13707with
13708strings less than two characters long.
13709
13710Fixed a problem with constant folding where the result of the Index()
13711operator can not be considered a constant. This means that Index() cannot
13712be
13713a type3 opcode and this will require an update to the ACPI specification.
13714
13715Disassembler: Implemented support for the TTP, MTP, and TRS resource
13716descriptor fields. These fields were inadvertently ignored and not output
13717in
13718the disassembly of the resource descriptor.
13719
13720
13721 ----------------------------------------
1372211 February 2005.  Summary of changes for version 20050211:
13723
137241) ACPI CA Core Subsystem:
13725
13726Implemented ACPI 3.0 support for implicit conversion within the Match()
13727operator. MatchObjects can now be of type integer, buffer, or string
13728instead
13729of just type integer.  Package elements are implicitly converted to the
13730type
13731of the MatchObject. This change aligns the behavior of Match() with the
13732behavior of the other logical operators (LLess(), etc.) It also requires
13733an
13734errata change to the ACPI specification as this support was intended for
13735ACPI 3.0, but was inadvertently omitted.
13736
13737Fixed a problem with the internal implicit "to buffer" conversion.
13738Strings
13739that are converted to buffers will cause buffer truncation if the string
13740is
13741smaller than the target buffer. Integers that are converted to buffers
13742will
13743not cause buffer truncation, only zero extension (both as per the ACPI
13744spec.) The problem was introduced when code was added to truncate the
13745buffer, but this should not be performed in all cases, only the string
13746case.
13747
13748Fixed a problem with the Buffer and Package operators where the
13749interpreter
13750would get confused if two such operators were used as operands to an ASL
13751operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
13752stack was not being popped after the execution of these operators,
13753resulting
13754in an AE_NO_RETURN_VALUE exception.
13755
13756Fixed a problem with constructs of the form Store(Index(...),...). The
13757reference object returned from Index was inadvertently resolved to an
13758actual
13759value. This problem was introduced in version 20050114 when the behavior
13760of
13761Store() was modified to restrict the object types that can be used as the
13762source operand (to match the ACPI specification.)
13763
13764Reduced excessive stack use within the AcpiGetObjectInfo procedure.
13765
13766Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
13767
13768Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
13769
13770Code and Data Size: Current and previous core subsystem library sizes are
13771shown below. These are the code and data sizes for the acpica.lib
13772produced
13773by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13774any ACPI driver or OSPM code. The debug version of the code includes the
13775debug output trace mechanism and has a much larger code and data size.
13776Note
13777that these values will vary depending on the efficiency of the compiler
13778and
13779the compiler options used during generation.
13780
13781  Previous Release:
13782    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
13783    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
13784  Current Release:
13785    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
13786    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
13787
13788
137892) iASL Compiler/Disassembler:
13790
13791Fixed a code generation problem in the constant folding optimization code
13792where incorrect code was generated if a constant was reduced to a buffer
13793object (i.e., a reduced type 5 opcode.)
13794
13795Fixed a typechecking problem for the ToBuffer operator. Caused by an
13796incorrect return type in the internal opcode information table.
13797
13798----------------------------------------
1379925 January 2005.  Summary of changes for version 20050125:
13800
138011) ACPI CA Core Subsystem:
13802
13803Fixed a recently introduced problem with the Global Lock where the
13804underlying semaphore was not created.  This problem was introduced in
13805version 20050114, and caused an AE_AML_NO_OPERAND exception during an
13806Acquire() operation on _GL.
13807
13808The local object cache is now optional, and is disabled by default. Both
13809AcpiExec and the iASL compiler enable the cache because they run in user
13810mode and this enhances their performance. #define
13811ACPI_ENABLE_OBJECT_CACHE
13812to enable the local cache.
13813
13814Fixed an issue in the internal function AcpiUtEvaluateObject concerning
13815the
13816optional "implicit return" support where an error was returned if no
13817return
13818object was expected, but one was implicitly returned. AE_OK is now
13819returned
13820in this case and the implicitly returned object is deleted.
13821AcpiUtEvaluateObject is only occasionally used, and only to execute
13822reserved
13823methods such as _STA and _INI where the return type is known up front.
13824
13825Fixed a few issues with the internal convert-to-integer code. It now
13826returns
13827an error if an attempt is made to convert a null string, a string of only
13828blanks/tabs, or a zero-length buffer. This affects both implicit
13829conversion
13830and explicit conversion via the ToInteger() operator.
13831
13832The internal debug code in AcpiUtAcquireMutex has been commented out. It
13833is
13834not needed for normal operation and should increase the performance of
13835the
13836entire subsystem. The code remains in case it is needed for debug
13837purposes
13838again.
13839
13840The AcpiExec source and makefile are included in the Unix/Linux package
13841for
13842the first time.
13843
13844Code and Data Size: Current and previous core subsystem library sizes are
13845shown below. These are the code and data sizes for the acpica.lib
13846produced
13847by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13848any ACPI driver or OSPM code. The debug version of the code includes the
13849debug output trace mechanism and has a much larger code and data size.
13850Note
13851that these values will vary depending on the efficiency of the compiler
13852and
13853the compiler options used during generation.
13854
13855  Previous Release:
13856    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
13857    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
13858  Current Release:
13859    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
13860    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
13861
138622) iASL Compiler/Disassembler:
13863
13864Switch/Case support: A warning is now issued if the type of the Switch
13865value
13866cannot be determined at compile time. For example, Switch(Arg0) will
13867generate the warning, and the type is assumed to be an integer. As per
13868the
13869ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
13870the
13871warning.
13872
13873Switch/Case support: Implemented support for buffer and string objects as
13874the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
13875buffers and strings.
13876
13877Switch/Case support: The emitted code for the LEqual() comparisons now
13878uses
13879the switch value as the first operand, not the second. The case value is
13880now
13881the second operand, and this allows the case value to be implicitly
13882converted to the type of the switch value, not the other way around.
13883
13884Switch/Case support: Temporary variables are now emitted immediately
13885within
13886the control method, not at the global level. This means that there are
13887now
1388836 temps available per-method, not 36 temps per-module as was the case
13889with
13890the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
13891
13892----------------------------------------
1389314 January 2005.  Summary of changes for version 20050114:
13894
13895Added 2005 copyright to all module headers.  This affects every module in
13896the core subsystem, iASL compiler, and the utilities.
13897
138981) ACPI CA Core Subsystem:
13899
13900Fixed an issue with the String-to-Buffer conversion code where the string
13901null terminator was not included in the buffer after conversion, but
13902there
13903is existing ASL that assumes the string null terminator is included. This
13904is
13905the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
13906introduced in the previous version when the code was updated to correctly
13907set the converted buffer size as per the ACPI specification. The ACPI
13908spec
13909is ambiguous and will be updated to specify that the null terminator must
13910be
13911included in the converted buffer. This also affects the ToBuffer() ASL
13912operator.
13913
13914Fixed a problem with the Mid() ASL/AML operator where it did not work
13915correctly on Buffer objects. Newly created sub-buffers were not being
13916marked
13917as initialized.
13918
13919
13920Fixed a problem in AcpiTbFindTable where incorrect string compares were
13921performed on the OemId and OemTableId table header fields.  These fields
13922are
13923not null terminated, so strncmp is now used instead of strcmp.
13924
13925Implemented a restriction on the Store() ASL/AML operator to align the
13926behavior with the ACPI specification.  Previously, any object could be
13927used
13928as the source operand.  Now, the only objects that may be used are
13929Integers,
13930Buffers, Strings, Packages, Object References, and DDB Handles.  If
13931necessary, the original behavior can be restored by enabling the
13932EnableInterpreterSlack flag.
13933
13934Enhanced the optional "implicit return" support to allow an implicit
13935return
13936value from methods that are invoked externally via the AcpiEvaluateObject
13937interface.  This enables implicit returns from the _STA and _INI methods,
13938for example.
13939
13940Changed the Revision() ASL/AML operator to return the current version of
13941the
13942AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
13943returned
13944the supported ACPI version (This is the function of the _REV method).
13945
13946Updated the _REV predefined method to return the currently supported
13947version
13948of ACPI, now 3.
13949
13950Implemented batch mode option for the AcpiExec utility (-b).
13951
13952Code and Data Size: Current and previous core subsystem library sizes are
13953shown below. These are the code and data sizes for the acpica.lib
13954produced
13955by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13956any ACPI driver or OSPM code. The debug version of the code includes the
13957debug output trace mechanism and has a much larger code and data size.
13958Note
13959that these values will vary depending on the efficiency of the compiler
13960and
13961the compiler options used during generation.
13962
13963  Previous Release:
13964    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13965    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
13966  Current Release:
13967    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
13968    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
13969
13970----------------------------------------
1397110 December 2004.  Summary of changes for version 20041210:
13972
13973ACPI 3.0 support is nearing completion in both the iASL compiler and the
13974ACPI CA core subsystem.
13975
139761) ACPI CA Core Subsystem:
13977
13978Fixed a problem in the ToDecimalString operator where the resulting
13979string
13980length was incorrectly calculated. The length is now calculated exactly,
13981eliminating incorrect AE_STRING_LIMIT exceptions.
13982
13983Fixed a problem in the ToHexString operator to allow a maximum 200
13984character
13985string to be produced.
13986
13987Fixed a problem in the internal string-to-buffer and buffer-to-buffer
13988copy
13989routine where the length of the resulting buffer was not truncated to the
13990new size (if the target buffer already existed).
13991
13992Code and Data Size: Current and previous core subsystem library sizes are
13993shown below. These are the code and data sizes for the acpica.lib
13994produced
13995by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13996any ACPI driver or OSPM code. The debug version of the code includes the
13997debug output trace mechanism and has a much larger code and data size.
13998Note
13999that these values will vary depending on the efficiency of the compiler
14000and
14001the compiler options used during generation.
14002
14003  Previous Release:
14004    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14005    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
14006  Current Release:
14007    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14008    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
14009
14010
140112) iASL Compiler/Disassembler:
14012
14013Implemented the new ACPI 3.0 resource template macros - DWordSpace,
14014ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
14015Includes support in the disassembler.
14016
14017Implemented support for the new (ACPI 3.0) parameter to the Register
14018macro,
14019AccessSize.
14020
14021Fixed a problem where the _HE resource name for the Interrupt macro was
14022referencing bit 0 instead of bit 1.
14023
14024Implemented check for maximum 255 interrupts in the Interrupt macro.
14025
14026Fixed a problem with the predefined resource descriptor names where
14027incorrect AML code was generated if the offset within the resource buffer
14028was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
14029but did not update the surrounding package lengths.
14030
14031Changes to the Dma macro:  All channels within the channel list must be
14032in
14033the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
14034optional (default is BusMaster).
14035
14036Implemented check for maximum 7 data bytes for the VendorShort macro.
14037
14038The ReadWrite parameter is now optional for the Memory32 and similar
14039macros.
14040
14041----------------------------------------
1404203 December 2004.  Summary of changes for version 20041203:
14043
140441) ACPI CA Core Subsystem:
14045
14046The low-level field insertion/extraction code (exfldio) has been
14047completely
14048rewritten to eliminate unnecessary complexity, bugs, and boundary
14049conditions.
14050
14051Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
14052ToDecimalString
14053operators where the input operand could be inadvertently deleted if no
14054conversion was necessary (e.g., if the input to ToInteger was an Integer
14055object.)
14056
14057Fixed a problem with the ToDecimalString and ToHexString where an
14058incorrect
14059exception code was returned if the resulting string would be > 200 chars.
14060AE_STRING_LIMIT is now returned.
14061
14062Fixed a problem with the Concatenate operator where AE_OK was always
14063returned, even if the operation failed.
14064
14065Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
14066semaphores to be allocated.
14067
14068Code and Data Size: Current and previous core subsystem library sizes are
14069shown below. These are the code and data sizes for the acpica.lib
14070produced
14071by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14072any ACPI driver or OSPM code. The debug version of the code includes the
14073debug output trace mechanism and has a much larger code and data size.
14074Note
14075that these values will vary depending on the efficiency of the compiler
14076and
14077the compiler options used during generation.
14078
14079  Previous Release:
14080    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14081    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14082  Current Release:
14083    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14084    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
14085
14086
140872) iASL Compiler/Disassembler:
14088
14089Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
14090recently introduced in 20041119.
14091
14092Fixed a problem with the ToUUID macro where the upper nybble of each
14093buffer
14094byte was inadvertently set to zero.
14095
14096----------------------------------------
1409719 November 2004.  Summary of changes for version 20041119:
14098
140991) ACPI CA Core Subsystem:
14100
14101Fixed a problem in the internal ConvertToInteger routine where new
14102integers
14103were not truncated to 32 bits for 32-bit ACPI tables. This routine
14104converts
14105buffers and strings to integers.
14106
14107Implemented support to store a value to an Index() on a String object.
14108This
14109is an ACPI 2.0 feature that had not yet been implemented.
14110
14111Implemented new behavior for storing objects to individual package
14112elements
14113(via the Index() operator). The previous behavior was to invoke the
14114implicit
14115conversion rules if an object was already present at the index.  The new
14116behavior is to simply delete any existing object and directly store the
14117new
14118object. Although the ACPI specification seems unclear on this subject,
14119other
14120ACPI implementations behave in this manner.  (This is the root of the
14121AE_BAD_HEX_CONSTANT issue.)
14122
14123Modified the RSDP memory scan mechanism to support the extended checksum
14124for
14125ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
14126RSDP signature is found with a valid checksum.
14127
14128Code and Data Size: Current and previous core subsystem library sizes are
14129shown below. These are the code and data sizes for the acpica.lib
14130produced
14131by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14132any ACPI driver or OSPM code. The debug version of the code includes the
14133debug output trace mechanism and has a much larger code and data size.
14134Note
14135that these values will vary depending on the efficiency of the compiler
14136and
14137the compiler options used during generation.
14138
14139  Previous Release:
14140    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14141    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14142  Current Release:
14143    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14144    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14145
14146
141472) iASL Compiler/Disassembler:
14148
14149Fixed a missing semicolon in the aslcompiler.y file.
14150
14151----------------------------------------
1415205 November 2004.  Summary of changes for version 20041105:
14153
141541) ACPI CA Core Subsystem:
14155
14156Implemented support for FADT revision 2.  This was an interim table
14157(between
14158ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
14159
14160Implemented optional support to allow uninitialized LocalX and ArgX
14161variables in a control method.  The variables are initialized to an
14162Integer
14163object with a value of zero.  This support is enabled by setting the
14164AcpiGbl_EnableInterpreterSlack flag to TRUE.
14165
14166Implemented support for Integer objects for the SizeOf operator.  Either
141674
14168or 8 is returned, depending on the current integer size (32-bit or 64-
14169bit,
14170depending on the parent table revision).
14171
14172Fixed a problem in the implementation of the SizeOf and ObjectType
14173operators
14174where the operand was resolved to a value too early, causing incorrect
14175return values for some objects.
14176
14177Fixed some possible memory leaks during exceptional conditions.
14178
14179Code and Data Size: Current and previous core subsystem library sizes are
14180shown below. These are the code and data sizes for the acpica.lib
14181produced
14182by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14183any ACPI driver or OSPM code. The debug version of the code includes the
14184debug output trace mechanism and has a much larger code and data size.
14185Note
14186that these values will vary depending on the efficiency of the compiler
14187and
14188the compiler options used during generation.
14189
14190  Previous Release:
14191    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14192    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
14193  Current Release:
14194    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14195    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14196
14197
141982) iASL Compiler/Disassembler:
14199
14200Implemented support for all ACPI 3.0 reserved names and methods.
14201
14202Implemented all ACPI 3.0 grammar elements in the front-end, including
14203support for semicolons.
14204
14205Implemented the ACPI 3.0 Function() and ToUUID() macros
14206
14207Fixed a problem in the disassembler where a Scope() operator would not be
14208emitted properly if the target of the scope was in another table.
14209
14210----------------------------------------
1421115 October 2004.  Summary of changes for version 20041015:
14212
14213Note:  ACPI CA is currently undergoing an in-depth and complete formal
14214evaluation to test/verify the following areas. Other suggestions are
14215welcome. This will result in an increase in the frequency of releases and
14216the number of bug fixes in the next few months.
14217  - Functional tests for all ASL/AML operators
14218  - All implicit/explicit type conversions
14219  - Bit fields and operation regions
14220  - 64-bit math support and 32-bit-only "truncated" math support
14221  - Exceptional conditions, both compiler and interpreter
14222  - Dynamic object deletion and memory leaks
14223  - ACPI 3.0 support when implemented
14224  - External interfaces to the ACPI subsystem
14225
14226
142271) ACPI CA Core Subsystem:
14228
14229Fixed two alignment issues on 64-bit platforms - within debug statements
14230in
14231AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
14232Address
14233field within the non-aligned ACPI generic address structure.
14234
14235Fixed a problem in the Increment and Decrement operators where incorrect
14236operand resolution could result in the inadvertent modification of the
14237original integer when the integer is passed into another method as an
14238argument and the arg is then incremented/decremented.
14239
14240Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
14241bit
14242BCD number were truncated during conversion.
14243
14244Fixed a problem in the ToDecimal operator where the length of the
14245resulting
14246string could be set incorrectly too long if the input operand was a
14247Buffer
14248object.
14249
14250Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
14251(0)
14252within a buffer would prematurely terminate a compare between buffer
14253objects.
14254
14255Added a check for string overflow (>200 characters as per the ACPI
14256specification) during the Concatenate operator with two string operands.
14257
14258Code and Data Size: Current and previous core subsystem library sizes are
14259shown below. These are the code and data sizes for the acpica.lib
14260produced
14261by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14262any ACPI driver or OSPM code. The debug version of the code includes the
14263debug output trace mechanism and has a much larger code and data size.
14264Note
14265that these values will vary depending on the efficiency of the compiler
14266and
14267the compiler options used during generation.
14268
14269  Previous Release:
14270    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14271    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
14272  Current Release:
14273    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14274    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
14275
14276
14277
142782) iASL Compiler/Disassembler:
14279
14280Allow the use of the ObjectType operator on uninitialized Locals and Args
14281(returns 0 as per the ACPI specification).
14282
14283Fixed a problem where the compiler would fault if there was a syntax
14284error
14285in the FieldName of all of the various CreateXXXField operators.
14286
14287Disallow the use of lower case letters within the EISAID macro, as per
14288the
14289ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
14290Where
14291U is an uppercase letter and N is a hex digit.
14292
14293
14294----------------------------------------
1429506 October 2004.  Summary of changes for version 20041006:
14296
142971) ACPI CA Core Subsystem:
14298
14299Implemented support for the ACPI 3.0 Timer operator. This ASL function
14300implements a 64-bit timer with 100 nanosecond granularity.
14301
14302Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
14303implement the ACPI 3.0 Timer operator.  This allows the host OS to
14304implement
14305the timer with the best clock available. Also, it keeps the core
14306subsystem
14307out of the clock handling business, since the host OS (usually) performs
14308this function.
14309
14310Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
14311functions use a 64-bit address which is part of the packed ACPI Generic
14312Address Structure. Since the structure is non-aligned, the alignment
14313macros
14314are now used to extract the address to a local variable before use.
14315
14316Fixed a problem where the ToInteger operator assumed all input strings
14317were
14318hexadecimal. The operator now handles both decimal strings and hex
14319strings
14320(prefixed with "0x").
14321
14322Fixed a problem where the string length in the string object created as a
14323result of the internal ConvertToString procedure could be incorrect. This
14324potentially affected all implicit conversions and also the
14325ToDecimalString
14326and ToHexString operators.
14327
14328Fixed two problems in the ToString operator. If the length parameter was
14329zero, an incorrect string object was created and the value of the input
14330length parameter was inadvertently changed from zero to Ones.
14331
14332Fixed a problem where the optional ResourceSource string in the
14333ExtendedIRQ
14334resource macro was ignored.
14335
14336Simplified the interfaces to the internal division functions, reducing
14337code
14338size and complexity.
14339
14340Code and Data Size: Current and previous core subsystem library sizes are
14341shown below. These are the code and data sizes for the acpica.lib
14342produced
14343by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14344any ACPI driver or OSPM code. The debug version of the code includes the
14345debug output trace mechanism and has a much larger code and data size.
14346Note
14347that these values will vary depending on the efficiency of the compiler
14348and
14349the compiler options used during generation.
14350
14351  Previous Release:
14352    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
14353    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
14354  Current Release:
14355    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14356    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
14357
14358
143592) iASL Compiler/Disassembler:
14360
14361Implemented support for the ACPI 3.0 Timer operator.
14362
14363Fixed a problem where the Default() operator was inadvertently ignored in
14364a
14365Switch/Case block.  This was a problem in the translation of the Switch
14366statement to If...Else pairs.
14367
14368Added support to allow a standalone Return operator, with no parentheses
14369(or
14370operands).
14371
14372Fixed a problem with code generation for the ElseIf operator where the
14373translated Else...If parse tree was improperly constructed leading to the
14374loss of some code.
14375
14376----------------------------------------
1437722 September 2004.  Summary of changes for version 20040922:
14378
143791) ACPI CA Core Subsystem:
14380
14381Fixed a problem with the implementation of the LNot() operator where
14382"Ones"
14383was not returned for the TRUE case. Changed the code to return Ones
14384instead
14385of (!Arg) which was usually 1. This change affects iASL constant folding
14386for
14387this operator also.
14388
14389Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
14390not
14391initialized properly -- Now zero the entire buffer in this case where the
14392buffer already exists.
14393
14394Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
14395Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
14396related code considerably. This will require changes/updates to all OS
14397interface layers (OSLs.)
14398
14399Implemented a new external interface, AcpiInstallExceptionHandler, to
14400allow
14401a system exception handler to be installed. This handler is invoked upon
14402any
14403run-time exception that occurs during control method execution.
14404
14405Added support for the DSDT in AcpiTbFindTable. This allows the
14406DataTableRegion() operator to access the local copy of the DSDT.
14407
14408Code and Data Size: Current and previous core subsystem library sizes are
14409shown below. These are the code and data sizes for the acpica.lib
14410produced
14411by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14412any ACPI driver or OSPM code. The debug version of the code includes the
14413debug output trace mechanism and has a much larger code and data size.
14414Note
14415that these values will vary depending on the efficiency of the compiler
14416and
14417the compiler options used during generation.
14418
14419  Previous Release:
14420    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
14421    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
14422  Current Release:
14423    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
14424    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
14425
14426
144272) iASL Compiler/Disassembler:
14428
14429Fixed a problem with constant folding and the LNot operator. LNot was
14430returning 1 in the TRUE case, not Ones as per the ACPI specification.
14431This
14432could result in the generation of an incorrect folded/reduced constant.
14433
14434End-Of-File is now allowed within a "//"-style comment.  A parse error no
14435longer occurs if such a comment is at the very end of the input ASL
14436source
14437file.
14438
14439Implemented the "-r" option to override the Revision in the table header.
14440The initial use of this option will be to simplify the evaluation of the
14441AML
14442interpreter by allowing a single ASL source module to be compiled for
14443either
1444432-bit or 64-bit integers.
14445
14446
14447----------------------------------------
1444827 August 2004.  Summary of changes for version 20040827:
14449
144501) ACPI CA Core Subsystem:
14451
14452- Implemented support for implicit object conversion in the non-numeric
14453logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
14454and
14455LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
14456the second operand is implicitly converted on the fly to match the type
14457of
14458the first operand.  For example:
14459
14460    LEqual (Source1, Source2)
14461
14462Source1 and Source2 must each evaluate to an integer, a string, or a
14463buffer.
14464The data type of Source1 dictates the required type of Source2. Source2
14465is
14466implicitly converted if necessary to match the type of Source1.
14467
14468- Updated and corrected the behavior of the string conversion support.
14469The
14470rules concerning conversion of buffers to strings (according to the ACPI
14471specification) are as follows:
14472
14473ToDecimalString - explicit byte-wise conversion of buffer to string of
14474decimal values (0-255) separated by commas. ToHexString - explicit byte-
14475wise
14476conversion of buffer to string of hex values (0-FF) separated by commas.
14477ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
14478byte
14479copy with no transform except NULL terminated. Any other implicit buffer-
14480to-
14481string conversion - byte-wise conversion of buffer to string of hex
14482values
14483(0-FF) separated by spaces.
14484
14485- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
14486
14487- Fixed a problem in AcpiNsGetPathnameLength where the returned length
14488was
14489one byte too short in the case of a node in the root scope.  This could
14490cause a fault during debug output.
14491
14492- Code and Data Size: Current and previous core subsystem library sizes
14493are
14494shown below.  These are the code and data sizes for the acpica.lib
14495produced
14496by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14497any ACPI driver or OSPM code.  The debug version of the code includes the
14498debug output trace mechanism and has a much larger code and data size.
14499Note
14500that these values will vary depending on the efficiency of the compiler
14501and
14502the compiler options used during generation.
14503
14504  Previous Release:
14505    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
14506    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
14507  Current Release:
14508    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
14509    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
14510
14511
145122) iASL Compiler/Disassembler:
14513
14514- Fixed a Linux generation error.
14515
14516
14517----------------------------------------
1451816 August 2004.  Summary of changes for version 20040816:
14519
145201) ACPI CA Core Subsystem:
14521
14522Designed and implemented support within the AML interpreter for the so-
14523called "implicit return".  This support returns the result of the last
14524ASL
14525operation within a control method, in the absence of an explicit Return()
14526operator.  A few machines depend on this behavior, even though it is not
14527explicitly supported by the ASL language.  It is optional support that
14528can
14529be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
14530
14531Removed support for the PCI_Config address space from the internal low
14532level
14533hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
14534support was not used internally, and would not work correctly anyway
14535because
14536the PCI bus number and segment number were not supported.  There are
14537separate interfaces for PCI configuration space access because of the
14538unique
14539interface.
14540
14541Code and Data Size: Current and previous core subsystem library sizes are
14542shown below.  These are the code and data sizes for the acpica.lib
14543produced
14544by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14545any ACPI driver or OSPM code.  The debug version of the code includes the
14546debug output trace mechanism and has a much larger code and data size.
14547Note
14548that these values will vary depending on the efficiency of the compiler
14549and
14550the compiler options used during generation.
14551
14552  Previous Release:
14553    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14554    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
14555  Current Release:
14556    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
14557    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
14558
14559
145602) iASL Compiler/Disassembler:
14561
14562Fixed a problem where constants in ASL expressions at the root level (not
14563within a control method) could be inadvertently truncated during code
14564generation.  This problem was introduced in the 20040715 release.
14565
14566
14567----------------------------------------
1456815 July 2004.  Summary of changes for version 20040715:
14569
145701) ACPI CA Core Subsystem:
14571
14572Restructured the internal HW GPE interfaces to pass/track the current
14573state
14574of interrupts (enabled/disabled) in order to avoid possible deadlock and
14575increase flexibility of the interfaces.
14576
14577Implemented a "lexicographical compare" for String and Buffer objects
14578within
14579the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
14580-
14581as per further clarification to the ACPI specification.  Behavior is
14582similar
14583to C library "strcmp".
14584
14585Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
14586external function.  In the 32-bit non-debug case, the stack use has been
14587reduced from 168 bytes to 32 bytes.
14588
14589Deployed a new run-time configuration flag,
14590AcpiGbl_EnableInterpreterSlack,
14591whose purpose is to allow the AML interpreter to forgive certain bad AML
14592constructs.  Default setting is FALSE.
14593
14594Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
14595IO
14596support code.  If enabled, it allows field access to go beyond the end of
14597a
14598region definition if the field is within the region length rounded up to
14599the
14600next access width boundary (a common coding error.)
14601
14602Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
14603ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
14604these
14605symbols are lowercase by the latest version of the AcpiSrc tool.
14606
14607The prototypes for the PCI interfaces in acpiosxf.h have been updated to
14608rename "Register" to simply "Reg" to prevent certain compilers from
14609complaining.
14610
14611Code and Data Size: Current and previous core subsystem library sizes are
14612shown below.  These are the code and data sizes for the acpica.lib
14613produced
14614by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14615any ACPI driver or OSPM code.  The debug version of the code includes the
14616debug output trace mechanism and has a much larger code and data size.
14617Note
14618that these values will vary depending on the efficiency of the compiler
14619and
14620the compiler options used during generation.
14621
14622  Previous Release:
14623    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14624    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
14625  Current Release:
14626    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14627    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
14628
14629
146302) iASL Compiler/Disassembler:
14631
14632Implemented full support for Package objects within the Case() operator.
14633Note: The Break() operator is currently not supported within Case blocks
14634(TermLists) as there is some question about backward compatibility with
14635ACPI
146361.0 interpreters.
14637
14638
14639Fixed a problem where complex terms were not supported properly within
14640the
14641Switch() operator.
14642
14643Eliminated extraneous warning for compiler-emitted reserved names of the
14644form "_T_x".  (Used in Switch/Case operators.)
14645
14646Eliminated optimization messages for "_T_x" objects and small constants
14647within the DefinitionBlock operator.
14648
14649
14650----------------------------------------
1465115 June 2004.  Summary of changes for version 20040615:
14652
146531) ACPI CA Core Subsystem:
14654
14655Implemented support for Buffer and String objects (as per ACPI 2.0) for
14656the
14657following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
14658LLessEqual.
14659
14660All directory names in the entire source package are lower case, as they
14661were in earlier releases.
14662
14663Implemented "Disassemble" command in the AML debugger that will
14664disassemble
14665a single control method.
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.7K Code,  11.5K Data,   89.2K Total
14680    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
14681
14682  Current Release:
14683    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14684    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
14685
14686
146872) iASL Compiler/Disassembler:
14688
14689Implemented support for Buffer and String objects (as per ACPI 2.0) for
14690the
14691following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
14692LLessEqual.
14693
14694All directory names in the entire source package are lower case, as they
14695were in earlier releases.
14696
14697Fixed a fault when using the -g or -d<nofilename> options if the FADT was
14698not found.
14699
14700Fixed an issue with the Windows version of the compiler where later
14701versions
14702of Windows place the FADT in the registry under the name "FADT" and not
14703"FACP" as earlier versions did.  This applies when using the -g or -
14704d<nofilename> options.  The compiler now looks for both strings as
14705necessary.
14706
14707Fixed a problem with compiler namepath optimization where a namepath
14708within
14709the Scope() operator could not be optimized if the namepath was a subpath
14710of
14711the current scope path.
14712
14713----------------------------------------
1471427 May 2004.  Summary of changes for version 20040527:
14715
147161) ACPI CA Core Subsystem:
14717
14718Completed a new design and implementation for EBDA (Extended BIOS Data
14719Area)
14720support in the RSDP scan code.  The original code improperly scanned for
14721the
14722EBDA by simply scanning from memory location 0 to 0x400.  The correct
14723method
14724is to first obtain the EBDA pointer from within the BIOS data area, then
14725scan 1K of memory starting at the EBDA pointer.  There appear to be few
14726if
14727any machines that place the RSDP in the EBDA, however.
14728
14729Integrated a fix for a possible fault during evaluation of BufferField
14730arguments.  Obsolete code that was causing the problem was removed.
14731
14732Found and fixed a problem in the Field Support Code where data could be
14733corrupted on a bit field read that starts on an aligned boundary but does
14734not end on an aligned boundary.  Merged the read/write "datum length"
14735calculation code into a common procedure.
14736
14737Rolled in a couple of changes to the FreeBSD-specific header.
14738
14739
14740Code and Data Size: Current and previous core subsystem library sizes are
14741shown below.  These are the code and data sizes for the acpica.lib
14742produced
14743by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14744any ACPI driver or OSPM code.  The debug version of the code includes the
14745debug output trace mechanism and has a much larger code and data size.
14746Note
14747that these values will vary depending on the efficiency of the compiler
14748and
14749the compiler options used during generation.
14750
14751  Previous Release:
14752    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14753    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
14754  Current Release:
14755    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
14756    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
14757
14758
147592) iASL Compiler/Disassembler:
14760
14761Fixed a generation warning produced by some overly-verbose compilers for
14762a
1476364-bit constant.
14764
14765----------------------------------------
1476614 May 2004.  Summary of changes for version 20040514:
14767
147681) ACPI CA Core Subsystem:
14769
14770Fixed a problem where hardware GPE enable bits sometimes not set properly
14771during and after GPE method execution.  Result of 04/27 changes.
14772
14773Removed extra "clear all GPEs" when sleeping/waking.
14774
14775Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
14776AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
14777to
14778the new AcpiEv* calls as appropriate.
14779
14780ACPI_OS_NAME was removed from the OS-specific headers.  The default name
14781is
14782now "Microsoft Windows NT" for maximum compatibility.  However this can
14783be
14784changed by modifying the acconfig.h file.
14785
14786Allow a single invocation of AcpiInstallNotifyHandler for a handler that
14787traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
14788
14789Run _INI methods on ThermalZone objects.  This is against the ACPI
14790specification, but there is apparently ASL code in the field that has
14791these
14792_INI methods, and apparently "other" AML interpreters execute them.
14793
14794Performed a full 16/32/64 bit lint that resulted in some small changes.
14795
14796Added a sleep simulation command to the AML debugger to test sleep code.
14797
14798Code and Data Size: Current and previous core subsystem library sizes are
14799shown below.  These are the code and data sizes for the acpica.lib
14800produced
14801by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14802any ACPI driver or OSPM code.  The debug version of the code includes the
14803debug output trace mechanism and has a much larger code and data size.
14804Note
14805that these values will vary depending on the efficiency of the compiler
14806and
14807the compiler options used during generation.
14808
14809  Previous Release:
14810    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14811    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
14812  Current Release:
14813    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14814    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
14815
14816----------------------------------------
1481727 April 2004.  Summary of changes for version 20040427:
14818
148191) ACPI CA Core Subsystem:
14820
14821Completed a major overhaul of the GPE handling within ACPI CA.  There are
14822now three types of GPEs:  wake-only, runtime-only, and combination
14823wake/run.
14824The only GPEs allowed to be combination wake/run are for button-style
14825devices such as a control-method power button, control-method sleep
14826button,
14827or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
14828not
14829referenced by any _PRW methods are marked for "runtime" and hardware
14830enabled.  Any GPE that is referenced by a _PRW method is marked for
14831"wake"
14832(and disabled at runtime).  However, at sleep time, only those GPEs that
14833have been specifically enabled for wake via the AcpiEnableGpe interface
14834will
14835actually be hardware enabled.
14836
14837A new external interface has been added, AcpiSetGpeType(), that is meant
14838to
14839be used by device drivers to force a GPE to a particular type.  It will
14840be
14841especially useful for the drivers for the button devices mentioned above.
14842
14843Completed restructuring of the ACPI CA initialization sequence so that
14844default operation region handlers are installed before GPEs are
14845initialized
14846and the _PRW methods are executed.  This will prevent errors when the
14847_PRW
14848methods attempt to access system memory or I/O space.
14849
14850GPE enable/disable no longer reads the GPE enable register.  We now keep
14851the
14852enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
14853thus no longer depend on the hardware to maintain these bits.
14854
14855Always clear the wake status and fixed/GPE status bits before sleep, even
14856for state S5.
14857
14858Improved the AML debugger output for displaying the GPE blocks and their
14859current status.
14860
14861Added new strings for the _OSI method, of the form "Windows 2001 SPx"
14862where
14863x = 0,1,2,3,4.
14864
14865Fixed a problem where the physical address was incorrectly calculated
14866when
14867the Load() operator was used to directly load from an Operation Region
14868(vs.
14869loading from a Field object.)  Also added check for minimum table length
14870for
14871this case.
14872
14873Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
14874mutex release.
14875
14876Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
14877consistency with the other fields returned.
14878
14879Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
14880structure for each GPE in the system, so the size of this structure is
14881important.
14882
14883CPU stack requirement reduction:  Cleaned up the method execution and
14884object
14885evaluation paths so that now a parameter structure is passed, instead of
14886copying the various method parameters over and over again.
14887
14888In evregion.c:  Correctly exit and reenter the interpreter region if and
14889only if dispatching an operation region request to a user-installed
14890handler.
14891Do not exit/reenter when dispatching to a default handler (e.g., default
14892system memory or I/O handlers)
14893
14894
14895Notes for updating drivers for the new GPE support.  The following
14896changes
14897must be made to ACPI-related device drivers that are attached to one or
14898more
14899GPEs: (This information will be added to the ACPI CA Programmer
14900Reference.)
14901
149021) AcpiInstallGpeHandler no longer automatically enables the GPE, you
14903must
14904explicitly call AcpiEnableGpe.
149052) There is a new interface called AcpiSetGpeType. This should be called
14906before enabling the GPE.  Also, this interface will automatically disable
14907the GPE if it is currently enabled.
149083) AcpiEnableGpe no longer supports a GPE type flag.
14909
14910Specific drivers that must be changed:
149111) EC driver:
14912    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
14913AeGpeHandler, NULL);
14914    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
14915    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
14916
149172) Button Drivers (Power, Lid, Sleep):
14918Run _PRW method under parent device
14919If _PRW exists: /* This is a control-method button */
14920    Extract GPE number and possibly GpeDevice
14921    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
14922    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
14923
14924For all other devices that have _PRWs, we automatically set the GPE type
14925to
14926ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
14927This
14928must be done on a selective basis, usually requiring some kind of user
14929app
14930to allow the user to pick the wake devices.
14931
14932
14933Code and Data Size: Current and previous core subsystem library sizes are
14934shown below.  These are the code and data sizes for the acpica.lib
14935produced
14936by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14937any ACPI driver or OSPM code.  The debug version of the code includes the
14938debug output trace mechanism and has a much larger code and data size.
14939Note
14940that these values will vary depending on the efficiency of the compiler
14941and
14942the compiler options used during generation.
14943
14944  Previous Release:
14945    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
14946    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
14947  Current Release:
14948
14949    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14950    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
14951
14952
14953
14954----------------------------------------
1495502 April 2004.  Summary of changes for version 20040402:
14956
149571) ACPI CA Core Subsystem:
14958
14959Fixed an interpreter problem where an indirect store through an ArgX
14960parameter was incorrectly applying the "implicit conversion rules" during
14961the store.  From the ACPI specification: "If the target is a method local
14962or
14963argument (LocalX or ArgX), no conversion is performed and the result is
14964stored directly to the target".  The new behavior is to disable implicit
14965conversion during ALL stores to an ArgX.
14966
14967Changed the behavior of the _PRW method scan to ignore any and all errors
14968returned by a given _PRW.  This prevents the scan from aborting from the
14969failure of any single _PRW.
14970
14971Moved the runtime configuration parameters from the global init procedure
14972to
14973static variables in acglobal.h.  This will allow the host to override the
14974default values easily.
14975
14976Code and Data Size: Current and previous core subsystem library sizes are
14977shown below.  These are the code and data sizes for the acpica.lib
14978produced
14979by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14980any ACPI driver or OSPM code.  The debug version of the code includes the
14981debug output trace mechanism and has a much larger code and data size.
14982Note
14983that these values will vary depending on the efficiency of the compiler
14984and
14985the compiler options used during generation.
14986
14987  Previous Release:
14988    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
14989    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
14990  Current Release:
14991    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
14992    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
14993
14994
149952) iASL Compiler/Disassembler:
14996
14997iASL now fully disassembles SSDTs.  However, External() statements are
14998not
14999generated automatically for unresolved symbols at this time.  This is a
15000planned feature for future implementation.
15001
15002Fixed a scoping problem in the disassembler that occurs when the type of
15003the
15004target of a Scope() operator is overridden.  This problem caused an
15005incorrectly nested internal namespace to be constructed.
15006
15007Any warnings or errors that are emitted during disassembly are now
15008commented
15009out automatically so that the resulting file can be recompiled without
15010any
15011hand editing.
15012
15013----------------------------------------
1501426 March 2004.  Summary of changes for version 20040326:
15015
150161) ACPI CA Core Subsystem:
15017
15018Implemented support for "wake" GPEs via interaction between GPEs and the
15019_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
15020identified as a WAKE GPE and by default will no longer be enabled at
15021runtime.  Previously, we were blindly enabling all GPEs with a
15022corresponding
15023_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
15024We
15025believe this has been the cause of thousands of "spurious" GPEs on some
15026systems.
15027
15028This new GPE behavior is can be reverted to the original behavior (enable
15029ALL GPEs at runtime) via a runtime flag.
15030
15031Fixed a problem where aliased control methods could not access objects
15032properly.  The proper scope within the namespace was not initialized
15033(transferred to the target of the aliased method) before executing the
15034target method.
15035
15036Fixed a potential race condition on internal object deletion on the
15037return
15038object in AcpiEvaluateObject.
15039
15040Integrated a fix for resource descriptors where both _MEM and _MTP were
15041being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
15042wide, 0x0F instead of 0x03.)
15043
15044Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
15045preventing
15046a
15047fault in some cases.
15048
15049Updated Notify() values for debug statements in evmisc.c
15050
15051Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
15052
15053Code and Data Size: Current and previous core subsystem library sizes are
15054shown below.  These are the code and data sizes for the acpica.lib
15055produced
15056by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15057any ACPI driver or OSPM code.  The debug version of the code includes the
15058debug output trace mechanism and has a much larger code and data size.
15059Note
15060that these values will vary depending on the efficiency of the compiler
15061and
15062the compiler options used during generation.
15063
15064  Previous Release:
15065
15066    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
15067    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
15068  Current Release:
15069    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
15070    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
15071
15072----------------------------------------
1507311 March 2004.  Summary of changes for version 20040311:
15074
150751) ACPI CA Core Subsystem:
15076
15077Fixed a problem where errors occurring during the parse phase of control
15078method execution did not abort cleanly.  For example, objects created and
15079installed in the namespace were not deleted.  This caused all subsequent
15080invocations of the method to return the AE_ALREADY_EXISTS exception.
15081
15082Implemented a mechanism to force a control method to "Serialized"
15083execution
15084if the method attempts to create namespace objects. (The root of the
15085AE_ALREADY_EXISTS problem.)
15086
15087Implemented support for the predefined _OSI "internal" control method.
15088Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
15089and
15090"Windows 2001.1", and can be easily upgraded for new strings as
15091necessary.
15092This feature will allow "other" operating systems to execute the fully
15093tested, "Windows" code path through the ASL code
15094
15095Global Lock Support:  Now allows multiple acquires and releases with any
15096internal thread.  Removed concept of "owning thread" for this special
15097mutex.
15098
15099Fixed two functions that were inappropriately declaring large objects on
15100the
15101CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
15102during
15103method execution considerably.
15104
15105Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
15106S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
15107
15108Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
15109defined on the machine.
15110
15111Implemented two runtime options:  One to force all control method
15112execution
15113to "Serialized" to mimic Windows behavior, another to disable _OSI
15114support
15115if it causes problems on a given machine.
15116
15117Code and Data Size: Current and previous core subsystem library sizes are
15118shown below.  These are the code and data sizes for the acpica.lib
15119produced
15120by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15121any ACPI driver or OSPM code.  The debug version of the code includes the
15122debug output trace mechanism and has a much larger code and data size.
15123Note
15124that these values will vary depending on the efficiency of the compiler
15125and
15126the compiler options used during generation.
15127
15128  Previous Release:
15129    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
15130    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
15131  Current Release:
15132    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
15133    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
15134
151352) iASL Compiler/Disassembler:
15136
15137Fixed an array size problem for FreeBSD that would cause the compiler to
15138fault.
15139
15140----------------------------------------
1514120 February 2004.  Summary of changes for version 20040220:
15142
15143
151441) ACPI CA Core Subsystem:
15145
15146Implemented execution of _SxD methods for Device objects in the
15147GetObjectInfo interface.
15148
15149Fixed calls to _SST method to pass the correct arguments.
15150
15151Added a call to _SST on wake to restore to "working" state.
15152
15153Check for End-Of-Buffer failure case in the WalkResources interface.
15154
15155Integrated fix for 64-bit alignment issue in acglobal.h by moving two
15156structures to the beginning of the file.
15157
15158After wake, clear GPE status register(s) before enabling GPEs.
15159
15160After wake, clear/enable power button.  (Perhaps we should clear/enable
15161all
15162fixed events upon wake.)
15163
15164Fixed a couple of possible memory leaks in the Namespace manager.
15165
15166Integrated latest acnetbsd.h file.
15167
15168----------------------------------------
1516911 February 2004.  Summary of changes for version 20040211:
15170
15171
151721) ACPI CA Core Subsystem:
15173
15174Completed investigation and implementation of the call-by-reference
15175mechanism for control method arguments.
15176
15177Fixed a problem where a store of an object into an indexed package could
15178fail if the store occurs within a different method than the method that
15179created the package.
15180
15181Fixed a problem where the ToDecimal operator could return incorrect
15182results.
15183
15184Fixed a problem where the CopyObject operator could fail on some of the
15185more
15186obscure objects (e.g., Reference objects.)
15187
15188Improved the output of the Debug object to display buffer, package, and
15189index objects.
15190
15191Fixed a problem where constructs of the form "RefOf (ArgX)" did not
15192return
15193the expected result.
15194
15195Added permanent ACPI_REPORT_ERROR macros for all instances of the
15196ACPI_AML_INTERNAL exception.
15197
15198Integrated latest version of acfreebsd.h
15199
15200----------------------------------------
1520116 January 2004.  Summary of changes for version 20040116:
15202
15203The purpose of this release is primarily to update the copyright years in
15204each module, thus causing a huge number of diffs.  There are a few small
15205functional changes, however.
15206
152071) ACPI CA Core Subsystem:
15208
15209Improved error messages when there is a problem finding one or more of
15210the
15211required base ACPI tables
15212
15213Reintroduced the definition of APIC_HEADER in actbl.h
15214
15215Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
15216
15217Removed extraneous reference to NewObj in dsmthdat.c
15218
152192) iASL compiler
15220
15221Fixed a problem introduced in December that disabled the correct
15222disassembly
15223of Resource Templates
15224
15225
15226----------------------------------------
1522703 December 2003.  Summary of changes for version 20031203:
15228
152291) ACPI CA Core Subsystem:
15230
15231Changed the initialization of Operation Regions during subsystem
15232init to perform two entire walks of the ACPI namespace; The first
15233to initialize the regions themselves, the second to execute the
15234_REG methods.  This fixed some interdependencies across _REG
15235methods found on some machines.
15236
15237Fixed a problem where a Store(Local0, Local1) could simply update
15238the object reference count, and not create a new copy of the
15239object if the Local1 is uninitialized.
15240
15241Implemented support for the _SST reserved method during sleep
15242transitions.
15243
15244Implemented support to clear the SLP_TYP and SLP_EN bits when
15245waking up, this is apparently required by some machines.
15246
15247When sleeping, clear the wake status only if SleepState is not S5.
15248
15249Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
15250pointer arithmetic advanced a string pointer too far.
15251
15252Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
15253could be returned if the requested table has not been loaded.
15254
15255Within the support for IRQ resources, restructured the handling of
15256the active and edge/level bits.
15257
15258Fixed a few problems in AcpiPsxExecute() where memory could be
15259leaked under certain error conditions.
15260
15261Improved error messages for the cases where the ACPI mode could
15262not be entered.
15263
15264Code and Data Size: Current and previous core subsystem library
15265sizes are shown below.  These are the code and data sizes for the
15266acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15267these values do not include any ACPI driver or OSPM code.  The
15268debug version of the code includes the debug output trace
15269mechanism and has a much larger code and data size.  Note that
15270these values will vary depending on the efficiency of the compiler
15271and the compiler options used during generation.
15272
15273  Previous Release (20031029):
15274    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
15275    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
15276  Current Release:
15277    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
15278    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
15279
152802) iASL Compiler/Disassembler:
15281
15282Implemented a fix for the iASL disassembler where a bad index was
15283generated.  This was most noticeable on 64-bit platforms
15284
15285
15286----------------------------------------
1528729 October 2003.  Summary of changes for version 20031029:
15288
152891) ACPI CA Core Subsystem:
15290
15291
15292Fixed a problem where a level-triggered GPE with an associated
15293_Lxx control method was incorrectly cleared twice.
15294
15295Fixed a problem with the Field support code where an access can
15296occur beyond the end-of-region if the field is non-aligned but
15297extends to the very end of the parent region (resulted in an
15298AE_AML_REGION_LIMIT exception.)
15299
15300Fixed a problem with ACPI Fixed Events where an RT Clock handler
15301would not get invoked on an RTC event.  The RTC event bitmasks for
15302the PM1 registers were not being initialized properly.
15303
15304Implemented support for executing _STA and _INI methods for
15305Processor objects.  Although this is currently not part of the
15306ACPI specification, there is existing ASL code that depends on the
15307init-time execution of these methods.
15308
15309Implemented and deployed a GetDescriptorName function to decode
15310the various types of internal descriptors.  Guards against null
15311descriptors during debug output also.
15312
15313Implemented and deployed a GetNodeName function to extract the 4-
15314character namespace node name.  This function simplifies the debug
15315and error output, as well as guarding against null pointers during
15316output.
15317
15318Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
15319simplify the debug and error output of 64-bit integers.  This
15320macro replaces the HIDWORD and LODWORD macros for dumping these
15321integers.
15322
15323Updated the implementation of the Stall() operator to only call
15324AcpiOsStall(), and also return an error if the operand is larger
15325than 255.  This preserves the required behavior of not
15326relinquishing the processor, as would happen if AcpiOsSleep() was
15327called for "long stalls".
15328
15329Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
15330initialized are now treated as NOOPs.
15331
15332Cleaned up a handful of warnings during 64-bit generation.
15333
15334Fixed a reported error where and incorrect GPE number was passed
15335to the GPE dispatch handler.  This value is only used for error
15336output, however.  Used this opportunity to clean up and streamline
15337the GPE dispatch code.
15338
15339Code and Data Size: Current and previous core subsystem library
15340sizes are shown below.  These are the code and data sizes for the
15341acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15342these values do not include any ACPI driver or OSPM code.  The
15343
15344debug version of the code includes the debug output trace
15345mechanism and has a much larger code and data size.  Note that
15346these values will vary depending on the efficiency of the compiler
15347and the compiler options used during generation.
15348
15349  Previous Release (20031002):
15350    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
15351    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
15352  Current Release:
15353    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
15354    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
15355
15356
153572) iASL Compiler/Disassembler:
15358
15359Updated the iASL compiler to return an error if the operand to the
15360Stall() operator is larger than 255.
15361
15362
15363----------------------------------------
1536402 October 2003.  Summary of changes for version 20031002:
15365
15366
153671) ACPI CA Core Subsystem:
15368
15369Fixed a problem with Index Fields where the index was not
15370incremented for fields that require multiple writes to the
15371index/data registers (Fields that are wider than the data
15372register.)
15373
15374Fixed a problem with all Field objects where a write could go
15375beyond the end-of-field if the field was larger than the access
15376granularity and therefore required multiple writes to complete the
15377request.  An extra write beyond the end of the field could happen
15378inadvertently.
15379
15380Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
15381would incorrectly be returned if the width of the Data Register
15382was larger than the specified field access width.
15383
15384Completed fixes for LoadTable() and Unload() and verified their
15385operation.  Implemented full support for the "DdbHandle" object
15386throughout the ACPI CA subsystem.
15387
15388Implemented full support for the MADT and ECDT tables in the ACPI
15389CA header files.  Even though these tables are not directly
15390consumed by ACPI CA, the header definitions are useful for ACPI
15391device drivers.
15392
15393Integrated resource descriptor fixes posted to the Linux ACPI
15394list.  This included checks for minimum descriptor length, and
15395support for trailing NULL strings within descriptors that have
15396optional string elements.
15397
15398Code and Data Size: Current and previous core subsystem library
15399sizes are shown below.  These are the code and data sizes for the
15400acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15401these values do not include any ACPI driver or OSPM code.  The
15402debug version of the code includes the debug output trace
15403mechanism and has a much larger code and data size.  Note that
15404these values will vary depending on the efficiency of the compiler
15405and the compiler options used during generation.
15406
15407  Previous Release (20030918):
15408    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
15409    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
15410  Current Release:
15411    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
15412    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
15413
15414
154152) iASL Compiler:
15416
15417Implemented detection of non-ASCII characters within the input
15418source ASL file.  This catches attempts to compile binary (AML)
15419files early in the compile, with an informative error message.
15420
15421Fixed a problem where the disassembler would fault if the output
15422filename could not be generated or if the output file could not be
15423opened.
15424
15425----------------------------------------
1542618 September 2003.  Summary of changes for version 20030918:
15427
15428
154291) ACPI CA Core Subsystem:
15430
15431Found and fixed a longstanding problem with the late execution of
15432the various deferred AML opcodes (such as Operation Regions,
15433Buffer Fields, Buffers, and Packages).  If the name string
15434specified for the name of the new object placed the object in a
15435scope other than the current scope, the initialization/execution
15436of the opcode failed.  The solution to this problem was to
15437implement a mechanism where the late execution of such opcodes
15438does not attempt to lookup/create the name a second time in an
15439incorrect scope.  This fixes the "region size computed
15440incorrectly" problem.
15441
15442Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
15443Global Lock AE_BAD_PARAMETER error.
15444
15445Fixed several 64-bit issues with prototypes, casting and data
15446types.
15447
15448Removed duplicate prototype from acdisasm.h
15449
15450Fixed an issue involving EC Operation Region Detach (Shaohua Li)
15451
15452Code and Data Size: Current and previous core subsystem library
15453sizes are shown below.  These are the code and data sizes for the
15454acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15455these values do not include any ACPI driver or OSPM code.  The
15456debug version of the code includes the debug output trace
15457mechanism and has a much larger code and data size.  Note that
15458these values will vary depending on the efficiency of the compiler
15459and the compiler options used during generation.
15460
15461  Previous Release:
15462
15463    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
15464    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
15465  Current Release:
15466    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
15467    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
15468
15469
154702) Linux:
15471
15472Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
15473correct sleep time in seconds.
15474
15475----------------------------------------
1547614 July 2003.  Summary of changes for version 20030619:
15477
154781) ACPI CA Core Subsystem:
15479
15480Parse SSDTs in order discovered, as opposed to reverse order
15481(Hrvoje Habjanic)
15482
15483Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
15484Klausner,
15485   Nate Lawson)
15486
15487
154882) Linux:
15489
15490Dynamically allocate SDT list (suggested by Andi Kleen)
15491
15492proc function return value cleanups (Andi Kleen)
15493
15494Correctly handle NMI watchdog during long stalls (Andrew Morton)
15495
15496Make it so acpismp=force works (reported by Andrew Morton)
15497
15498
15499----------------------------------------
1550019 June 2003.  Summary of changes for version 20030619:
15501
155021) ACPI CA Core Subsystem:
15503
15504Fix To/FromBCD, eliminating the need for an arch-specific #define.
15505
15506Do not acquire a semaphore in the S5 shutdown path.
15507
15508Fix ex_digits_needed for 0. (Takayoshi Kochi)
15509
15510Fix sleep/stall code reversal. (Andi Kleen)
15511
15512Revert a change having to do with control method calling
15513semantics.
15514
155152) Linux:
15516
15517acpiphp update (Takayoshi Kochi)
15518
15519Export acpi_disabled for sonypi (Stelian Pop)
15520
15521Mention acpismp=force in config help
15522
15523Re-add acpitable.c and acpismp=force. This improves backwards
15524
15525compatibility and also cleans up the code to a significant degree.
15526
15527Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
15528
15529----------------------------------------
1553022 May 2003.  Summary of changes for version 20030522:
15531
155321) ACPI CA Core Subsystem:
15533
15534Found and fixed a reported problem where an AE_NOT_FOUND error
15535occurred occasionally during _BST evaluation.  This turned out to
15536be an Owner ID allocation issue where a called method did not get
15537a new ID assigned to it.  Eventually, (after 64k calls), the Owner
15538ID UINT16 would wraparound so that the ID would be the same as the
15539caller's and the called method would delete the caller's
15540namespace.
15541
15542Implemented extended error reporting for control methods that are
15543aborted due to a run-time exception.  Output includes the exact
15544AML instruction that caused the method abort, a dump of the method
15545locals and arguments at the time of the abort, and a trace of all
15546nested control method calls.
15547
15548Modified the interpreter to allow the creation of buffers of zero
15549length from the AML code. Implemented new code to ensure that no
15550attempt is made to actually allocate a memory buffer (of length
15551zero) - instead, a simple buffer object with a NULL buffer pointer
15552and length zero is created.  A warning is no longer issued when
15553the AML attempts to create a zero-length buffer.
15554
15555Implemented a workaround for the "leading asterisk issue" in
15556_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
15557asterisk is automatically removed if present in any HID, UID, or
15558CID strings.  The iASL compiler will still flag this asterisk as
15559an error, however.
15560
15561Implemented full support for _CID methods that return a package of
15562multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
15563now additionally returns a device _CID list if present.  This
15564required a change to the external interface in order to pass an
15565ACPI_BUFFER object as a parameter since the _CID list is of
15566variable length.
15567
15568Fixed a problem with the new AE_SAME_HANDLER exception where
15569handler initialization code did not know about this exception.
15570
15571Code and Data Size: Current and previous core subsystem library
15572sizes are shown below.  These are the code and data sizes for the
15573acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15574these values do not include any ACPI driver or OSPM code.  The
15575debug version of the code includes the debug output trace
15576mechanism and has a much larger code and data size.  Note that
15577these values will vary depending on the efficiency of the compiler
15578and the compiler options used during generation.
15579
15580  Previous Release (20030509):
15581    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
15582    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
15583  Current Release:
15584    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
15585    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
15586
15587
155882) Linux:
15589
15590Fixed a bug in which we would reinitialize the ACPI interrupt
15591after it was already working, thus disabling all ACPI and the IRQs
15592for any other device sharing the interrupt. (Thanks to Stian
15593Jordet)
15594
15595Toshiba driver update (John Belmonte)
15596
15597Return only 0 or 1 for our interrupt handler status (Andrew
15598Morton)
15599
15600
156013) iASL Compiler:
15602
15603Fixed a reported problem where multiple (nested) ElseIf()
15604statements were not handled correctly by the compiler, resulting
15605in incorrect warnings and incorrect AML code.  This was a problem
15606in both the ASL parser and the code generator.
15607
15608
156094) Documentation:
15610
15611Added changes to existing interfaces, new exception codes, and new
15612text concerning reference count object management versus garbage
15613collection.
15614
15615----------------------------------------
1561609 May 2003.  Summary of changes for version 20030509.
15617
15618
156191) ACPI CA Core Subsystem:
15620
15621Changed the subsystem initialization sequence to hold off
15622installation of address space handlers until the hardware has been
15623initialized and the system has entered ACPI mode.  This is because
15624the installation of space handlers can cause _REG methods to be
15625run.  Previously, the _REG methods could potentially be run before
15626ACPI mode was enabled.
15627
15628Fixed some memory leak issues related to address space handler and
15629notify handler installation.  There were some problems with the
15630reference count mechanism caused by the fact that the handler
15631objects are shared across several namespace objects.
15632
15633Fixed a reported problem where reference counts within the
15634namespace were not properly updated when named objects created by
15635method execution were deleted.
15636
15637Fixed a reported problem where multiple SSDTs caused a deletion
15638issue during subsystem termination.  Restructured the table data
15639structures to simplify the linked lists and the related code.
15640
15641Fixed a problem where the table ID associated with secondary
15642tables (SSDTs) was not being propagated into the namespace objects
15643created by those tables.  This would only present a problem for
15644tables that are unloaded at run-time, however.
15645
15646Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
15647type as the length parameter (instead of UINT32).
15648
15649Solved a long-standing problem where an ALREADY_EXISTS error
15650appears on various systems.  This problem could happen when there
15651are multiple PCI_Config operation regions under a single PCI root
15652bus.  This doesn't happen very frequently, but there are some
15653systems that do this in the ASL.
15654
15655Fixed a reported problem where the internal DeleteNode function
15656was incorrectly handling the case where a namespace node was the
15657first in the parent's child list, and had additional peers (not
15658the only child, but first in the list of children.)
15659
15660Code and Data Size: Current core subsystem library sizes are shown
15661below.  These are the code and data sizes for the acpica.lib
15662produced by the Microsoft Visual C++ 6.0 compiler, and these
15663values do not include any ACPI driver or OSPM code.  The debug
15664version of the code includes the debug output trace mechanism and
15665has a much larger code and data size.  Note that these values will
15666vary depending on the efficiency of the compiler and the compiler
15667options used during generation.
15668
15669  Previous Release
15670    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
15671    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
15672  Current Release:
15673    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
15674    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
15675
15676
156772) Linux:
15678
15679Allow ":" in OS override string (Ducrot Bruno)
15680
15681Kobject fix (Greg KH)
15682
15683
156843 iASL Compiler/Disassembler:
15685
15686Fixed a problem in the generation of the C source code files (AML
15687is emitted in C source statements for BIOS inclusion) where the
15688Ascii dump that appears within a C comment at the end of each line
15689could cause a compile time error if the AML sequence happens to
15690have an open comment or close comment sequence embedded.
15691
15692
15693----------------------------------------
1569424 April 2003.  Summary of changes for version 20030424.
15695
15696
156971) ACPI CA Core Subsystem:
15698
15699Support for big-endian systems has been implemented.  Most of the
15700support has been invisibly added behind big-endian versions of the
15701ACPI_MOVE_* macros.
15702
15703Fixed a problem in AcpiHwDisableGpeBlock() and
15704AcpiHwClearGpeBlock() where an incorrect offset was passed to the
15705low level hardware write routine.  The offset parameter was
15706actually eliminated from the low level read/write routines because
15707they had become obsolete.
15708
15709Fixed a problem where a handler object was deleted twice during
15710the removal of a fixed event handler.
15711
15712
157132) Linux:
15714
15715A fix for SMP systems with link devices was contributed by
15716
15717Compaq's Dan Zink.
15718
15719(2.5) Return whether we handled the interrupt in our IRQ handler.
15720(Linux ISRs no longer return void, so we can propagate the handler
15721return value from the ACPI CA core back to the OS.)
15722
15723
15724
157253) Documentation:
15726
15727The ACPI CA Programmer Reference has been updated to reflect new
15728interfaces and changes to existing interfaces.
15729
15730----------------------------------------
1573128 March 2003.  Summary of changes for version 20030328.
15732
157331) ACPI CA Core Subsystem:
15734
15735The GPE Block Device support has been completed.  New interfaces
15736are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
15737interfaces (enable, disable, clear, getstatus) have been split
15738into separate interfaces for Fixed Events and General Purpose
15739Events (GPEs) in order to support GPE Block Devices properly.
15740
15741Fixed a problem where the error message "Failed to acquire
15742semaphore" would appear during operations on the embedded
15743controller (EC).
15744
15745Code and Data Size: Current core subsystem library sizes are shown
15746below.  These are the code and data sizes for the acpica.lib
15747produced by the Microsoft Visual C++ 6.0 compiler, and these
15748values do not include any ACPI driver or OSPM code.  The debug
15749version of the code includes the debug output trace mechanism and
15750has a much larger code and data size.  Note that these values will
15751vary depending on the efficiency of the compiler and the compiler
15752options used during generation.
15753
15754  Previous Release
15755    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
15756    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
15757  Current Release:
15758    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
15759    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
15760
15761
15762----------------------------------------
1576328 February 2003.  Summary of changes for version 20030228.
15764
15765
157661) ACPI CA Core Subsystem:
15767
15768The GPE handling and dispatch code has been completely overhauled
15769in preparation for support of GPE Block Devices (ID ACPI0006).
15770This affects internal data structures and code only; there should
15771be no differences visible externally.  One new file has been
15772added, evgpeblk.c
15773
15774The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
15775fields that are used to determine the GPE block lengths.  The
15776REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
15777structures are ignored.  This is per the ACPI specification but it
15778isn't very clear.  The full 256 Block 0/1 GPEs are now supported
15779(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
15780
15781In the SCI interrupt handler, removed the read of the PM1_CONTROL
15782register to look at the SCI_EN bit.  On some machines, this read
15783causes an SMI event and greatly slows down SCI events.  (This may
15784in fact be the cause of slow battery status response on some
15785systems.)
15786
15787Fixed a problem where a store of a NULL string to a package object
15788could cause the premature deletion of the object.  This was seen
15789during execution of the battery _BIF method on some systems,
15790resulting in no battery data being returned.
15791
15792Added AcpiWalkResources interface to simplify parsing of resource
15793lists.
15794
15795Code and Data Size: Current core subsystem library sizes are shown
15796below.  These are the code and data sizes for the acpica.lib
15797produced by the Microsoft Visual C++ 6.0 compiler, and these
15798values do not include any ACPI driver or OSPM code.  The debug
15799version of the code includes the debug output trace mechanism and
15800has a much larger code and data size.  Note that these values will
15801vary depending on the efficiency of the compiler and the compiler
15802options used during generation.
15803
15804  Previous Release
15805    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15806    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15807  Current Release:
15808    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
15809    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
15810
15811
158122) Linux
15813
15814S3 fixes (Ole Rohne)
15815
15816Update ACPI PHP driver with to use new acpi_walk_resource API
15817(Bjorn Helgaas)
15818
15819Add S4BIOS support (Pavel Machek)
15820
15821Map in entire table before performing checksum (John Stultz)
15822
15823Expand the mem= cmdline to allow the specification of reserved and
15824ACPI DATA blocks (Pavel Machek)
15825
15826Never use ACPI on VISWS
15827
15828Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
15829
15830Revert a change that allowed P_BLK lengths to be 4 or 5. This is
15831causing us to think that some systems support C2 when they really
15832don't.
15833
15834Do not count processor objects for non-present CPUs (Thanks to
15835Dominik Brodowski)
15836
15837
158383) iASL Compiler:
15839
15840Fixed a problem where ASL include files could not be found and
15841opened.
15842
15843Added support for the _PDC reserved name.
15844
15845
15846----------------------------------------
1584722 January 2003.  Summary of changes for version 20030122.
15848
15849
158501) ACPI CA Core Subsystem:
15851
15852Added a check for constructs of the form:  Store (Local0, Local0)
15853where Local0 is not initialized.  Apparently, some BIOS
15854programmers believe that this is a NOOP.  Since this store doesn't
15855do anything anyway, the new prototype behavior will ignore this
15856error.  This is a case where we can relax the strict checking in
15857the interpreter in the name of compatibility.
15858
15859
158602) Linux
15861
15862The AcpiSrc Source Conversion Utility has been released with the
15863Linux package for the first time.  This is the utility that is
15864used to convert the ACPI CA base source code to the Linux version.
15865
15866(Both) Handle P_BLK lengths shorter than 6 more gracefully
15867
15868(Both) Move more headers to include/acpi, and delete an unused
15869header.
15870
15871(Both) Move drivers/acpi/include directory to include/acpi
15872
15873(Both) Boot functions don't use cmdline, so don't pass it around
15874
15875(Both) Remove include of unused header (Adrian Bunk)
15876
15877(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
15878the
15879former now also includes the latter, acpiphp.h only needs the one,
15880now.
15881
15882(2.5) Make it possible to select method of bios restoring after S3
15883resume. [=> no more ugly ifdefs] (Pavel Machek)
15884
15885(2.5) Make proc write interfaces work (Pavel Machek)
15886
15887(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
15888
15889(2.5) Break out ACPI Perf code into its own module, under cpufreq
15890(Dominik Brodowski)
15891
15892(2.4) S4BIOS support (Ducrot Bruno)
15893
15894(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
15895Visinoni)
15896
15897
158983) iASL Compiler:
15899
15900Added support to disassemble SSDT and PSDTs.
15901
15902Implemented support to obtain SSDTs from the Windows registry if
15903available.
15904
15905
15906----------------------------------------
1590709 January 2003.  Summary of changes for version 20030109.
15908
159091) ACPI CA Core Subsystem:
15910
15911Changed the behavior of the internal Buffer-to-String conversion
15912function.  The current ACPI specification states that the contents
15913of the buffer are "converted to a string of two-character
15914hexadecimal numbers, each separated by a space".  Unfortunately,
15915this definition is not backwards compatible with existing ACPI 1.0
15916implementations (although the behavior was not defined in the ACPI
159171.0 specification).  The new behavior simply copies data from the
15918buffer to the string until a null character is found or the end of
15919the buffer is reached.  The new String object is always null
15920terminated.  This problem was seen during the generation of _BIF
15921battery data where incorrect strings were returned for battery
15922type, etc.  This will also require an errata to the ACPI
15923specification.
15924
15925Renamed all instances of NATIVE_UINT and NATIVE_INT to
15926ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
15927
15928Copyright in all module headers (both Linux and non-Linux) has be
15929updated to 2003.
15930
15931Code and Data Size: Current core subsystem library sizes are shown
15932below.  These are the code and data sizes for the acpica.lib
15933produced by the Microsoft Visual C++ 6.0 compiler, and these
15934values do not include any ACPI driver or OSPM code.  The debug
15935version of the code includes the debug output trace mechanism and
15936has a much larger code and data size.  Note that these values will
15937vary depending on the efficiency of the compiler and the compiler
15938options used during generation.
15939
15940  Previous Release
15941    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15942    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15943  Current Release:
15944    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15945    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15946
15947
159482) Linux
15949
15950Fixed an oops on module insertion/removal (Matthew Tippett)
15951
15952(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
15953
15954(2.5) Replace pr_debug (Randy Dunlap)
15955
15956(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
15957
15958(Both) Eliminate spawning of thread from timer callback, in favor
15959of schedule_work()
15960
15961(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
15962
15963(Both) Added define for Fixed Function HW region (Matthew Wilcox)
15964
15965(Both) Add missing statics to button.c (Pavel Machek)
15966
15967Several changes have been made to the source code translation
15968utility that generates the Linux Code in order to make the code
15969more "Linux-like":
15970
15971All typedefs on structs and unions have been removed in keeping
15972with the Linux coding style.
15973
15974Removed the non-Linux SourceSafe module revision number from each
15975module header.
15976
15977Completed major overhaul of symbols to be lowercase for linux.
15978Doubled the number of symbols that are lowercase.
15979
15980Fixed a problem where identifiers within procedure headers and
15981within quotes were not fully lower cased (they were left with a
15982starting capital.)
15983
15984Some C macros whose only purpose is to allow the generation of 16-
15985bit code are now completely removed in the Linux code, increasing
15986readability and maintainability.
15987
15988----------------------------------------
15989
1599012 December 2002.  Summary of changes for version 20021212.
15991
15992
159931) ACPI CA Core Subsystem:
15994
15995Fixed a problem where the creation of a zero-length AML Buffer
15996would cause a fault.
15997
15998Fixed a problem where a Buffer object that pointed to a static AML
15999buffer (in an ACPI table) could inadvertently be deleted, causing
16000memory corruption.
16001
16002Fixed a problem where a user buffer (passed in to the external
16003ACPI CA interfaces) could be overwritten if the buffer was too
16004small to complete the operation, causing memory corruption.
16005
16006Fixed a problem in the Buffer-to-String conversion code where a
16007string of length one was always returned, regardless of the size
16008of the input Buffer object.
16009
16010Removed the NATIVE_CHAR data type across the entire source due to
16011lack of need and lack of consistent use.
16012
16013Code and Data Size: Current core subsystem library sizes are shown
16014below.  These are the code and data sizes for the acpica.lib
16015produced by the Microsoft Visual C++ 6.0 compiler, and these
16016values do not include any ACPI driver or OSPM code.  The debug
16017version of the code includes the debug output trace mechanism and
16018has a much larger code and data size.  Note that these values will
16019vary depending on the efficiency of the compiler and the compiler
16020options used during generation.
16021
16022  Previous Release
16023    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
16024    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
16025  Current Release:
16026    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
16027    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
16028
16029
16030----------------------------------------
1603105 December 2002.  Summary of changes for version 20021205.
16032
160331) ACPI CA Core Subsystem:
16034
16035Fixed a problem where a store to a String or Buffer object could
16036cause corruption of the DSDT if the object type being stored was
16037the same as the target object type and the length of the object
16038being stored was equal to or smaller than the original (existing)
16039target object.  This was seen to cause corruption of battery _BIF
16040buffers if the _BIF method modified the buffer on the fly.
16041
16042Fixed a problem where an internal error was generated if a control
16043method invocation was used in an OperationRegion, Buffer, or
16044Package declaration.  This was caused by the deferred parsing of
16045the control method and thus the deferred creation of the internal
16046method object.  The solution to this problem was to create the
16047internal method object at the moment the method is encountered in
16048the first pass - so that subsequent references to the method will
16049able to obtain the required parameter count and thus properly
16050parse the method invocation.  This problem presented itself as an
16051AE_AML_INTERNAL during the pass 1 parse phase during table load.
16052
16053Fixed a problem where the internal String object copy routine did
16054not always allocate sufficient memory for the target String object
16055and caused memory corruption.  This problem was seen to cause
16056"Allocation already present in list!" errors as memory allocation
16057became corrupted.
16058
16059Implemented a new function for the evaluation of namespace objects
16060that allows the specification of the allowable return object
16061types.  This simplifies a lot of code that checks for a return
16062object of one or more specific objects returned from the
16063evaluation (such as _STA, etc.)  This may become and external
16064function if it would be useful to ACPI-related drivers.
16065
16066Completed another round of prefixing #defines with "ACPI_" for
16067clarity.
16068
16069Completed additional code restructuring to allow more modular
16070linking for iASL compiler and AcpiExec.  Several files were split
16071creating new files.  New files:  nsparse.c dsinit.c evgpe.c
16072
16073Implemented an abort mechanism to terminate an executing control
16074method via the AML debugger.  This feature is useful for debugging
16075control methods that depend (wait) for specific hardware
16076responses.
16077
16078Code and Data Size: Current core subsystem library sizes are shown
16079below.  These are the code and data sizes for the acpica.lib
16080produced by the Microsoft Visual C++ 6.0 compiler, and these
16081values do not include any ACPI driver or OSPM code.  The debug
16082version of the code includes the debug output trace mechanism and
16083has a much larger code and data size.  Note that these values will
16084vary depending on the efficiency of the compiler and the compiler
16085options used during generation.
16086
16087  Previous Release
16088    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16089    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
16090  Current Release:
16091    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
16092    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
16093
16094
160952) iASL Compiler/Disassembler
16096
16097Fixed a compiler code generation problem for "Interrupt" Resource
16098Descriptors.  If specified in the ASL, the optional "Resource
16099Source Index" and "Resource Source" fields were not inserted into
16100the correct location within the AML resource descriptor, creating
16101an invalid descriptor.
16102
16103Fixed a disassembler problem for "Interrupt" resource descriptors.
16104The optional "Resource Source Index" and "Resource Source" fields
16105were ignored.
16106
16107
16108----------------------------------------
1610922 November 2002.  Summary of changes for version 20021122.
16110
16111
161121) ACPI CA Core Subsystem:
16113
16114Fixed a reported problem where an object stored to a Method Local
16115or Arg was not copied to a new object during the store - the
16116object pointer was simply copied to the Local/Arg.  This caused
16117all subsequent operations on the Local/Arg to also affect the
16118original source of the store operation.
16119
16120Fixed a problem where a store operation to a Method Local or Arg
16121was not completed properly if the Local/Arg contained a reference
16122(from RefOf) to a named field.  The general-purpose store-to-
16123namespace-node code is now used so that this case is handled
16124automatically.
16125
16126Fixed a problem where the internal object copy routine would cause
16127a protection fault if the object being copied was a Package and
16128contained either 1) a NULL package element or 2) a nested sub-
16129package.
16130
16131Fixed a problem with the GPE initialization that resulted from an
16132ambiguity in the ACPI specification.  One section of the
16133specification states that both the address and length of the GPE
16134block must be zero if the block is not supported.  Another section
16135implies that only the address need be zero if the block is not
16136supported.  The code has been changed so that both the address and
16137the length must be non-zero to indicate a valid GPE block (i.e.,
16138if either the address or the length is zero, the GPE block is
16139invalid.)
16140
16141Code and Data Size: Current core subsystem library sizes are shown
16142below.  These are the code and data sizes for the acpica.lib
16143produced by the Microsoft Visual C++ 6.0 compiler, and these
16144values do not include any ACPI driver or OSPM code.  The debug
16145version of the code includes the debug output trace mechanism and
16146has a much larger code and data size.  Note that these values will
16147vary depending on the efficiency of the compiler and the compiler
16148options used during generation.
16149
16150  Previous Release
16151    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
16152    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
16153  Current Release:
16154    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16155    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
16156
16157
161582) Linux
16159
16160Cleaned up EC driver. Exported an external EC read/write
16161interface. By going through this, other drivers (most notably
16162sonypi) will be able to serialize access to the EC.
16163
16164
161653) iASL Compiler/Disassembler
16166
16167Implemented support to optionally generate include files for both
16168ASM and C (the -i switch).  This simplifies BIOS development by
16169automatically creating include files that contain external
16170declarations for the symbols that are created within the
16171
16172(optionally generated) ASM and C AML source files.
16173
16174
16175----------------------------------------
1617615 November 2002.  Summary of changes for version 20021115.
16177
161781) ACPI CA Core Subsystem:
16179
16180Fixed a memory leak problem where an error during resolution of
16181
16182method arguments during a method invocation from another method
16183failed to cleanup properly by deleting all successfully resolved
16184argument objects.
16185
16186Fixed a problem where the target of the Index() operator was not
16187correctly constructed if the source object was a package.  This
16188problem has not been detected because the use of a target operand
16189with Index() is very rare.
16190
16191Fixed a problem with the Index() operator where an attempt was
16192made to delete the operand objects twice.
16193
16194Fixed a problem where an attempt was made to delete an operand
16195twice during execution of the CondRefOf() operator if the target
16196did not exist.
16197
16198Implemented the first of perhaps several internal create object
16199functions that create and initialize a specific object type.  This
16200consolidates duplicated code wherever the object is created, thus
16201shrinking the size of the subsystem.
16202
16203Implemented improved debug/error messages for errors that occur
16204during nested method invocations.  All executing method pathnames
16205are displayed (with the error) as the call stack is unwound - thus
16206simplifying debug.
16207
16208Fixed a problem introduced in the 10/02 release that caused
16209premature deletion of a buffer object if a buffer was used as an
16210ASL operand where an integer operand is required (Thus causing an
16211implicit object conversion from Buffer to Integer.)  The change in
16212the 10/02 release was attempting to fix a memory leak (albeit
16213incorrectly.)
16214
16215Code and Data Size: Current core subsystem library sizes are shown
16216below.  These are the code and data sizes for the acpica.lib
16217produced by the Microsoft Visual C++ 6.0 compiler, and these
16218values do not include any ACPI driver or OSPM code.  The debug
16219version of the code includes the debug output trace mechanism and
16220has a much larger code and data size.  Note that these values will
16221vary depending on the efficiency of the compiler and the compiler
16222options used during generation.
16223
16224  Previous Release
16225    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
16226    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
16227  Current Release:
16228    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
16229    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
16230
16231
162322) Linux
16233
16234Changed the implementation of the ACPI semaphores to use down()
16235instead of down_interruptable().  It is important that the
16236execution of ACPI control methods not be interrupted by signals.
16237Methods must run to completion, or the system may be left in an
16238unknown/unstable state.
16239
16240Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
16241(Shawn Starr)
16242
16243
162443) iASL Compiler/Disassembler
16245
16246
16247Changed the default location of output files.  All output files
16248are now placed in the current directory by default instead of in
16249the directory of the source file.  This change may affect some
16250existing makefiles, but it brings the behavior of the compiler in
16251line with other similar tools.  The location of the output files
16252can be overridden with the -p command line switch.
16253
16254
16255----------------------------------------
1625611 November 2002.  Summary of changes for version 20021111.
16257
16258
162590) ACPI Specification 2.0B is released and is now available at:
16260http://www.acpi.info/index.html
16261
16262
162631) ACPI CA Core Subsystem:
16264
16265Implemented support for the ACPI 2.0 SMBus Operation Regions.
16266This includes the early detection and handoff of the request to
16267the SMBus region handler (avoiding all of the complex field
16268support code), and support for the bidirectional return packet
16269from an SMBus write operation.  This paves the way for the
16270development of SMBus drivers in each host operating system.
16271
16272Fixed a problem where the semaphore WAIT_FOREVER constant was
16273defined as 32 bits, but must be 16 bits according to the ACPI
16274specification.  This had the side effect of causing ASL
16275Mutex/Event timeouts even though the ASL code requested a wait
16276forever.  Changed all internal references to the ACPI timeout
16277parameter to 16 bits to prevent future problems.  Changed the name
16278of WAIT_FOREVER to ACPI_WAIT_FOREVER.
16279
16280Code and Data Size: Current core subsystem library sizes are shown
16281below.  These are the code and data sizes for the acpica.lib
16282produced by the Microsoft Visual C++ 6.0 compiler, and these
16283values do not include any ACPI driver or OSPM code.  The debug
16284version of the code includes the debug output trace mechanism and
16285has a much larger code and data size.  Note that these values will
16286vary depending on the efficiency of the compiler and the compiler
16287options used during generation.
16288
16289  Previous Release
16290    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16291    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
16292  Current Release:
16293    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
16294    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
16295
16296
162972) Linux
16298
16299Module loading/unloading fixes (John Cagle)
16300
16301
163023) iASL Compiler/Disassembler
16303
16304Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
16305
16306Implemented support for the disassembly of all SMBus protocol
16307keywords (SMBQuick, SMBWord, etc.)
16308
16309----------------------------------------
1631001 November 2002.  Summary of changes for version 20021101.
16311
16312
163131) ACPI CA Core Subsystem:
16314
16315Fixed a problem where platforms that have a GPE1 block but no GPE0
16316block were not handled correctly.  This resulted in a "GPE
16317overlap" error message.  GPE0 is no longer required.
16318
16319Removed code added in the previous release that inserted nodes
16320into the namespace in alphabetical order.  This caused some side-
16321effects on various machines.  The root cause of the problem is
16322still under investigation since in theory, the internal ordering
16323of the namespace nodes should not matter.
16324
16325
16326Enhanced error reporting for the case where a named object is not
16327found during control method execution.  The full ACPI namepath
16328(name reference) of the object that was not found is displayed in
16329this case.
16330
16331Note: as a result of the overhaul of the namespace object types in
16332the previous release, the namespace nodes for the predefined
16333scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
16334instead of ACPI_TYPE_ANY.  This simplifies the namespace
16335management code but may affect code that walks the namespace tree
16336looking for specific object types.
16337
16338Code and Data Size: Current core subsystem library sizes are shown
16339below.  These are the code and data sizes for the acpica.lib
16340produced by the Microsoft Visual C++ 6.0 compiler, and these
16341values do not include any ACPI driver or OSPM code.  The debug
16342version of the code includes the debug output trace mechanism and
16343has a much larger code and data size.  Note that these values will
16344vary depending on the efficiency of the compiler and the compiler
16345options used during generation.
16346
16347  Previous Release
16348    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
16349    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
16350  Current Release:
16351    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16352    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
16353
16354
163552) Linux
16356
16357Fixed a problem introduced in the previous release where the
16358Processor and Thermal objects were not recognized and installed in
16359/proc.  This was related to the scope type change described above.
16360
16361
163623) iASL Compiler/Disassembler
16363
16364Implemented the -g option to get all of the required ACPI tables
16365from the registry and save them to files (Windows version of the
16366compiler only.)  The required tables are the FADT, FACS, and DSDT.
16367
16368Added ACPI table checksum validation during table disassembly in
16369order to catch corrupted tables.
16370
16371
16372----------------------------------------
1637322 October 2002.  Summary of changes for version 20021022.
16374
163751) ACPI CA Core Subsystem:
16376
16377Implemented a restriction on the Scope operator that the target
16378must already exist in the namespace at the time the operator is
16379encountered (during table load or method execution).  In other
16380words, forward references are not allowed and Scope() cannot
16381create a new object. This changes the previous behavior where the
16382interpreter would create the name if not found.  This new behavior
16383correctly enables the search-to-root algorithm during namespace
16384lookup of the target name.  Because of this upsearch, this fixes
16385the known Compaq _SB_.OKEC problem and makes both the AML
16386interpreter and iASL compiler compatible with other ACPI
16387implementations.
16388
16389Completed a major overhaul of the internal ACPI object types for
16390the ACPI Namespace and the associated operand objects.  Many of
16391these types had become obsolete with the introduction of the two-
16392pass namespace load.  This cleanup simplifies the code and makes
16393the entire namespace load mechanism much clearer and easier to
16394understand.
16395
16396Improved debug output for tracking scope opening/closing to help
16397diagnose scoping issues.  The old scope name as well as the new
16398scope name are displayed.  Also improved error messages for
16399problems with ASL Mutex objects and error messages for GPE
16400problems.
16401
16402Cleaned up the namespace dump code, removed obsolete code.
16403
16404All string output (for all namespace/object dumps) now uses the
16405common ACPI string output procedure which handles escapes properly
16406and does not emit non-printable characters.
16407
16408Fixed some issues with constants in the 64-bit version of the
16409local C library (utclib.c)
16410
16411
164122) Linux
16413
16414EC Driver:  No longer attempts to acquire the Global Lock at
16415interrupt level.
16416
16417
164183) iASL Compiler/Disassembler
16419
16420Implemented ACPI 2.0B grammar change that disallows all Type 1 and
164212 opcodes outside of a control method.  This means that the
16422"executable" operators (versus the "namespace" operators) cannot
16423be used at the table level; they can only be used within a control
16424method.
16425
16426Implemented the restriction on the Scope() operator where the
16427target must already exist in the namespace at the time the
16428operator is encountered (during ASL compilation). In other words,
16429forward references are not allowed and Scope() cannot create a new
16430object.  This makes the iASL compiler compatible with other ACPI
16431implementations and makes the Scope() implementation adhere to the
16432ACPI specification.
16433
16434Fixed a problem where namepath optimization for the Alias operator
16435was optimizing the wrong path (of the two namepaths.)  This caused
16436a "Missing alias link" error message.
16437
16438Fixed a problem where an "unknown reserved name" warning could be
16439incorrectly generated for names like "_SB" when the trailing
16440underscore is not used in the original ASL.
16441
16442Fixed a problem where the reserved name check did not handle
16443NamePaths with multiple NameSegs correctly.  The first nameseg of
16444the NamePath was examined instead of the last NameSeg.
16445
16446
16447----------------------------------------
16448
1644902 October 2002.  Summary of changes for this release.
16450
16451
164521) ACPI CA Core Subsystem version 20021002:
16453
16454Fixed a problem where a store/copy of a string to an existing
16455string did not always set the string length properly in the String
16456object.
16457
16458Fixed a reported problem with the ToString operator where the
16459behavior was identical to the ToHexString operator instead of just
16460simply converting a raw buffer to a string data type.
16461
16462Fixed a problem where CopyObject and the other "explicit"
16463conversion operators were not updating the internal namespace node
16464type as part of the store operation.
16465
16466Fixed a memory leak during implicit source operand conversion
16467where the original object was not deleted if it was converted to a
16468new object of a different type.
16469
16470Enhanced error messages for all problems associated with namespace
16471lookups.  Common procedure generates and prints the lookup name as
16472well as the formatted status.
16473
16474Completed implementation of a new design for the Alias support
16475within the namespace.  The existing design did not handle the case
16476where a new object was assigned to one of the two names due to the
16477use of an explicit conversion operator, resulting in the two names
16478pointing to two different objects.  The new design simply points
16479the Alias name to the original name node - not to the object.
16480This results in a level of indirection that must be handled in the
16481name resolution mechanism.
16482
16483Code and Data Size: Current core subsystem library sizes are shown
16484below.  These are the code and data sizes for the acpica.lib
16485produced by the Microsoft Visual C++ 6.0 compiler, and these
16486values do not include any ACPI driver or OSPM code.  The debug
16487version of the code includes the debug output trace mechanism and
16488has a larger code and data size.  Note that these values will vary
16489depending on the efficiency of the compiler and the compiler
16490options used during generation.
16491
16492  Previous Release
16493    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
16494    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
16495  Current Release:
16496    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
16497    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
16498
16499
165002) Linux
16501
16502Initialize thermal driver's timer before it is used. (Knut
16503Neumann)
16504
16505Allow handling negative celsius values. (Kochi Takayoshi)
16506
16507Fix thermal management and make trip points. R/W (Pavel Machek)
16508
16509Fix /proc/acpi/sleep. (P. Christeas)
16510
16511IA64 fixes. (David Mosberger)
16512
16513Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
16514
16515Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
16516Brodowski)
16517
16518
165193) iASL Compiler/Disassembler
16520
16521Clarified some warning/error messages.
16522
16523
16524----------------------------------------
1652518 September 2002.  Summary of changes for this release.
16526
16527
165281) ACPI CA Core Subsystem version 20020918:
16529
16530Fixed a reported problem with reference chaining (via the Index()
16531and RefOf() operators) in the ObjectType() and SizeOf() operators.
16532The definition of these operators includes the dereferencing of
16533all chained references to return information on the base object.
16534
16535Fixed a problem with stores to indexed package elements - the
16536existing code would not complete the store if an "implicit
16537conversion" was not performed.  In other words, if the existing
16538object (package element) was to be replaced completely, the code
16539didn't handle this case.
16540
16541Relaxed typechecking on the ASL "Scope" operator to allow the
16542target name to refer to an object of type Integer, String, or
16543Buffer, in addition to the scoping object types (Device,
16544predefined Scopes, Processor, PowerResource, and ThermalZone.)
16545This allows existing AML code that has workarounds for a bug in
16546Windows to function properly.  A warning is issued, however.  This
16547affects both the AML interpreter and the iASL compiler. Below is
16548an example of this type of ASL code:
16549
16550      Name(DEB,0x00)
16551      Scope(DEB)
16552      {
16553
16554Fixed some reported problems with 64-bit integer support in the
16555local implementation of C library functions (clib.c)
16556
16557
165582) Linux
16559
16560Use ACPI fix map region instead of IOAPIC region, since it is
16561undefined in non-SMP.
16562
16563Ensure that the SCI has the proper polarity and trigger, even on
16564systems that do not have an interrupt override entry in the MADT.
16565
165662.5 big driver reorganization (Pat Mochel)
16567
16568Use early table mapping code from acpitable.c (Andi Kleen)
16569
16570New blacklist entries (Andi Kleen)
16571
16572Blacklist improvements. Split blacklist code out into a separate
16573file. Move checking the blacklist to very early. Previously, we
16574would use ACPI tables, and then halfway through init, check the
16575blacklist -- too late. Now, it's early enough to completely fall-
16576back to non-ACPI.
16577
16578
165793) iASL Compiler/Disassembler version 20020918:
16580
16581Fixed a problem where the typechecking code didn't know that an
16582alias could point to a method.  In other words, aliases were not
16583being dereferenced during typechecking.
16584
16585
16586----------------------------------------
1658729 August 2002.  Summary of changes for this release.
16588
165891) ACPI CA Core Subsystem Version 20020829:
16590
16591If the target of a Scope() operator already exists, it must be an
16592object type that actually opens a scope -- such as a Device,
16593Method, Scope, etc.  This is a fatal runtime error.  Similar error
16594check has been added to the iASL compiler also.
16595
16596Tightened up the namespace load to disallow multiple names in the
16597same scope.  This previously was allowed if both objects were of
16598the same type.  (i.e., a lookup was the same as entering a new
16599name).
16600
16601
166022) Linux
16603
16604Ensure that the ACPI interrupt has the proper trigger and
16605polarity.
16606
16607local_irq_disable is extraneous. (Matthew Wilcox)
16608
16609Make "acpi=off" actually do what it says, and not use the ACPI
16610interpreter *or* the tables.
16611
16612Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
16613Takayoshi)
16614
16615
166163) iASL Compiler/Disassembler  Version 20020829:
16617
16618Implemented namepath optimization for name declarations.  For
16619example, a declaration like "Method (\_SB_.ABCD)" would get
16620optimized to "Method (ABCD)" if the declaration is within the
16621\_SB_ scope.  This optimization is in addition to the named
16622reference path optimization first released in the previous
16623version. This would seem to complete all possible optimizations
16624for namepaths within the ASL/AML.
16625
16626If the target of a Scope() operator already exists, it must be an
16627object type that actually opens a scope -- such as a Device,
16628Method, Scope, etc.
16629
16630Implemented a check and warning for unreachable code in the same
16631block below a Return() statement.
16632
16633Fixed a problem where the listing file was not generated if the
16634compiler aborted if the maximum error count was exceeded (200).
16635
16636Fixed a problem where the typechecking of method return values was
16637broken.  This includes the check for a return value when the
16638method is invoked as a TermArg (a return value is expected.)
16639
16640Fixed a reported problem where EOF conditions during a quoted
16641string or comment caused a fault.
16642
16643
16644----------------------------------------
1664515 August 2002.  Summary of changes for this release.
16646
166471) ACPI CA Core Subsystem Version 20020815:
16648
16649Fixed a reported problem where a Store to a method argument that
16650contains a reference did not perform the indirect store correctly.
16651This problem was created during the conversion to the new
16652reference object model - the indirect store to a method argument
16653code was not updated to reflect the new model.
16654
16655Reworked the ACPI mode change code to better conform to ACPI 2.0,
16656handle corner cases, and improve code legibility (Kochi Takayoshi)
16657
16658Fixed a problem with the pathname parsing for the carat (^)
16659prefix.  The heavy use of the carat operator by the new namepath
16660optimization in the iASL compiler uncovered a problem with the AML
16661interpreter handling of this prefix.  In the case where one or
16662more carats precede a single nameseg, the nameseg was treated as
16663standalone and the search rule (to root) was inadvertently
16664applied.  This could cause both the iASL compiler and the
16665interpreter to find the wrong object or to miss the error that
16666should occur if the object does not exist at that exact pathname.
16667
16668Found and fixed the problem where the HP Pavilion DSDT would not
16669load.  This was a relatively minor tweak to the table loading code
16670(a problem caused by the unexpected encounter with a method
16671invocation not within a control method), but it does not solve the
16672overall issue of the execution of AML code at the table level.
16673This investigation is still ongoing.
16674
16675Code and Data Size: Current core subsystem library sizes are shown
16676below.  These are the code and data sizes for the acpica.lib
16677produced by the Microsoft Visual C++ 6.0 compiler, and these
16678values do not include any ACPI driver or OSPM code.  The debug
16679version of the code includes the debug output trace mechanism and
16680has a larger code and data size.  Note that these values will vary
16681depending on the efficiency of the compiler and the compiler
16682options used during generation.
16683
16684  Previous Release
16685    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
16686    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
16687  Current Release:
16688    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
16689    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
16690
16691
166922) Linux
16693
16694Remove redundant slab.h include (Brad Hards)
16695
16696Fix several bugs in thermal.c (Herbert Nachtnebel)
16697
16698Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
16699
16700Change acpi_system_suspend to use updated irq functions (Pavel
16701Machek)
16702
16703Export acpi_get_firmware_table (Matthew Wilcox)
16704
16705Use proper root proc entry for ACPI (Kochi Takayoshi)
16706
16707Fix early-boot table parsing (Bjorn Helgaas)
16708
16709
167103) iASL Compiler/Disassembler
16711
16712Reworked the compiler options to make them more consistent and to
16713use two-letter options where appropriate.  We were running out of
16714sensible letters.   This may break some makefiles, so check the
16715current options list by invoking the compiler with no parameters.
16716
16717Completed the design and implementation of the ASL namepath
16718optimization option for the compiler.  This option optimizes all
16719references to named objects to the shortest possible path.  The
16720first attempt tries to utilize a single nameseg (4 characters) and
16721the "search-to-root" algorithm used by the interpreter.  If that
16722cannot be used (because either the name is not in the search path
16723or there is a conflict with another object with the same name),
16724the pathname is optimized using the carat prefix (usually a
16725shorter string than specifying the entire path from the root.)
16726
16727Implemented support to obtain the DSDT from the Windows registry
16728(when the disassembly option is specified with no input file).
16729Added this code as the implementation for AcpiOsTableOverride in
16730the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
16731utility) to scan memory for the DSDT to the AcpiOsTableOverride
16732function in the DOS OSL to make the disassembler truly OS
16733independent.
16734
16735Implemented a new option to disassemble and compile in one step.
16736When used without an input filename, this option will grab the
16737DSDT from the local machine, disassemble it, and compile it in one
16738step.
16739
16740Added a warning message for invalid escapes (a backslash followed
16741by any character other than the allowable escapes).  This catches
16742the quoted string error "\_SB_" (which should be "\\_SB_" ).
16743
16744Also, there are numerous instances in the ACPI specification where
16745this error occurs.
16746
16747Added a compiler option to disable all optimizations.  This is
16748basically the "compatibility mode" because by using this option,
16749the AML code will come out exactly the same as other ASL
16750compilers.
16751
16752Added error messages for incorrectly ordered dependent resource
16753functions.  This includes: missing EndDependentFn macro at end of
16754dependent resource list, nested dependent function macros (both
16755start and end), and missing StartDependentFn macro.  These are
16756common errors that should be caught at compile time.
16757
16758Implemented _OSI support for the disassembler and compiler.  _OSI
16759must be included in the namespace for proper disassembly (because
16760the disassembler must know the number of arguments.)
16761
16762Added an "optimization" message type that is optional (off by
16763default).  This message is used for all optimizations - including
16764constant folding, integer optimization, and namepath optimization.
16765
16766----------------------------------------
1676725 July 2002.  Summary of changes for this release.
16768
16769
167701) ACPI CA Core Subsystem Version 20020725:
16771
16772The AML Disassembler has been enhanced to produce compilable ASL
16773code and has been integrated into the iASL compiler (see below) as
16774well as the single-step disassembly for the AML debugger and the
16775disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
16776resource templates and macros are fully supported.  The
16777disassembler has been tested on over 30 different AML files,
16778producing identical AML when the resulting disassembled ASL file
16779is recompiled with the same ASL compiler.
16780
16781Modified the Resource Manager to allow zero interrupts and zero
16782dma channels during the GetCurrentResources call.  This was
16783causing problems on some platforms.
16784
16785Added the AcpiOsRedirectOutput interface to the OSL to simplify
16786output redirection for the AcpiOsPrintf and AcpiOsVprintf
16787interfaces.
16788
16789Code and Data Size: Current core subsystem library sizes are shown
16790below.  These are the code and data sizes for the acpica.lib
16791produced by the Microsoft Visual C++ 6.0 compiler, and these
16792values do not include any ACPI driver or OSPM code.  The debug
16793version of the code includes the debug output trace mechanism and
16794has a larger code and data size.  Note that these values will vary
16795depending on the efficiency of the compiler and the compiler
16796options used during generation.
16797
16798  Previous Release
16799    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
16800    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
16801  Current Release:
16802    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
16803    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
16804
16805
168062) Linux
16807
16808Fixed a panic in the EC driver (Dominik Brodowski)
16809
16810Implemented checksum of the R/XSDT itself during Linux table scan
16811(Richard Schaal)
16812
16813
168143) iASL compiler
16815
16816The AML disassembler is integrated into the compiler.  The "-d"
16817option invokes the disassembler  to completely disassemble an
16818input AML file, producing as output a text ASL file with the
16819extension ".dsl" (to avoid name collisions with existing .asl
16820source files.)  A future enhancement will allow the disassembler
16821to obtain the BIOS DSDT from the registry under Windows.
16822
16823Fixed a problem with the VendorShort and VendorLong resource
16824descriptors where an invalid AML sequence was created.
16825
16826Implemented a fix for BufferData term in the ASL parser.  It was
16827inadvertently defined twice, allowing invalid syntax to pass and
16828causing reduction conflicts.
16829
16830Fixed a problem where the Ones opcode could get converted to a
16831value of zero if "Ones" was used where a byte, word or dword value
16832was expected.  The 64-bit value is now truncated to the correct
16833size with the correct value.
16834
16835
16836
16837----------------------------------------
1683802 July 2002.  Summary of changes for this release.
16839
16840
168411) ACPI CA Core Subsystem Version 20020702:
16842
16843The Table Manager code has been restructured to add several new
16844features.  Tables that are not required by the core subsystem
16845(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
16846validated in any way and are returned from AcpiGetFirmwareTable if
16847requested.  The AcpiOsTableOverride interface is now called for
16848each table that is loaded by the subsystem in order to allow the
16849host to override any table it chooses.  Previously, only the DSDT
16850could be overridden.  Added one new files, tbrsdt.c and
16851tbgetall.c.
16852
16853Fixed a problem with the conversion of internal package objects to
16854external objects (when a package is returned from a control
16855method.)  The return buffer length was set to zero instead of the
16856proper length of the package object.
16857
16858Fixed a reported problem with the use of the RefOf and DeRefOf
16859operators when passing reference arguments to control methods.  A
16860new type of Reference object is used internally for references
16861produced by the RefOf operator.
16862
16863Added additional error messages in the Resource Manager to explain
16864AE_BAD_DATA errors when they occur during resource parsing.
16865
16866Split the AcpiEnableSubsystem into two primitives to enable a
16867finer granularity initialization sequence.  These two calls should
16868be called in this order: AcpiEnableSubsystem (flags),
16869AcpiInitializeObjects (flags).  The flags parameter remains the
16870same.
16871
16872
168732) Linux
16874
16875Updated the ACPI utilities module to understand the new style of
16876fully resolved package objects that are now returned from the core
16877subsystem.  This eliminates errors of the form:
16878
16879    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
16880    acpi_utils-0430 [145] acpi_evaluate_reference:
16881        Invalid element in package (not a device reference)
16882
16883The method evaluation utility uses the new buffer allocation
16884scheme instead of calling AcpiEvaluate Object twice.
16885
16886Added support for ECDT. This allows the use of the Embedded
16887
16888Controller before the namespace has been fully initialized, which
16889is necessary for ACPI 2.0 support, and for some laptops to
16890initialize properly. (Laptops using ECDT are still rare, so only
16891limited testing was performed of the added functionality.)
16892
16893Fixed memory leaks in the EC driver.
16894
16895Eliminated a brittle code structure in acpi_bus_init().
16896
16897Eliminated the acpi_evaluate() helper function in utils.c. It is
16898no longer needed since acpi_evaluate_object can optionally
16899allocate memory for the return object.
16900
16901Implemented fix for keyboard hang when getting battery readings on
16902some systems (Stephen White)
16903
16904PCI IRQ routing update (Dominik Brodowski)
16905
16906Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
16907support
16908
16909----------------------------------------
1691011 June 2002.  Summary of changes for this release.
16911
16912
169131) ACPI CA Core Subsystem Version 20020611:
16914
16915Fixed a reported problem where constants such as Zero and One
16916appearing within _PRT packages were not handled correctly within
16917the resource manager code.  Originally reported against the ASL
16918compiler because the code generator now optimizes integers to
16919their minimal AML representation (i.e. AML constants if possible.)
16920The _PRT code now handles all AML constant opcodes correctly
16921(Zero, One, Ones, Revision).
16922
16923Fixed a problem with the Concatenate operator in the AML
16924interpreter where a buffer result object was incorrectly marked as
16925not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
16926
16927All package sub-objects are now fully resolved before they are
16928returned from the external ACPI interfaces.  This means that name
16929strings are resolved to object handles, and constant operators
16930(Zero, One, Ones, Revision) are resolved to Integers.
16931
16932Implemented immediate resolution of the AML Constant opcodes
16933(Zero, One, Ones, Revision) to Integer objects upon detection
16934within the AML stream. This has simplified and reduced the
16935generated code size of the subsystem by eliminating about 10
16936switch statements for these constants (which previously were
16937contained in Reference objects.)  The complicating issues are that
16938the Zero opcode is used as a "placeholder" for unspecified
16939optional target operands and stores to constants are defined to be
16940no-ops.
16941
16942Code and Data Size: Current core subsystem library sizes are shown
16943below. These are the code and data sizes for the acpica.lib
16944produced by the Microsoft Visual C++ 6.0 compiler, and these
16945values do not include any ACPI driver or OSPM code.  The debug
16946version of the code includes the debug output trace mechanism and
16947has a larger code and data size.  Note that these values will vary
16948depending on the efficiency of the compiler and the compiler
16949options used during generation.
16950
16951  Previous Release
16952    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
16953    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
16954  Current Release:
16955    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
16956    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
16957
16958
169592) Linux
16960
16961
16962Added preliminary support for obtaining _TRA data for PCI root
16963bridges (Bjorn Helgaas).
16964
16965
169663) iASL Compiler Version X2046:
16967
16968Fixed a problem where the "_DDN" reserved name was defined to be a
16969control method with one argument.  There are no arguments, and
16970_DDN does not have to be a control method.
16971
16972Fixed a problem with the Linux version of the compiler where the
16973source lines printed with error messages were the wrong lines.
16974This turned out to be the "LF versus CR/LF" difference between
16975Windows and Unix.  This appears to be the longstanding issue
16976concerning listing output and error messages.
16977
16978Fixed a problem with the Linux version of compiler where opcode
16979names within error messages were wrong.  This was caused by a
16980slight difference in the output of the Flex tool on Linux versus
16981Windows.
16982
16983Fixed a problem with the Linux compiler where the hex output files
16984contained some garbage data caused by an internal buffer overrun.
16985
16986
16987----------------------------------------
1698817 May 2002.  Summary of changes for this release.
16989
16990
169911) ACPI CA Core Subsystem Version 20020517:
16992
16993Implemented a workaround to an BIOS bug discovered on the HP
16994OmniBook where the FADT revision number and the table size are
16995inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
16996behavior is to fallback to using only the ACPI 1.0 fields of the
16997FADT if the table is too small to be a ACPI 2.0 table as claimed
16998by the revision number.  Although this is a BIOS bug, this is a
16999case where the workaround is simple enough and with no side
17000effects, so it seemed prudent to add it.  A warning message is
17001issued, however.
17002
17003Implemented minimum size checks for the fixed-length ACPI tables -
17004- the FADT and FACS, as well as consistency checks between the
17005revision number and the table size.
17006
17007Fixed a reported problem in the table override support where the
17008new table pointer was incorrectly treated as a physical address
17009instead of a logical address.
17010
17011Eliminated the use of the AE_AML_ERROR exception and replaced it
17012with more descriptive codes.
17013
17014Fixed a problem where an exception would occur if an ASL Field was
17015defined with no named Field Units underneath it (used by some
17016index fields).
17017
17018Code and Data Size: Current core subsystem library sizes are shown
17019below.  These are the code and data sizes for the acpica.lib
17020produced by the Microsoft Visual C++ 6.0 compiler, and these
17021values do not include any ACPI driver or OSPM code.  The debug
17022version of the code includes the debug output trace mechanism and
17023has a larger code and data size.  Note that these values will vary
17024depending on the efficiency of the compiler and the compiler
17025options used during generation.
17026
17027  Previous Release
17028    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
17029    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
17030  Current Release:
17031    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
17032    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
17033
17034
17035
170362) Linux
17037
17038Much work done on ACPI init (MADT and PCI IRQ routing support).
17039(Paul D. and Dominik Brodowski)
17040
17041Fix PCI IRQ-related panic on boot (Sam Revitch)
17042
17043Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
17044
17045Fix "MHz" typo (Dominik Brodowski)
17046
17047Fix RTC year 2000 issue (Dominik Brodowski)
17048
17049Preclude multiple button proc entries (Eric Brunet)
17050
17051Moved arch-specific code out of include/platform/aclinux.h
17052
170533) iASL Compiler Version X2044:
17054
17055Implemented error checking for the string used in the EISAID macro
17056(Usually used in the definition of the _HID object.)  The code now
17057strictly enforces the PnP format - exactly 7 characters, 3
17058uppercase letters and 4 hex digits.
17059
17060If a raw string is used in the definition of the _HID object
17061(instead of the EISAID macro), the string must contain all
17062alphanumeric characters (e.g., "*PNP0011" is not allowed because
17063of the asterisk.)
17064
17065Implemented checking for invalid use of ACPI reserved names for
17066most of the name creation operators (Name, Device, Event, Mutex,
17067OperationRegion, PowerResource, Processor, and ThermalZone.)
17068Previously, this check was only performed for control methods.
17069
17070Implemented an additional check on the Name operator to emit an
17071error if a reserved name that must be implemented in ASL as a
17072control method is used.  We know that a reserved name must be a
17073method if it is defined with input arguments.
17074
17075The warning emitted when a namespace object reference is not found
17076during the cross reference phase has been changed into an error.
17077The "External" directive should be used for names defined in other
17078modules.
17079
17080
170814) Tools and Utilities
17082
17083The 16-bit tools (adump16 and aexec16) have been regenerated and
17084tested.
17085
17086Fixed a problem with the output of both acpidump and adump16 where
17087the indentation of closing parentheses and brackets was not
17088
17089aligned properly with the parent block.
17090
17091
17092----------------------------------------
1709303 May 2002.  Summary of changes for this release.
17094
17095
170961) ACPI CA Core Subsystem Version 20020503:
17097
17098Added support a new OSL interface that allows the host operating
17099
17100system software to override the DSDT found in the firmware -
17101AcpiOsTableOverride.  With this interface, the OSL can examine the
17102version of the firmware DSDT and replace it with a different one
17103if desired.
17104
17105Added new external interfaces for accessing ACPI registers from
17106device drivers and other system software - AcpiGetRegister and
17107AcpiSetRegister.  This was simply an externalization of the
17108existing AcpiHwBitRegister interfaces.
17109
17110Fixed a regression introduced in the previous build where the
17111ASL/AML CreateField operator always returned an error,
17112"destination must be a NS Node".
17113
17114Extended the maximum time (before failure) to successfully enable
17115ACPI mode to 3 seconds.
17116
17117Code and Data Size: Current core subsystem library sizes are shown
17118below.  These are the code and data sizes for the acpica.lib
17119produced by the Microsoft Visual C++ 6.0 compiler, and these
17120values do not include any ACPI driver or OSPM code.  The debug
17121version of the code includes the debug output trace mechanism and
17122has a larger code and data size.  Note that these values will vary
17123depending on the efficiency of the compiler and the compiler
17124options used during generation.
17125
17126  Previous Release
17127    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
17128    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
17129  Current Release:
17130    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
17131    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
17132
17133
171342) Linux
17135
17136Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
17137free. While 3 out of 4 of our in-house systems work fine, the last
17138one still hangs when testing the LAPIC timer.
17139
17140Renamed many files in 2.5 kernel release to omit "acpi_" from the
17141name.
17142
17143Added warning on boot for Presario 711FR.
17144
17145Sleep improvements (Pavel Machek)
17146
17147ACPI can now be built without CONFIG_PCI enabled.
17148
17149IA64: Fixed memory map functions (JI Lee)
17150
17151
171523) iASL Compiler Version X2043:
17153
17154Added support to allow the compiler to be integrated into the MS
17155VC++ development environment for one-button compilation of single
17156files or entire projects -- with error-to-source-line mapping.
17157
17158Implemented support for compile-time constant folding for the
17159Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
17160specification.  This allows the ASL writer to use expressions
17161instead of Integer/Buffer/String constants in terms that must
17162evaluate to constants at compile time and will also simplify the
17163emitted AML in any such sub-expressions that can be folded
17164(evaluated at compile-time.)  This increases the size of the
17165compiler significantly because a portion of the ACPI CA AML
17166interpreter is included within the compiler in order to pre-
17167evaluate constant expressions.
17168
17169
17170Fixed a problem with the "Unicode" ASL macro that caused the
17171compiler to fault.  (This macro is used in conjunction with the
17172_STR reserved name.)
17173
17174Implemented an AML opcode optimization to use the Zero, One, and
17175Ones opcodes where possible to further reduce the size of integer
17176constants and thus reduce the overall size of the generated AML
17177code.
17178
17179Implemented error checking for new reserved terms for ACPI version
171802.0A.
17181
17182Implemented the -qr option to display the current list of ACPI
17183reserved names known to the compiler.
17184
17185Implemented the -qc option to display the current list of ASL
17186operators that are allowed within constant expressions and can
17187therefore be folded at compile time if the operands are constants.
17188
17189
171904) Documentation
17191
17192Updated the Programmer's Reference for new interfaces, data types,
17193and memory allocation model options.
17194
17195Updated the iASL Compiler User Reference to apply new format and
17196add information about new features and options.
17197
17198----------------------------------------
1719919 April 2002.  Summary of changes for this release.
17200
172011) ACPI CA Core Subsystem Version 20020419:
17202
17203The source code base for the Core Subsystem has been completely
17204cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
17205versions.  The Lint option files used are included in the
17206/acpi/generate/lint directory.
17207
17208Implemented enhanced status/error checking across the entire
17209Hardware manager subsystem.  Any hardware errors (reported from
17210the OSL) are now bubbled up and will abort a running control
17211method.
17212
17213
17214Fixed a problem where the per-ACPI-table integer width (32 or 64)
17215was stored only with control method nodes, causing a fault when
17216non-control method code was executed during table loading.  The
17217solution implemented uses a global variable to indicate table
17218width across the entire ACPI subsystem.  Therefore, ACPI CA does
17219not support mixed integer widths across different ACPI tables
17220(DSDT, SSDT).
17221
17222Fixed a problem where NULL extended fields (X fields) in an ACPI
172232.0 ACPI FADT caused the table load to fail.  Although the
17224existing ACPI specification is a bit fuzzy on this topic, the new
17225behavior is to fall back on a ACPI 1.0 field if the corresponding
17226ACPI 2.0 X field is zero (even though the table revision indicates
17227a full ACPI 2.0 table.)  The ACPI specification will be updated to
17228clarify this issue.
17229
17230Fixed a problem with the SystemMemory operation region handler
17231where memory was always accessed byte-wise even if the AML-
17232specified access width was larger than a byte.  This caused
17233problems on systems with memory-mapped I/O.  Memory is now
17234accessed with the width specified.  On systems that do not support
17235non-aligned transfers, a check is made to guarantee proper address
17236alignment before proceeding in order to avoid an AML-caused
17237alignment fault within the kernel.
17238
17239
17240Fixed a problem with the ExtendedIrq resource where only one byte
17241of the 4-byte Irq field was extracted.
17242
17243Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
17244function was out of date and required a rewrite.
17245
17246Code and Data Size: Current core subsystem library sizes are shown
17247below.  These are the code and data sizes for the acpica.lib
17248produced by the Microsoft Visual C++ 6.0 compiler, and these
17249values do not include any ACPI driver or OSPM code.  The debug
17250version of the code includes the debug output trace mechanism and
17251has a larger code and data size.  Note that these values will vary
17252depending on the efficiency of the compiler and the compiler
17253options used during generation.
17254
17255  Previous Release
17256    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
17257    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
17258  Current Release:
17259    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
17260    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
17261
17262
172632) Linux
17264
17265PCI IRQ routing fixes (Dominik Brodowski)
17266
17267
172683) iASL Compiler Version X2042:
17269
17270Implemented an additional compile-time error check for a field
17271unit whose size + minimum access width would cause a run-time
17272access beyond the end-of-region.  Previously, only the field size
17273itself was checked.
17274
17275The Core subsystem and iASL compiler now share a common parse
17276object in preparation for compile-time evaluation of the type
172773/4/5 ASL operators.
17278
17279
17280----------------------------------------
17281Summary of changes for this release: 03_29_02
17282
172831) ACPI CA Core Subsystem Version 20020329:
17284
17285Implemented support for late evaluation of TermArg operands to
17286Buffer and Package objects.  This allows complex expressions to be
17287used in the declarations of these object types.
17288
17289Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
172901.0, if the field was larger than 32 bits, it was returned as a
17291buffer - otherwise it was returned as an integer.  In ACPI 2.0,
17292the field is returned as a buffer only if the field is larger than
1729364 bits.  The TableRevision is now considered when making this
17294conversion to avoid incompatibility with existing ASL code.
17295
17296Implemented logical addressing for AcpiOsGetRootPointer.  This
17297allows an RSDP with either a logical or physical address.  With
17298this support, the host OS can now override all ACPI tables with
17299one logical RSDP.  Includes implementation of  "typed" pointer
17300support to allow a common data type for both physical and logical
17301pointers internally.  This required a change to the
17302AcpiOsGetRootPointer interface.
17303
17304Implemented the use of ACPI 2.0 Generic Address Structures for all
17305GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
17306mapped I/O for these ACPI features.
17307
17308Initialization now ignores not only non-required tables (All
17309tables other than the FADT, FACS, DSDT, and SSDTs), but also does
17310not validate the table headers of unrecognized tables.
17311
17312Fixed a problem where a notify handler could only be
17313installed/removed on an object of type Device.  All "notify"
17314
17315objects are now supported -- Devices, Processor, Power, and
17316Thermal.
17317
17318Removed most verbosity from the ACPI_DB_INFO debug level.  Only
17319critical information is returned when this debug level is enabled.
17320
17321Code and Data Size: Current core subsystem library sizes are shown
17322below.  These are the code and data sizes for the acpica.lib
17323produced by the Microsoft Visual C++ 6.0 compiler, and these
17324values do not include any ACPI driver or OSPM code.  The debug
17325version of the code includes the debug output trace mechanism and
17326has a larger code and data size.  Note that these values will vary
17327depending on the efficiency of the compiler and the compiler
17328options used during generation.
17329
17330  Previous Release
17331    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
17332    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
17333  Current Release:
17334    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
17335    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
17336
17337
173382) Linux:
17339
17340The processor driver (acpi_processor.c) now fully supports ACPI
173412.0-based processor performance control (e.g. Intel(R)
17342SpeedStep(TM) technology) Note that older laptops that only have
17343the Intel "applet" interface are not supported through this.  The
17344'limit' and 'performance' interface (/proc) are fully functional.
17345[Note that basic policy for controlling performance state
17346transitions will be included in the next version of ospmd.]  The
17347idle handler was modified to more aggressively use C2, and PIIX4
17348errata handling underwent a complete overhaul (big thanks to
17349Dominik Brodowski).
17350
17351Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
17352based devices in the ACPI namespace are now dynamically bound
17353(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
17354This allows, among other things, ACPI to resolve bus numbers for
17355subordinate PCI bridges.
17356
17357Enhanced PCI IRQ routing to get the proper bus number for _PRT
17358entries defined underneath PCI bridges.
17359
17360Added IBM 600E to bad bios list due to invalid _ADR value for
17361PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
17362
17363In the process of adding full MADT support (e.g. IOAPIC) for IA32
17364(acpi.c, mpparse.c) -- stay tuned.
17365
17366Added back visual differentiation between fixed-feature and
17367control-method buttons in dmesg.  Buttons are also subtyped (e.g.
17368button/power/PWRF) to simplify button identification.
17369
17370We no longer use -Wno-unused when compiling debug. Please ignore
17371any "_THIS_MODULE defined but not used" messages.
17372
17373Can now shut down the system using "magic sysrq" key.
17374
17375
173763) iASL Compiler version 2041:
17377
17378Fixed a problem where conversion errors for hex/octal/decimal
17379constants were not reported.
17380
17381Implemented a fix for the General Register template Address field.
17382This field was 8 bits when it should be 64.
17383
17384Fixed a problem where errors/warnings were no longer being emitted
17385within the listing output file.
17386
17387Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
17388exactly 4 characters, alphanumeric only.
17389
17390
17391
17392
17393----------------------------------------
17394Summary of changes for this release: 03_08_02
17395
17396
173971) ACPI CA Core Subsystem Version 20020308:
17398
17399Fixed a problem with AML Fields where the use of the "AccessAny"
17400keyword could cause an interpreter error due to attempting to read
17401or write beyond the end of the parent Operation Region.
17402
17403Fixed a problem in the SystemMemory Operation Region handler where
17404an attempt was made to map memory beyond the end of the region.
17405This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
17406errors on some Linux systems.
17407
17408Fixed a problem where the interpreter/namespace "search to root"
17409algorithm was not functioning for some object types.  Relaxed the
17410internal restriction on the search to allow upsearches for all
17411external object types as well as most internal types.
17412
17413
174142) Linux:
17415
17416We now use safe_halt() macro versus individual calls to sti | hlt.
17417
17418Writing to the processor limit interface should now work. "echo 1"
17419will increase the limit, 2 will decrease, and 0 will reset to the
17420
17421default.
17422
17423
174243) ASL compiler:
17425
17426Fixed segfault on Linux version.
17427
17428
17429----------------------------------------
17430Summary of changes for this release: 02_25_02
17431
174321) ACPI CA Core Subsystem:
17433
17434
17435Fixed a problem where the GPE bit masks were not initialized
17436properly, causing erratic GPE behavior.
17437
17438Implemented limited support for multiple calling conventions.  The
17439code can be generated with either the VPL (variable parameter
17440list, or "C") convention, or the FPL (fixed parameter list, or
17441"Pascal") convention.  The core subsystem is about 3.4% smaller
17442when generated with FPL.
17443
17444
174452) Linux
17446
17447Re-add some /proc/acpi/event functionality that was lost during
17448the rewrite
17449
17450Resolved issue with /proc events for fixed-feature buttons showing
17451up as the system device.
17452
17453Fixed checks on C2/C3 latencies to be inclusive of maximum values.
17454
17455Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
17456
17457Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
17458
17459Fixed limit interface & usage to fix bugs with passive cooling
17460hysterisis.
17461
17462Restructured PRT support.
17463
17464
17465----------------------------------------
17466Summary of changes for this label: 02_14_02
17467
17468
174691) ACPI CA Core Subsystem:
17470
17471Implemented support in AcpiLoadTable to allow loading of FACS and
17472FADT tables.
17473
17474Support for the now-obsolete interim 0.71 64-bit ACPI tables has
17475been removed.  All 64-bit platforms should be migrated to the ACPI
174762.0 tables.  The actbl71.h header has been removed from the source
17477tree.
17478
17479All C macros defined within the subsystem have been prefixed with
17480"ACPI_" to avoid collision with other system include files.
17481
17482Removed the return value for the two AcpiOsPrint interfaces, since
17483it is never used and causes lint warnings for ignoring the return
17484value.
17485
17486Added error checking to all internal mutex acquire and release
17487calls.  Although a failure from one of these interfaces is
17488probably a fatal system error, these checks will cause the
17489immediate abort of the currently executing method or interface.
17490
17491Fixed a problem where the AcpiSetCurrentResources interface could
17492fault.  This was a side effect of the deployment of the new memory
17493allocation model.
17494
17495Fixed a couple of problems with the Global Lock support introduced
17496in the last major build.  The "common" (1.0/2.0) internal FACS was
17497being overwritten with the FACS signature and clobbering the
17498Global Lock pointer.  Also, the actual firmware FACS was being
17499unmapped after construction of the "common" FACS, preventing
17500access to the actual Global Lock field within it.  The "common"
17501internal FACS is no longer installed as an actual ACPI table; it
17502is used simply as a global.
17503
17504Code and Data Size: Current core subsystem library sizes are shown
17505below.  These are the code and data sizes for the acpica.lib
17506produced by the Microsoft Visual C++ 6.0 compiler, and these
17507values do not include any ACPI driver or OSPM code.  The debug
17508version of the code includes the debug output trace mechanism and
17509has a larger code and data size.  Note that these values will vary
17510depending on the efficiency of the compiler and the compiler
17511options used during generation.
17512
17513  Previous Release (02_07_01)
17514    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
17515    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
17516  Current Release:
17517    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
17518    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
17519
17520
175212) Linux
17522
17523Updated Linux-specific code for core macro and OSL interface
17524changes described above.
17525
17526Improved /proc/acpi/event. It now can be opened only once and has
17527proper poll functionality.
17528
17529Fixed and restructured power management (acpi_bus).
17530
17531Only create /proc "view by type" when devices of that class exist.
17532
17533Fixed "charging/discharging" bug (and others) in acpi_battery.
17534
17535Improved thermal zone code.
17536
17537
175383) ASL Compiler, version X2039:
17539
17540
17541Implemented the new compiler restriction on ASL String hex/octal
17542escapes to non-null, ASCII values.  An error results if an invalid
17543value is used.  (This will require an ACPI 2.0 specification
17544change.)
17545
17546AML object labels that are output to the optional C and ASM source
17547are now prefixed with both the ACPI table signature and table ID
17548to help guarantee uniqueness within a large BIOS project.
17549
17550
17551----------------------------------------
17552Summary of changes for this label: 02_01_02
17553
175541) ACPI CA Core Subsystem:
17555
17556ACPI 2.0 support is complete in the entire Core Subsystem and the
17557ASL compiler. All new ACPI 2.0 operators are implemented and all
17558other changes for ACPI 2.0 support are complete.  With
17559simultaneous code and data optimizations throughout the subsystem,
17560ACPI 2.0 support has been implemented with almost no additional
17561cost in terms of code and data size.
17562
17563Implemented a new mechanism for allocation of return buffers.  If
17564the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
17565be allocated on behalf of the caller.  Consolidated all return
17566buffer validation and allocation to a common procedure.  Return
17567buffers will be allocated via the primary OSL allocation interface
17568since it appears that a separate pool is not needed by most users.
17569If a separate pool is required for these buffers, the caller can
17570still use the original mechanism and pre-allocate the buffer(s).
17571
17572Implemented support for string operands within the DerefOf
17573operator.
17574
17575Restructured the Hardware and Event managers to be table driven,
17576simplifying the source code and reducing the amount of generated
17577code.
17578
17579Split the common read/write low-level ACPI register bitfield
17580procedure into a separate read and write, simplifying the code
17581considerably.
17582
17583Obsoleted the AcpiOsCallocate OSL interface.  This interface was
17584used only a handful of times and didn't have enough critical mass
17585for a separate interface.  Replaced with a common calloc procedure
17586in the core.
17587
17588Fixed a reported problem with the GPE number mapping mechanism
17589that allows GPE1 numbers to be non-contiguous with GPE0.
17590Reorganized the GPE information and shrunk a large array that was
17591originally large enough to hold info for all possible GPEs (256)
17592to simply large enough to hold all GPEs up to the largest GPE
17593number on the machine.
17594
17595Fixed a reported problem with resource structure alignment on 64-
17596bit platforms.
17597
17598Changed the AcpiEnableEvent and AcpiDisableEvent external
17599interfaces to not require any flags for the common case of
17600enabling/disabling a GPE.
17601
17602Implemented support to allow a "Notify" on a Processor object.
17603
17604Most TBDs in comments within the source code have been resolved
17605and eliminated.
17606
17607
17608Fixed a problem in the interpreter where a standalone parent
17609prefix (^) was not handled correctly in the interpreter and
17610debugger.
17611
17612Removed obsolete and unnecessary GPE save/restore code.
17613
17614Implemented Field support in the ASL Load operator.  This allows a
17615table to be loaded from a named field, in addition to loading a
17616table directly from an Operation Region.
17617
17618Implemented timeout and handle support in the external Global Lock
17619interfaces.
17620
17621Fixed a problem in the AcpiDump utility where pathnames were no
17622longer being generated correctly during the dump of named objects.
17623
17624Modified the AML debugger to give a full display of if/while
17625predicates instead of just one AML opcode at a time.  (The
17626predicate can have several nested ASL statements.)  The old method
17627was confusing during single stepping.
17628
17629Code and Data Size: Current core subsystem library sizes are shown
17630below. These are the code and data sizes for the acpica.lib
17631produced by the Microsoft Visual C++ 6.0 compiler, and these
17632values do not include any ACPI driver or OSPM code.  The debug
17633version of the code includes the debug output trace mechanism and
17634has a larger code and data size.  Note that these values will vary
17635depending on the efficiency of the compiler and the compiler
17636options used during generation.
17637
17638  Previous Release (12_18_01)
17639     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
17640     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
17641   Current Release:
17642     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
17643     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
17644
176452) Linux
17646
17647 Implemented fix for PIIX reverse throttling errata (Processor
17648driver)
17649
17650Added new Limit interface (Processor and Thermal drivers)
17651
17652New thermal policy (Thermal driver)
17653
17654Many updates to /proc
17655
17656Battery "low" event support (Battery driver)
17657
17658Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
17659
17660IA32 - IA64 initialization unification, no longer experimental
17661
17662Menuconfig options redesigned
17663
176643) ASL Compiler, version X2037:
17665
17666Implemented several new output features to simplify integration of
17667AML code into  firmware: 1) Output the AML in C source code with
17668labels for each named ASL object.  The    original ASL source code
17669is interleaved as C comments. 2) Output the AML in ASM source code
17670with labels and interleaved ASL    source. 3) Output the AML in
17671raw hex table form, in either C or ASM.
17672
17673Implemented support for optional string parameters to the
17674LoadTable operator.
17675
17676Completed support for embedded escape sequences within string
17677literals.  The compiler now supports all single character escapes
17678as well as the Octal and Hex escapes.  Note: the insertion of a
17679null byte into a string literal (via the hex/octal escape) causes
17680the string to be immediately terminated.  A warning is issued.
17681
17682Fixed a problem where incorrect AML was generated for the case
17683where an ASL namepath consists of a single parent prefix (
17684
17685) with no trailing name segments.
17686
17687The compiler has been successfully generated with a 64-bit C
17688compiler.
17689
17690
17691
17692
17693----------------------------------------
17694Summary of changes for this label: 12_18_01
17695
176961) Linux
17697
17698Enhanced blacklist with reason and severity fields. Any table's
17699signature may now be used to identify a blacklisted system.
17700
17701Call _PIC control method to inform the firmware which interrupt
17702model the OS is using. Turn on any disabled link devices.
17703
17704Cleaned up busmgr /proc error handling (Andreas Dilger)
17705
17706 2) ACPI CA Core Subsystem:
17707
17708Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
17709while loop)
17710
17711Completed implementation of the ACPI 2.0 "Continue",
17712"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
17713operators.  All new ACPI 2.0 operators are now implemented in both
17714the ASL compiler and the AML interpreter.  The only remaining ACPI
177152.0 task is support for the String data type in the DerefOf
17716operator.  Fixed a problem with AcquireMutex where the status code
17717was lost if the caller had to actually wait for the mutex.
17718
17719Increased the maximum ASL Field size from 64K bits to 4G bits.
17720
17721Completed implementation of the external Global Lock interfaces --
17722AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
17723Handler parameters were added.
17724
17725Completed another pass at removing warnings and issues when
17726compiling with 64-bit compilers.  The code now compiles cleanly
17727with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
17728add and subtract (diff) macros have changed considerably.
17729
17730
17731Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1773264-bit platforms, 32-bits on all others.  This type is used
17733wherever memory allocation and/or the C sizeof() operator is used,
17734and affects the OSL memory allocation interfaces AcpiOsAllocate
17735and AcpiOsCallocate.
17736
17737Implemented sticky user breakpoints in the AML debugger.
17738
17739Code and Data Size: Current core subsystem library sizes are shown
17740below. These are the code and data sizes for the acpica.lib
17741produced by the Microsoft Visual C++ 6.0 compiler, and these
17742values do not include any ACPI driver or OSPM code.  The debug
17743version of the code includes the debug output trace mechanism and
17744has a larger code and data size. Note that these values will vary
17745depending on the efficiency of the compiler and the compiler
17746options used during generation.
17747
17748  Previous Release (12_05_01)
17749     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
17750     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
17751   Current Release:
17752     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
17753     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
17754
17755 3) ASL Compiler, version X2034:
17756
17757Now checks for (and generates an error if detected) the use of a
17758Break or Continue statement without an enclosing While statement.
17759
17760
17761Successfully generated the compiler with the Intel 64-bit C
17762compiler.
17763
17764 ----------------------------------------
17765Summary of changes for this label: 12_05_01
17766
17767 1) ACPI CA Core Subsystem:
17768
17769The ACPI 2.0 CopyObject operator is fully implemented.  This
17770operator creates a new copy of an object (and is also used to
17771bypass the "implicit conversion" mechanism of the Store operator.)
17772
17773The ACPI 2.0 semantics for the SizeOf operator are fully
17774implemented.  The change is that performing a SizeOf on a
17775reference object causes an automatic dereference of the object to
17776the actual value before the size is evaluated. This behavior was
17777undefined in ACPI 1.0.
17778
17779The ACPI 2.0 semantics for the Extended IRQ resource descriptor
17780have been implemented.  The interrupt polarity and mode are now
17781independently set.
17782
17783Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
17784appearing in Package objects were not properly converted to
17785integers when the internal Package was converted to an external
17786object (via the AcpiEvaluateObject interface.)
17787
17788Fixed a problem with the namespace object deletion mechanism for
17789objects created by control methods.  There were two parts to this
17790problem: 1) Objects created during the initialization phase method
17791parse were not being deleted, and 2) The object owner ID mechanism
17792to track objects was broken.
17793
17794Fixed a problem where the use of the ASL Scope operator within a
17795control method would result in an invalid opcode exception.
17796
17797Fixed a problem introduced in the previous label where the buffer
17798length required for the _PRT structure was not being returned
17799correctly.
17800
17801Code and Data Size: Current core subsystem library sizes are shown
17802below. These are the code and data sizes for the acpica.lib
17803produced by the Microsoft Visual C++ 6.0 compiler, and these
17804values do not include any ACPI driver or OSPM code.  The debug
17805version of the code includes the debug output trace mechanism and
17806has a larger code and data size.  Note that these values will vary
17807depending on the efficiency of the compiler and the compiler
17808options used during generation.
17809
17810  Previous Release (11_20_01)
17811     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
17812     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
17813
17814  Current Release:
17815     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
17816     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
17817
17818 2) Linux:
17819
17820Updated all files to apply cleanly against 2.4.16.
17821
17822Added basic PCI Interrupt Routing Table (PRT) support for IA32
17823(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
17824version supports both static and dynamic PRT entries, but dynamic
17825entries are treated as if they were static (not yet
17826reconfigurable).  Architecture- specific code to use this data is
17827absent on IA32 but should be available shortly.
17828
17829Changed the initialization sequence to start the ACPI interpreter
17830(acpi_init) prior to initialization of the PCI driver (pci_init)
17831in init/main.c.  This ordering is required to support PRT and
17832facilitate other (future) enhancement.  A side effect is that the
17833ACPI bus driver and certain device drivers can no longer be loaded
17834as modules.
17835
17836Modified the 'make menuconfig' options to allow PCI Interrupt
17837Routing support to be included without the ACPI Bus and other
17838device drivers.
17839
17840 3) ASL Compiler, version X2033:
17841
17842Fixed some issues with the use of the new CopyObject and
17843DataTableRegion operators.  Both are fully functional.
17844
17845 ----------------------------------------
17846Summary of changes for this label: 11_20_01
17847
17848 20 November 2001.  Summary of changes for this release.
17849
17850 1) ACPI CA Core Subsystem:
17851
17852Updated Index support to match ACPI 2.0 semantics.  Storing a
17853Integer, String, or Buffer to an Index of a Buffer will store only
17854the least-significant byte of the source to the Indexed buffer
17855byte.  Multiple writes are not performed.
17856
17857Fixed a problem where the access type used in an AccessAs ASL
17858operator was not recorded correctly into the field object.
17859
17860Fixed a problem where ASL Event objects were created in a
17861signalled state. Events are now created in an unsignalled state.
17862
17863The internal object cache is now purged after table loading and
17864initialization to reduce the use of dynamic kernel memory -- on
17865the assumption that object use is greatest during the parse phase
17866of the entire table (versus the run-time use of individual control
17867methods.)
17868
17869ACPI 2.0 variable-length packages are now fully operational.
17870
17871Code and Data Size: Code and Data optimizations have permitted new
17872feature development with an actual reduction in the library size.
17873Current core subsystem library sizes are shown below.  These are
17874the code and data sizes for the acpica.lib produced by the
17875Microsoft Visual C++ 6.0 compiler, and these values do not include
17876any ACPI driver or OSPM code.  The debug version of the code
17877includes the debug output trace mechanism and has a larger code
17878and data size.  Note that these values will vary depending on the
17879efficiency of the compiler and the compiler options used during
17880generation.
17881
17882  Previous Release (11_09_01):
17883     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
17884     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
17885
17886  Current Release:
17887     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
17888     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
17889
17890 2) Linux:
17891
17892Enhanced the ACPI boot-time initialization code to allow the use
17893of Local APIC tables for processor enumeration on IA-32, and to
17894pave the way for a fully MPS-free boot (on SMP systems) in the
17895near future.  This functionality replaces
17896arch/i386/kernel/acpitables.c, which was introduced in an earlier
178972.4.15-preX release.  To enable this feature you must add
17898"acpi_boot=on" to the kernel command line -- see the help entry
17899for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
17900the works...
17901
17902Restructured the configuration options to allow boot-time table
17903parsing support without inclusion of the ACPI Interpreter (and
17904other) code.
17905
17906NOTE: This release does not include fixes for the reported events,
17907power-down, and thermal passive cooling issues (coming soon).
17908
17909 3) ASL Compiler:
17910
17911Added additional typechecking for Fields within restricted access
17912Operation Regions.  All fields within EC and CMOS regions must be
17913declared with ByteAcc. All fields within SMBus regions must be
17914declared with the BufferAcc access type.
17915
17916Fixed a problem where the listing file output of control methods
17917no longer interleaved the actual AML code with the ASL source
17918code.
17919
17920
17921
17922
17923----------------------------------------
17924Summary of changes for this label: 11_09_01
17925
179261) ACPI CA Core Subsystem:
17927
17928Implemented ACPI 2.0-defined support for writes to fields with a
17929Buffer, String, or Integer source operand that is smaller than the
17930target field. In these cases, the source operand is zero-extended
17931to fill the target field.
17932
17933Fixed a problem where a Field starting bit offset (within the
17934parent operation region) was calculated incorrectly if the
17935
17936alignment of the field differed from the access width.  This
17937affected CreateWordField, CreateDwordField, CreateQwordField, and
17938possibly other fields that use the "AccessAny" keyword.
17939
17940Fixed a problem introduced in the 11_02_01 release where indirect
17941stores through method arguments did not operate correctly.
17942
179432) Linux:
17944
17945Implemented boot-time ACPI table parsing support
17946(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
17947facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
17948legacy BIOS interfaces (e.g. MPS) for the configuration of system
17949processors, memory, and interrupts during setup_arch().  Note that
17950this patch does not include the required architecture-specific
17951changes required to apply this information -- subsequent patches
17952will be posted for both IA32 and IA64 to achieve this.
17953
17954Added low-level sleep support for IA32 platforms, courtesy of Pat
17955Mochel. This allows IA32 systems to transition to/from various
17956sleeping states (e.g. S1, S3), although the lack of a centralized
17957driver model and power-manageable drivers will prevent its
17958(successful) use on most systems.
17959
17960Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
17961submenu, unified IA32 and IA64 options, added new "Boot using ACPI
17962tables" option, etc.
17963
17964Increased the default timeout for the EC driver from 1ms to 10ms
17965(1000 cycles of 10us) to try to address AE_TIME errors during EC
17966transactions.
17967
17968 ----------------------------------------
17969Summary of changes for this label: 11_02_01
17970
179711) ACPI CA Core Subsystem:
17972
17973ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
17974(QWordAcc keyword). All ACPI 2.0 64-bit support is now
17975implemented.
17976
17977OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
17978changes to support ACPI 2.0 Qword field access.  Read/Write
17979PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
17980accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
17981the value parameter for the address space handler interface is now
17982an ACPI_INTEGER.  OSL implementations of these interfaces must now
17983handle the case where the Width parameter is 64.
17984
17985Index Fields: Fixed a problem where unaligned bit assembly and
17986disassembly for IndexFields was not supported correctly.
17987
17988Index and Bank Fields:  Nested Index and Bank Fields are now
17989supported. During field access, a check is performed to ensure
17990that the value written to an Index or Bank register is not out of
17991the range of the register.  The Index (or Bank) register is
17992written before each access to the field data. Future support will
17993include allowing individual IndexFields to be wider than the
17994DataRegister width.
17995
17996Fields: Fixed a problem where the AML interpreter was incorrectly
17997attempting to write beyond the end of a Field/OpRegion.  This was
17998a boundary case that occurred when a DWORD field was written to a
17999BYTE access OpRegion, forcing multiple writes and causing the
18000interpreter to write one datum too many.
18001
18002Fields: Fixed a problem with Field/OpRegion access where the
18003starting bit address of a field was incorrectly calculated if the
18004current access type was wider than a byte (WordAcc, DwordAcc, or
18005QwordAcc).
18006
18007Fields: Fixed a problem where forward references to individual
18008FieldUnits (individual Field names within a Field definition) were
18009not resolved during the AML table load.
18010
18011Fields: Fixed a problem where forward references from a Field
18012definition to the parent Operation Region definition were not
18013resolved during the AML table load.
18014
18015Fields: Duplicate FieldUnit names within a scope are now detected
18016during AML table load.
18017
18018Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
18019returned an incorrect name for the root node.
18020
18021Code and Data Size: Code and Data optimizations have permitted new
18022feature development with an actual reduction in the library size.
18023Current core subsystem library sizes are shown below.  These are
18024the code and data sizes for the acpica.lib produced by the
18025Microsoft Visual C++ 6.0 compiler, and these values do not include
18026any ACPI driver or OSPM code.  The debug version of the code
18027includes the debug output trace mechanism and has a larger code
18028and data size.  Note that these values will vary depending on the
18029efficiency of the compiler and the compiler options used during
18030generation.
18031
18032  Previous Release (10_18_01):
18033     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
18034     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
18035
18036  Current Release:
18037     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
18038     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
18039
18040 2) Linux:
18041
18042Improved /proc processor output (Pavel Machek) Re-added
18043MODULE_LICENSE("GPL") to all modules.
18044
18045 3) ASL Compiler version X2030:
18046
18047Duplicate FieldUnit names within a scope are now detected and
18048flagged as errors.
18049
18050 4) Documentation:
18051
18052Programmer Reference updated to reflect OSL and address space
18053handler interface changes described above.
18054
18055----------------------------------------
18056Summary of changes for this label: 10_18_01
18057
18058ACPI CA Core Subsystem:
18059
18060Fixed a problem with the internal object reference count mechanism
18061that occasionally caused premature object deletion. This resolves
18062all of the outstanding problem reports where an object is deleted
18063in the middle of an interpreter evaluation.  Although this problem
18064only showed up in rather obscure cases, the solution to the
18065problem involved an adjustment of all reference counts involving
18066objects attached to namespace nodes.
18067
18068Fixed a problem with Field support in the interpreter where
18069writing to an aligned field whose length is an exact multiple (2
18070or greater) of the field access granularity would cause an attempt
18071to write beyond the end of the field.
18072
18073The top level AML opcode execution functions within the
18074interpreter have been renamed with a more meaningful and
18075consistent naming convention.  The modules exmonad.c and
18076exdyadic.c were eliminated.  New modules are exoparg1.c,
18077exoparg2.c, exoparg3.c, and exoparg6.c.
18078
18079Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
18080
18081Fixed a problem where the AML debugger was causing some internal
18082objects to not be deleted during subsystem termination.
18083
18084Fixed a problem with the external AcpiEvaluateObject interface
18085where the subsystem would fault if the named object to be
18086evaluated referred to a constant such as Zero, Ones, etc.
18087
18088Fixed a problem with IndexFields and BankFields where the
18089subsystem would fault if the index, data, or bank registers were
18090not defined in the same scope as the field itself.
18091
18092Added printf format string checking for compilers that support
18093this feature.  Corrected more than 50 instances of issues with
18094format specifiers within invocations of ACPI_DEBUG_PRINT
18095throughout the core subsystem code.
18096
18097The ASL "Revision" operator now returns the ACPI support level
18098implemented in the core - the value "2" since the ACPI 2.0 support
18099is more than 50% implemented.
18100
18101Enhanced the output of the AML debugger "dump namespace" command
18102to output in a more human-readable form.
18103
18104Current core subsystem library code sizes are shown below.  These
18105
18106are the code and data sizes for the acpica.lib produced by the
18107Microsoft Visual C++ 6.0 compiler, and these values do not include
18108any ACPI driver or OSPM code.  The debug version of the code
18109includes the full debug trace mechanism -- leading to a much
18110
18111larger code and data size.  Note that these values will vary
18112depending on the efficiency of the compiler and the compiler
18113options used during generation.
18114
18115     Previous Label (09_20_01):
18116     Non-Debug Version:    65K Code,     5K Data,     70K Total
18117     Debug Version:       138K Code,    58K Data,    196K Total
18118
18119     This Label:
18120
18121     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
18122     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
18123
18124Linux:
18125
18126Implemented a "Bad BIOS Blacklist" to track machines that have
18127known ASL/AML problems.
18128
18129Enhanced the /proc interface for the thermal zone driver and added
18130support for _HOT (the critical suspend trip point).  The 'info'
18131file now includes threshold/policy information, and allows setting
18132of _SCP (cooling preference) and _TZP (polling frequency) values
18133to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
18134frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
18135preference to the passive/quiet mode (if supported by the ASL).
18136
18137Implemented a workaround for a gcc bug that resuted in an OOPs
18138when loading the control method battery driver.
18139
18140 ----------------------------------------
18141Summary of changes for this label: 09_20_01
18142
18143 ACPI CA Core Subsystem:
18144
18145The AcpiEnableEvent and AcpiDisableEvent interfaces have been
18146modified to allow individual GPE levels to be flagged as wake-
18147enabled (i.e., these GPEs are to remain enabled when the platform
18148sleeps.)
18149
18150The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
18151support wake-enabled GPEs.  This means that upon entering the
18152sleep state, all GPEs that are not wake-enabled are disabled.
18153When leaving the sleep state, these GPEs are re-enabled.
18154
18155A local double-precision divide/modulo module has been added to
18156enhance portability to OS kernels where a 64-bit math library is
18157not available.  The new module is "utmath.c".
18158
18159Several optimizations have been made to reduce the use of CPU
18160stack.  Originally over 2K, the maximum stack usage is now below
181612K at 1860  bytes (1.82k)
18162
18163Fixed a problem with the AcpiGetFirmwareTable interface where the
18164root table pointer was not mapped into a logical address properly.
18165
18166Fixed a problem where a NULL pointer was being dereferenced in the
18167interpreter code for the ASL Notify operator.
18168
18169Fixed a problem where the use of the ASL Revision operator
18170returned an error. This operator now returns the current version
18171of the ACPI CA core subsystem.
18172
18173Fixed a problem where objects passed as control method parameters
18174to AcpiEvaluateObject were always deleted at method termination.
18175However, these objects may end up being stored into the namespace
18176by the called method.  The object reference count mechanism was
18177applied to these objects instead of a force delete.
18178
18179Fixed a problem where static strings or buffers (contained in the
18180AML code) that are declared as package elements within the ASL
18181code could cause a fault because the interpreter would attempt to
18182delete them.  These objects are now marked with the "static
18183object" flag to prevent any attempt to delete them.
18184
18185Implemented an interpreter optimization to use operands directly
18186from the state object instead of extracting the operands to local
18187variables.  This reduces stack use and code size, and improves
18188performance.
18189
18190The module exxface.c was eliminated as it was an unnecessary extra
18191layer of code.
18192
18193Current core subsystem library code sizes are shown below.  These
18194are the code and data sizes for the acpica.lib produced by the
18195Microsoft Visual C++ 6.0 compiler, and these values do not include
18196any ACPI driver or OSPM code.  The debug version of the code
18197includes the full debug trace mechanism -- leading to a much
18198larger code and data size.  Note that these values will vary
18199depending on the efficiency of the compiler and the compiler
18200options used during generation.
18201
18202  Non-Debug Version:  65K Code,   5K Data,   70K Total
18203(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
18204Total  (Previously 195K)
18205
18206Linux:
18207
18208Support for ACPI 2.0 64-bit integers has been added.   All ACPI
18209Integer objects are now 64 bits wide
18210
18211All Acpi data types and structures are now in lower case.  Only
18212Acpi macros are upper case for differentiation.
18213
18214 Documentation:
18215
18216Changes to the external interfaces as described above.
18217
18218 ----------------------------------------
18219Summary of changes for this label: 08_31_01
18220
18221 ACPI CA Core Subsystem:
18222
18223A bug with interpreter implementation of the ASL Divide operator
18224was found and fixed.  The implicit function return value (not the
18225explicit store operands) was returning the remainder instead of
18226the quotient.  This was a longstanding bug and it fixes several
18227known outstanding issues on various platforms.
18228
18229The ACPI_DEBUG_PRINT and function trace entry/exit macros have
18230been further optimized for size.  There are 700 invocations of the
18231DEBUG_PRINT macro alone, so each optimization reduces the size of
18232the debug version of the subsystem significantly.
18233
18234A stack trace mechanism has been implemented.  The maximum stack
18235usage is about 2K on 32-bit platforms.  The debugger command "stat
18236stack" will display the current maximum stack usage.
18237
18238All public symbols and global variables within the subsystem are
18239now prefixed with the string "Acpi".  This keeps all of the
18240symbols grouped together in a kernel map, and avoids conflicts
18241with other kernel subsystems.
18242
18243Most of the internal fixed lookup tables have been moved into the
18244code segment via the const operator.
18245
18246Several enhancements have been made to the interpreter to both
18247reduce the code size and improve performance.
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 which contains over 700
18254invocations of the DEBUG_PRINT macro, 500 function entry macro
18255invocations, and over 900 function exit macro invocations --
18256leading to a much larger code and data size.  Note that these
18257values will vary depending on the efficiency of the compiler and
18258the compiler options used during generation.
18259
18260        Non-Debug Version:  64K Code,   5K Data,   69K Total
18261Debug Version:     137K Code,  58K Data,  195K Total
18262
18263 Linux:
18264
18265Implemented wbinvd() macro, pending a kernel-wide definition.
18266
18267Fixed /proc/acpi/event to handle poll() and short reads.
18268
18269 ASL Compiler, version X2026:
18270
18271Fixed a problem introduced in the previous label where the AML
18272
18273code emitted for package objects produced packages with zero
18274length.
18275
18276 ----------------------------------------
18277Summary of changes for this label: 08_16_01
18278
18279ACPI CA Core Subsystem:
18280
18281The following ACPI 2.0 ASL operators have been implemented in the
18282AML interpreter (These are already supported by the Intel ASL
18283compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
18284ToBuffer.  Support for 64-bit AML constants is implemented in the
18285AML parser, debugger, and disassembler.
18286
18287The internal memory tracking mechanism (leak detection code) has
18288been upgraded to reduce the memory overhead (a separate tracking
18289block is no longer allocated for each memory allocation), and now
18290supports all of the internal object caches.
18291
18292The data structures and code for the internal object caches have
18293been coelesced and optimized so that there is a single cache and
18294memory list data structure and a single group of functions that
18295implement generic cache management.  This has reduced the code
18296size in both the debug and release versions of the subsystem.
18297
18298The DEBUG_PRINT macro(s) have been optimized for size and replaced
18299by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
18300different, because it generates a single call to an internal
18301function.  This results in a savings of about 90 bytes per
18302invocation, resulting in an overall code and data savings of about
1830316% in the debug version of the subsystem.
18304
18305 Linux:
18306
18307Fixed C3 disk corruption problems and re-enabled C3 on supporting
18308machines.
18309
18310Integrated low-level sleep code by Patrick Mochel.
18311
18312Further tweaked source code Linuxization.
18313
18314Other minor fixes.
18315
18316 ASL Compiler:
18317
18318Support for ACPI 2.0 variable length packages is fixed/completed.
18319
18320Fixed a problem where the optional length parameter for the ACPI
183212.0 ToString operator.
18322
18323Fixed multiple extraneous error messages when a syntax error is
18324detected within the declaration line of a control method.
18325
18326 ----------------------------------------
18327Summary of changes for this label: 07_17_01
18328
18329ACPI CA Core Subsystem:
18330
18331Added a new interface named AcpiGetFirmwareTable to obtain any
18332ACPI table via the ACPI signature.  The interface can be called at
18333any time during kernel initialization, even before the kernel
18334virtual memory manager is initialized and paging is enabled.  This
18335allows kernel subsystems to obtain ACPI tables very early, even
18336before the ACPI CA subsystem is initialized.
18337
18338Fixed a problem where Fields defined with the AnyAcc attribute
18339could be resolved to the incorrect address under the following
18340conditions: 1) the field width is larger than 8 bits and 2) the
18341parent operation region is not defined on a DWORD boundary.
18342
18343Fixed a problem where the interpreter is not being locked during
18344namespace initialization (during execution of the _INI control
18345methods), causing an error when an attempt is made to release it
18346later.
18347
18348ACPI 2.0 support in the AML Interpreter has begun and will be
18349ongoing throughout the rest of this year.  In this label, The Mod
18350operator is implemented.
18351
18352Added a new data type to contain full PCI addresses named
18353ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
18354and Function values.
18355
18356 Linux:
18357
18358Enhanced the Linux version of the source code to change most
18359capitalized ACPI type names to lowercase. For example, all
18360instances of ACPI_STATUS are changed to acpi_status.  This will
18361result in a large diff, but the change is strictly cosmetic and
18362aligns the CA code closer to the Linux coding standard.
18363
18364OSL Interfaces:
18365
18366The interfaces to the PCI configuration space have been changed to
18367add the PCI Segment number and to split the single 32-bit combined
18368DeviceFunction field into two 16-bit fields.  This was
18369accomplished by moving the four values that define an address in
18370PCI configuration space (segment, bus, device, and function) to
18371the new ACPI_PCI_ID structure.
18372
18373The changes to the PCI configuration space interfaces led to a
18374reexamination of the complete set of address space access
18375interfaces for PCI, I/O, and Memory.  The previously existing 18
18376interfaces have proven difficult to maintain (any small change
18377must be propagated across at least 6 interfaces) and do not easily
18378allow for future expansion to 64 bits if necessary.  Also, on some
18379systems, it would not be appropriate to demultiplex the access
18380width (8, 16, 32,or 64) before calling the OSL if the
18381corresponding native OS interfaces contain a similar access width
18382parameter.  For these reasons, the 18 address space interfaces
18383have been replaced by these 6 new ones:
18384
18385AcpiOsReadPciConfiguration
18386AcpiOsWritePciConfiguration
18387AcpiOsReadMemory
18388AcpiOsWriteMemory
18389AcpiOsReadPort
18390AcpiOsWritePort
18391
18392Added a new interface named AcpiOsGetRootPointer to allow the OSL
18393to perform the platform and/or OS-specific actions necessary to
18394obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
18395interface will simply call down to the CA core to perform the low-
18396memory search for the table.  On IA-64, the RSDP is obtained from
18397EFI.  Migrating this interface to the OSL allows the CA core to
18398
18399remain OS and platform independent.
18400
18401Added a new interface named AcpiOsSignal to provide a generic
18402"function code and pointer" interface for various miscellaneous
18403signals and notifications that must be made to the host OS.   The
18404first such signals are intended to support the ASL Fatal and
18405Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
18406interface has been obsoleted.
18407
18408The definition of the AcpiFormatException interface has been
18409changed to simplify its use.  The caller no longer must supply a
18410buffer to the call; A pointer to a const string is now returned
18411directly.  This allows the call to be easily used in printf
18412statements, etc. since the caller does not have to manage a local
18413buffer.
18414
18415
18416 ASL Compiler, Version X2025:
18417
18418The ACPI 2.0 Switch/Case/Default operators have been implemented
18419and are fully functional.  They will work with all ACPI 1.0
18420interpreters, since the operators are simply translated to If/Else
18421pairs.
18422
18423The ACPI 2.0 ElseIf operator is implemented and will also work
18424with 1.0 interpreters, for the same reason.
18425
18426Implemented support for ACPI 2.0 variable-length packages.  These
18427packages have a separate opcode, and their size is determined by
18428the interpreter at run-time.
18429
18430Documentation The ACPI CA Programmer Reference has been updated to
18431reflect the new interfaces and changes to existing interfaces.
18432
18433 ------------------------------------------
18434Summary of changes for this label: 06_15_01
18435
18436 ACPI CA Core Subsystem:
18437
18438Fixed a problem where a DWORD-accessed field within a Buffer
18439object would get its byte address inadvertently rounded down to
18440the nearest DWORD.  Buffers are always Byte-accessible.
18441
18442 ASL Compiler, version X2024:
18443
18444Fixed a problem where the Switch() operator would either fault or
18445hang the compiler.  Note however, that the AML code for this ACPI
184462.0 operator is not yet implemented.
18447
18448Compiler uses the new AcpiOsGetTimer interface to obtain compile
18449timings.
18450
18451Implementation of the CreateField operator automatically converts
18452a reference to a named field within a resource descriptor from a
18453byte offset to a bit offset if required.
18454
18455Added some missing named fields from the resource descriptor
18456support. These are the names that are automatically created by the
18457compiler to reference fields within a descriptor.  They are only
18458valid at compile time and are not passed through to the AML
18459interpreter.
18460
18461Resource descriptor named fields are now typed as Integers and
18462subject to compile-time typechecking when used in expressions.
18463
18464 ------------------------------------------
18465Summary of changes for this label: 05_18_01
18466
18467 ACPI CA Core Subsystem:
18468
18469Fixed a couple of problems in the Field support code where bits
18470from adjacent fields could be returned along with the proper field
18471bits. Restructured the field support code to improve performance,
18472readability and maintainability.
18473
18474New DEBUG_PRINTP macro automatically inserts the procedure name
18475into the output, saving hundreds of copies of procedure name
18476strings within the source, shrinking the memory footprint of the
18477debug version of the core subsystem.
18478
18479 Source Code Structure:
18480
18481The source code directory tree was restructured to reflect the
18482current organization of the component architecture.  Some files
18483and directories have been moved and/or renamed.
18484
18485 Linux:
18486
18487Fixed leaking kacpidpc processes.
18488
18489Fixed queueing event data even when /proc/acpi/event is not
18490opened.
18491
18492 ASL Compiler, version X2020:
18493
18494Memory allocation performance enhancement - over 24X compile time
18495improvement on large ASL files.  Parse nodes and namestring
18496buffers are now allocated from a large internal compiler buffer.
18497
18498The temporary .SRC file is deleted unless the "-s" option is
18499specified
18500
18501The "-d" debug output option now sends all output to the .DBG file
18502instead of the console.
18503
18504"External" second parameter is now optional
18505
18506"ElseIf" syntax now properly allows the predicate
18507
18508Last operand to "Load" now recognized as a Target operand
18509
18510Debug object can now be used anywhere as a normal object.
18511
18512ResourceTemplate now returns an object of type BUFFER
18513
18514EISAID now returns an object of type INTEGER
18515
18516"Index" now works with a STRING operand
18517
18518"LoadTable" now accepts optional parameters
18519
18520"ToString" length parameter is now optional
18521
18522"Interrupt (ResourceType," parse error fixed.
18523
18524"Register" with a user-defined region space parse error fixed
18525
18526Escaped backslash at the end of a string ("\\") scan/parse error
18527fixed
18528
18529"Revision" is now an object of type INTEGER.
18530
18531
18532
18533------------------------------------------
18534Summary of changes for this label: 05_02_01
18535
18536Linux:
18537
18538/proc/acpi/event now blocks properly.
18539
18540Removed /proc/sys/acpi. You can still dump your DSDT from
18541/proc/acpi/dsdt.
18542
18543 ACPI CA Core Subsystem:
18544
18545Fixed a problem introduced in the previous label where some of the
18546"small" resource descriptor types were not recognized.
18547
18548Improved error messages for the case where an ASL Field is outside
18549the range of the parent operation region.
18550
18551 ASL Compiler, version X2018:
18552
18553
18554Added error detection for ASL Fields that extend beyond the length
18555of the parent operation region (only if the length of the region
18556is known at compile time.)  This includes fields that have a
18557minimum access width that is smaller than the parent region, and
18558individual field units that are partially or entirely beyond the
18559extent of the parent.
18560
18561
18562
18563------------------------------------------
18564Summary of changes for this label: 04_27_01
18565
18566 ACPI CA Core Subsystem:
18567
18568Fixed a problem where the namespace mutex could be released at the
18569wrong time during execution of AcpiRemoveAddressSpaceHandler.
18570
18571Added optional thread ID output for debug traces, to simplify
18572debugging of multiple threads.  Added context switch notification
18573when the debug code realizes that a different thread is now
18574executing ACPI code.
18575
18576Some additional external data types have been prefixed with the
18577string "ACPI_" for consistency.  This may effect existing code.
18578The data types affected are the external callback typedefs - e.g.,
18579
18580WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
18581
18582 Linux:
18583
18584Fixed an issue with the OSL semaphore implementation where a
18585thread was waking up with an error from receiving a SIGCHLD
18586signal.
18587
18588Linux version of ACPI CA now uses the system C library for string
18589manipulation routines instead of a local implementation.
18590
18591Cleaned up comments and removed TBDs.
18592
18593 ASL Compiler, version X2017:
18594
18595Enhanced error detection and reporting for all file I/O
18596operations.
18597
18598 Documentation:
18599
18600Programmer Reference updated to version 1.06.
18601
18602
18603
18604------------------------------------------
18605Summary of changes for this label: 04_13_01
18606
18607 ACPI CA Core Subsystem:
18608
18609Restructured support for BufferFields and RegionFields.
18610BankFields support is now fully operational.  All known 32-bit
18611limitations on field sizes have been removed.  Both BufferFields
18612and (Operation) RegionFields are now supported by the same field
18613management code.
18614
18615Resource support now supports QWORD address and IO resources. The
1861616/32/64 bit address structures and the Extended IRQ structure
18617have been changed to properly handle Source Resource strings.
18618
18619A ThreadId of -1 is now used to indicate a "mutex not acquired"
18620condition internally and must never be returned by AcpiOsThreadId.
18621This reserved value was changed from 0 since Unix systems allow a
18622thread ID of 0.
18623
18624Linux:
18625
18626Driver code reorganized to enhance portability
18627
18628Added a kernel configuration option to control ACPI_DEBUG
18629
18630Fixed the EC driver to honor _GLK.
18631
18632ASL Compiler, version X2016:
18633
18634Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
18635address space was set to 0, not 0x7f as it should be.
18636
18637 ------------------------------------------
18638Summary of changes for this label: 03_13_01
18639
18640 ACPI CA Core Subsystem:
18641
18642During ACPI initialization, the _SB_._INI method is now run if
18643present.
18644
18645Notify handler fix - notifies are deferred until the parent method
18646completes execution.  This fixes the "mutex already acquired"
18647issue seen occasionally.
18648
18649Part of the "implicit conversion" rules in ACPI 2.0 have been
18650found to cause compatibility problems with existing ASL/AML.  The
18651convert "result-to-target-type" implementation has been removed
18652for stores to method Args and Locals.  Source operand conversion
18653is still fully implemented.  Possible changes to ACPI 2.0
18654specification pending.
18655
18656Fix to AcpiRsCalculatePciRoutingTableLength to return correct
18657length.
18658
18659Fix for compiler warnings for 64-bit compiles.
18660
18661 Linux:
18662
18663/proc output aligned for easier parsing.
18664
18665Release-version compile problem fixed.
18666
18667New kernel configuration options documented in Configure.help.
18668
18669IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
18670context" message.
18671
18672 OSPM:
18673
18674Power resource driver integrated with bus manager.
18675
18676Fixed kernel fault during active cooling for thermal zones.
18677
18678Source Code:
18679
18680The source code tree has been restructured.
18681
18682
18683
18684------------------------------------------
18685Summary of changes for this label: 03_02_01
18686
18687 Linux OS Services Layer (OSL):
18688
18689Major revision of all Linux-specific code.
18690
18691Modularized all ACPI-specific drivers.
18692
18693Added new thermal zone and power resource drivers.
18694
18695Revamped /proc interface (new functionality is under /proc/acpi).
18696
18697New kernel configuration options.
18698
18699 Linux known issues:
18700
18701New kernel configuration options not documented in Configure.help
18702yet.
18703
18704
18705Module dependencies not currently implemented. If used, they
18706should be loaded in this order: busmgr, power, ec, system,
18707processor, battery, ac_adapter, button, thermal.
18708
18709Modules will not load if CONFIG_MODVERSION is set.
18710
18711IBM 600E - entering S5 may reboot instead of shutting down.
18712
18713IBM 600E - Sleep button may generate "Invalid <NULL> context"
18714message.
18715
18716Some systems may fail with "execution mutex already acquired"
18717message.
18718
18719 ACPI CA Core Subsystem:
18720
18721Added a new OSL Interface, AcpiOsGetThreadId.  This was required
18722for the  deadlock detection code. Defined to return a non-zero, 32-
18723bit thread ID for the currently executing thread.  May be a non-
18724zero constant integer on single-thread systems.
18725
18726Implemented deadlock detection for internal subsystem mutexes.  We
18727may add conditional compilation for this code (debug only) later.
18728
18729ASL/AML Mutex object semantics are now fully supported.  This
18730includes multiple acquires/releases by owner and support for the
18731
18732Mutex SyncLevel parameter.
18733
18734A new "Force Release" mechanism automatically frees all ASL
18735Mutexes that have been acquired but not released when a thread
18736exits the interpreter.  This forces conformance to the ACPI spec
18737("All mutexes must be released when an invocation exits") and
18738prevents deadlocked ASL threads.  This mechanism can be expanded
18739(later) to monitor other resource acquisitions if OEM ASL code
18740continues to misbehave (which it will).
18741
18742Several new ACPI exception codes have been added for the Mutex
18743support.
18744
18745Recursive method calls are now allowed and supported (the ACPI
18746spec does in fact allow recursive method calls.)  The number of
18747recursive calls is subject to the restrictions imposed by the
18748SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
18749parameter.
18750
18751Implemented support for the SyncLevel parameter for control
18752methods (ACPI 2.0 feature)
18753
18754Fixed a deadlock problem when multiple threads attempted to use
18755the interpreter.
18756
18757Fixed a problem where the string length of a String package
18758element was not always set in a package returned from
18759AcpiEvaluateObject.
18760
18761Fixed a problem where the length of a String package element was
18762not always included in the length of the overall package returned
18763from AcpiEvaluateObject.
18764
18765Added external interfaces (Acpi*) to the ACPI debug memory
18766manager.  This manager keeps a list of all outstanding
18767allocations, and can therefore detect memory leaks and attempts to
18768free memory blocks more than once. Useful for code such as the
18769power manager, etc.  May not be appropriate for device drivers.
18770Performance with the debug code enabled is slow.
18771
18772The ACPI Global Lock is now an optional hardware element.
18773
18774 ASL Compiler Version X2015:
18775
18776Integrated changes to allow the compiler to be generated on
18777multiple platforms.
18778
18779Linux makefile added to generate the compiler on Linux
18780
18781 Source Code:
18782
18783All platform-specific headers have been moved to their own
18784subdirectory, Include/Platform.
18785
18786New source file added, Interpreter/ammutex.c
18787
18788New header file, Include/acstruct.h
18789
18790 Documentation:
18791
18792The programmer reference has been updated for the following new
18793interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
18794
18795 ------------------------------------------
18796Summary of changes for this label: 02_08_01
18797
18798Core ACPI CA Subsystem: Fixed a problem where an error was
18799incorrectly returned if the return resource buffer was larger than
18800the actual data (in the resource interfaces).
18801
18802References to named objects within packages are resolved to the
18803
18804full pathname string before packages are returned directly (via
18805the AcpiEvaluateObject interface) or indirectly via the resource
18806interfaces.
18807
18808Linux OS Services Layer (OSL):
18809
18810Improved /proc battery interface.
18811
18812
18813Added C-state debugging output and other miscellaneous fixes.
18814
18815ASL Compiler Version X2014:
18816
18817All defined method arguments can now be used as local variables,
18818including the ones that are not actually passed in as parameters.
18819The compiler tracks initialization of the arguments and issues an
18820exception if they are used without prior assignment (just like
18821locals).
18822
18823The -o option now specifies a filename prefix that is used for all
18824output files, including the AML output file.  Otherwise, the
18825default behavior is as follows:  1) the AML goes to the file
18826specified in the DSDT.  2) all other output files use the input
18827source filename as the base.
18828
18829 ------------------------------------------
18830Summary of changes for this label: 01_25_01
18831
18832Core ACPI CA Subsystem: Restructured the implementation of object
18833store support within the  interpreter.  This includes support for
18834the Store operator as well  as any ASL operators that include a
18835target operand.
18836
18837Partially implemented support for Implicit Result-to-Target
18838conversion. This is when a result object is converted on the fly
18839to the type of  an existing target object.  Completion of this
18840support is pending  further analysis of the ACPI specification
18841concerning this matter.
18842
18843CPU-specific code has been removed from the subsystem (hardware
18844directory).
18845
18846New Power Management Timer functions added
18847
18848Linux OS Services Layer (OSL): Moved system state transition code
18849to the core, fixed it, and modified  Linux OSL accordingly.
18850
18851Fixed C2 and C3 latency calculations.
18852
18853
18854We no longer use the compilation date for the version message on
18855initialization, but retrieve the version from AcpiGetSystemInfo().
18856
18857Incorporated for fix Sony VAIO machines.
18858
18859Documentation:  The Programmer Reference has been updated and
18860reformatted.
18861
18862
18863ASL Compiler:  Version X2013: Fixed a problem where the line
18864numbering and error reporting could get out  of sync in the
18865presence of multiple include files.
18866
18867 ------------------------------------------
18868Summary of changes for this label: 01_15_01
18869
18870Core ACPI CA Subsystem:
18871
18872Implemented support for type conversions in the execution of the
18873ASL  Concatenate operator (The second operand is converted to
18874match the type  of the first operand before concatenation.)
18875
18876Support for implicit source operand conversion is partially
18877implemented.   The ASL source operand types Integer, Buffer, and
18878String are freely  interchangeable for most ASL operators and are
18879converted by the interpreter  on the fly as required.  Implicit
18880Target operand conversion (where the  result is converted to the
18881target type before storing) is not yet implemented.
18882
18883Support for 32-bit and 64-bit BCD integers is implemented.
18884
18885Problem fixed where a field read on an aligned field could cause a
18886read  past the end of the field.
18887
18888New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
18889does not return a value, but the caller expects one.  (The ASL
18890compiler flags this as a warning.)
18891
18892ASL Compiler:
18893
18894Version X2011:
188951. Static typechecking of all operands is implemented. This
18896prevents the use of invalid objects (such as using a Package where
18897an Integer is required) at compile time instead of at interpreter
18898run-time.
188992. The ASL source line is printed with ALL errors and warnings.
189003. Bug fix for source EOF without final linefeed.
189014. Debug option is split into a parse trace and a namespace trace.
189025. Namespace output option (-n) includes initial values for
18903integers and strings.
189046. Parse-only option added for quick syntax checking.
189057. Compiler checks for duplicate ACPI name declarations
18906
18907Version X2012:
189081. Relaxed typechecking to allow interchangeability between
18909strings, integers, and buffers.  These types are now converted by
18910the interpreter at runtime.
189112. Compiler reports time taken by each internal subsystem in the
18912debug         output file.
18913
18914
18915 ------------------------------------------
18916Summary of changes for this label: 12_14_00
18917
18918ASL Compiler:
18919
18920This is the first official release of the compiler. Since the
18921compiler requires elements of the Core Subsystem, this label
18922synchronizes everything.
18923
18924------------------------------------------
18925Summary of changes for this label: 12_08_00
18926
18927
18928Fixed a problem where named references within the ASL definition
18929of both OperationRegions and CreateXXXFields did not work
18930properly.  The symptom was an AE_AML_OPERAND_TYPE during
18931initialization of the region/field. This is similar (but not
18932related internally) to the problem that was fixed in the last
18933label.
18934
18935Implemented both 32-bit and 64-bit support for the BCD ASL
18936functions ToBCD and FromBCD.
18937
18938Updated all legal headers to include "2000" in the copyright
18939years.
18940
18941 ------------------------------------------
18942Summary of changes for this label: 12_01_00
18943
18944Fixed a problem where method invocations within the ASL definition
18945of both OperationRegions and CreateXXXFields did not work
18946properly.  The symptom was an AE_AML_OPERAND_TYPE during
18947initialization of the region/field:
18948
18949  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
18950[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
18951(0x3005)
18952
18953Fixed a problem where operators with more than one nested
18954subexpression would fail.  The symptoms were varied, by mostly
18955AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
18956problem that has gone unnoticed until now.
18957
18958  Subtract (Add (1,2), Multiply (3,4))
18959
18960Fixed a problem where AcpiGetHandle didn't quite get fixed in the
18961previous build (The prefix part of a relative path was handled
18962incorrectly).
18963
18964Fixed a problem where Operation Region initialization failed if
18965the operation region name was a "namepath" instead of a simple
18966"nameseg". Symptom was an AE_NO_OPERAND error.
18967
18968Fixed a problem where an assignment to a local variable via the
18969indirect RefOf mechanism only worked for the first such
18970assignment.  Subsequent assignments were ignored.
18971
18972 ------------------------------------------
18973Summary of changes for this label: 11_15_00
18974
18975ACPI 2.0 table support with backwards support for ACPI 1.0 and the
189760.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
18977the AML  interpreter does NOT have support for the new 2.0 ASL
18978grammar terms at this time.
18979
18980All ACPI hardware access is via the GAS structures in the ACPI 2.0
18981FADT.
18982
18983All physical memory addresses across all platforms are now 64 bits
18984wide. Logical address width remains dependent on the platform
18985(i.e., "void *").
18986
18987AcpiOsMapMemory interface changed to a 64-bit physical address.
18988
18989The AML interpreter integer size is now 64 bits, as per the ACPI
189902.0 specification.
18991
18992For backwards compatibility with ACPI 1.0, ACPI tables with a
18993revision number less than 2 use 32-bit integers only.
18994
18995Fixed a problem where the evaluation of OpRegion operands did not
18996always resolve them to numbers properly.
18997
18998------------------------------------------
18999Summary of changes for this label: 10_20_00
19000
19001Fix for CBN_._STA issue.  This fix will allow correct access to
19002CBN_ OpRegions when the _STA returns 0x8.
19003
19004Support to convert ACPI constants (Ones, Zeros, One) to actual
19005values before a package object is returned
19006
19007Fix for method call as predicate to if/while construct causing
19008incorrect if/while behavior
19009
19010Fix for Else block package lengths sometimes calculated wrong (if
19011block > 63 bytes)
19012
19013Fix for Processor object length field, was always zero
19014
19015Table load abort if FACP sanity check fails
19016
19017Fix for problem with Scope(name) if name already exists
19018
19019Warning emitted if a named object referenced cannot be found
19020(resolved) during method execution.
19021
19022
19023
19024
19025
19026------------------------------------------
19027Summary of changes for this label: 9_29_00
19028
19029New table initialization interfaces: AcpiInitializeSubsystem no
19030longer has any parameters AcpiFindRootPointer - Find the RSDP (if
19031necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
19032>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
19033AcpiLoadTables
19034
19035Note: These interface changes require changes to all existing OSDs
19036
19037The PCI_Config default address space handler is always installed
19038at the root namespace object.
19039
19040-------------------------------------------
19041Summary of changes for this label: 09_15_00
19042
19043The new initialization architecture is implemented.  New
19044interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
19045AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
19046
19047(Namespace is automatically loaded when a table is loaded)
19048
19049The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1905052 bytes to 32 bytes.  There is usually one of these for every
19051namespace object, so the memory savings is significant.
19052
19053Implemented just-in-time evaluation of the CreateField operators.
19054
19055Bug fixes for IA-64 support have been integrated.
19056
19057Additional code review comments have been implemented
19058
19059The so-called "third pass parse" has been replaced by a final walk
19060through the namespace to initialize all operation regions (address
19061spaces) and fields that have not yet been initialized during the
19062execution of the various _INI and REG methods.
19063
19064New file - namespace/nsinit.c
19065
19066-------------------------------------------
19067Summary of changes for this label: 09_01_00
19068
19069Namespace manager data structures have been reworked to change the
19070primary  object from a table to a single object.  This has
19071resulted in dynamic memory  savings of 3X within the namespace and
190722X overall in the ACPI CA subsystem.
19073
19074Fixed problem where the call to AcpiEvFindPciRootBuses was
19075inadvertently left  commented out.
19076
19077Reduced the warning count when generating the source with the GCC
19078compiler.
19079
19080Revision numbers added to each module header showing the
19081SourceSafe version of the file.  Please refer to this version
19082number when giving us feedback or comments on individual modules.
19083
19084The main object types within the subsystem have been renamed to
19085clarify their  purpose:
19086
19087ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
19088ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
19089ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
19090
19091NOTE: no changes to the initialization sequence are included in
19092this label.
19093
19094-------------------------------------------
19095Summary of changes for this label: 08_23_00
19096
19097Fixed problem where TerminateControlMethod was being called
19098multiple times per  method
19099
19100Fixed debugger problem where single stepping caused a semaphore to
19101be  oversignalled
19102
19103Improved performance through additional parse object caching -
19104added  ACPI_EXTENDED_OP type
19105
19106-------------------------------------------
19107Summary of changes for this label: 08_10_00
19108
19109Parser/Interpreter integration:  Eliminated the creation of
19110complete parse trees  for ACPI tables and control methods.
19111Instead, parse subtrees are created and  then deleted as soon as
19112they are processed (Either entered into the namespace or  executed
19113by the interpreter).  This reduces the use of dynamic kernel
19114memory  significantly. (about 10X)
19115
19116Exception codes broken into classes and renumbered.  Be sure to
19117recompile all  code that includes acexcep.h.  Hopefully we won't
19118have to renumber the codes  again now that they are split into
19119classes (environment, programmer, AML code,  ACPI table, and
19120internal).
19121
19122Fixed some additional alignment issues in the Resource Manager
19123subcomponent
19124
19125Implemented semaphore tracking in the AcpiExec utility, and fixed
19126several places  where mutexes/semaphores were being unlocked
19127without a corresponding lock  operation.  There are no known
19128semaphore or mutex "leaks" at this time.
19129
19130Fixed the case where an ASL Return operator is used to return an
19131unnamed  package.
19132
19133-------------------------------------------
19134Summary of changes for this label: 07_28_00
19135
19136Fixed a problem with the way addresses were calculated in
19137AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
19138manifested itself when a Field was  created with WordAccess or
19139DwordAccess, but the field unit defined within the  Field was less
19140
19141than a Word or Dword.
19142
19143Fixed a problem in AmlDumpOperands() module's loop to pull
19144operands off of the  operand stack to display information. The
19145problem manifested itself as a TLB  error on 64-bit systems when
19146accessing an operand stack with two or more  operands.
19147
19148Fixed a problem with the PCI configuration space handlers where
19149context was  getting confused between accesses. This required a
19150change to the generic address  space handler and address space
19151setup definitions. Handlers now get both a  global handler context
19152(this is the one passed in by the user when executing
19153AcpiInstallAddressSpaceHandler() and a specific region context
19154that is unique to  each region (For example, the _ADR, _SEG and
19155_BBN values associated with a  specific region). The generic
19156function definitions have changed to the  following:
19157
19158typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
19159UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
19160*HandlerContext, // This used to be void *Context void
19161*RegionContext); // This is an additional parameter
19162
19163typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
19164RegionHandle, UINT32 Function, void *HandlerContext,  void
19165**RegionContext); // This used to be **ReturnContext
19166
19167-------------------------------------------
19168Summary of changes for this label: 07_21_00
19169
19170Major file consolidation and rename.  All files within the
19171interpreter have been  renamed as well as most header files.  This
19172was done to prevent collisions with  existing files in the host
19173OSs -- filenames such as "config.h" and "global.h"  seem to be
19174quite common.  The VC project files have been updated.  All
19175makefiles  will require modification.
19176
19177The parser/interpreter integration continues in Phase 5 with the
19178implementation  of a complete 2-pass parse (the AML is parsed
19179twice) for each table;  This  avoids the construction of a huge
19180parse tree and therefore reduces the amount of  dynamic memory
19181required by the subsystem.  Greater use of the parse object cache
19182means that performance is unaffected.
19183
19184Many comments from the two code reviews have been rolled in.
19185
19186The 64-bit alignment support is complete.
19187
19188-------------------------------------------
19189Summary of changes for this label: 06_30_00
19190
19191With a nod and a tip of the hat to the technology of yesteryear,
19192we've added  support in the source code for 80 column output
19193devices.  The code is now mostly  constrained to 80 columns or
19194less to support environments and editors that 1)  cannot display
19195or print more than 80 characters on a single line, and 2) cannot
19196disable line wrapping.
19197
19198A major restructuring of the namespace data structure has been
19199completed.  The  result is 1) cleaner and more
19200understandable/maintainable code, and 2) a  significant reduction
19201in the dynamic memory requirement for each named ACPI  object
19202(almost half).
19203
19204-------------------------------------------
19205Summary of changes for this label: 06_23_00
19206
19207Linux support has been added.  In order to obtain approval to get
19208the ACPI CA  subsystem into the Linux kernel, we've had to make
19209quite a few changes to the  base subsystem that will affect all
19210users (all the changes are generic and OS- independent).  The
19211effects of these global changes have been somewhat far  reaching.
19212Files have been merged and/or renamed and interfaces have been
19213renamed.   The major changes are described below.
19214
19215Osd* interfaces renamed to AcpiOs* to eliminate namespace
19216pollution/confusion  within our target kernels.  All OSD
19217interfaces must be modified to match the new  naming convention.
19218
19219Files merged across the subsystem.  A number of the smaller source
19220and header  files have been merged to reduce the file count and
19221increase the density of the  existing files.  There are too many
19222to list here.  In general, makefiles that  call out individual
19223files will require rebuilding.
19224
19225Interpreter files renamed.  All interpreter files now have the
19226prefix am*  instead of ie* and is*.
19227
19228Header files renamed:  The acapi.h file is now acpixf.h.  The
19229acpiosd.h file is  now acpiosxf.h.  We are removing references to
19230the acronym "API" since it is  somewhat windowsy. The new name is
19231"external interface" or xface or xf in the  filenames.j
19232
19233
19234All manifest constants have been forced to upper case (some were
19235mixed case.)   Also, the string "ACPI_" has been prepended to many
19236(not all) of the constants,  typedefs, and structs.
19237
19238The globals "DebugLevel" and "DebugLayer" have been renamed
19239"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
19240
19241All other globals within the subsystem are now prefixed with
19242"AcpiGbl_" Internal procedures within the subsystem are now
19243prefixed with "Acpi" (with only  a few exceptions).  The original
19244two-letter abbreviation for the subcomponent  remains after "Acpi"
19245- for example, CmCallocate became AcpiCmCallocate.
19246
19247Added a source code translation/conversion utility.  Used to
19248generate the Linux  source code, it can be modified to generate
19249other types of source as well. Can  also be used to cleanup
19250existing source by removing extraneous spaces and blank  lines.
19251Found in tools/acpisrc/*
19252
19253OsdUnMapMemory was renamed to OsdUnmapMemory and then
19254AcpiOsUnmapMemory.  (UnMap  became Unmap).
19255
19256A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
19257When set to  one, this indicates that the caller wants to use the
19258
19259semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
19260both types.  However, implementers of this  call may want to use
19261different OS primitives depending on the type of semaphore
19262requested.  For example, some operating systems provide separate
19263
19264"mutex" and  "semaphore" interfaces - where the mutex interface is
19265much faster because it  doesn't have all the overhead of a full
19266semaphore implementation.
19267
19268Fixed a deadlock problem where a method that accesses the PCI
19269address space can  block forever if it is the first access to the
19270space.
19271
19272-------------------------------------------
19273Summary of changes for this label: 06_02_00
19274
19275Support for environments that cannot handle unaligned data
19276accesses (e.g.  firmware and OS environments devoid of alignment
19277handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
19278been added (via configurable macros) in  these three areas: -
19279Transfer of data from the raw AML byte stream is done via byte
19280moves instead of    word/dword/qword moves. - External objects are
19281aligned within the user buffer, including package   elements (sub-
19282objects). - Conversion of name strings to UINT32 Acpi Names is now
19283done byte-wise.
19284
19285The Store operator was modified to mimic Microsoft's
19286implementation when storing  to a Buffer Field.
19287
19288Added a check of the BM_STS bit before entering C3.
19289
19290The methods subdirectory has been obsoleted and removed.  A new
19291file, cmeval.c  subsumes the functionality.
19292
19293A 16-bit (DOS) version of AcpiExec has been developed.  The
19294makefile is under  the acpiexec directory.
19295