xref: /dragonfly/sys/contrib/dev/acpica/changes.txt (revision 01bedb5a)
1----------------------------------------
2
3
417 July 2020. Summary of changes for version 20200717:
5
6This release is available at https://acpica.org/downloads
7
8
91) ACPICA kernel-resident subsystem:
10
11Do not increment OperationRegion reference counts for field units. Recent
12server firmware has revealed that this reference count can overflow on
13large servers that declare many field units (thousands) under the same
14OperationRegion. This occurs because each field unit declaration will add
15a reference count to the source OperationRegion. This release solves the
16reference count overflow for OperationRegion objects by preventing
17fieldUnits from incrementing their parent OperationRegion's reference
18count.
19
20Replaced one-element arrays with flexible-arrays, which were introduced
21in C99.
22
23Restored the readme file containing the directions for generation of
24ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is
25located at: generate/msvc2017/readme.txt
26
272) iASL Compiler/Disassembler and ACPICA tools:
28
29iASL: Fixed a regression found in version 20200214. Prevent iASL from
30emitting an extra byte of garbage data when control methods declared a
31single parameter type without using braces. This extra byte is known to
32cause a blue screen on the Windows AML interpreter.
33
34iASL: Made a change to allow external declarations to specify the type of
35a named object even when some name segments are not defined.
36This change allows the following ASL code to compile (When DEV0 is not
37defined or not defined yet):
38
39    External (\_SB.DEV0.OBJ1, IntObj)
40    External (\_SB.DEV0, DeviceObj)
41
42iASL: Fixed a problem where method names in "Alias ()" statement could be
43misinterpreted. They are now interpreted correctly as method invocations.
44
45iASL: capture a method parameter count (Within the Method info segment,
46as well as the argument node) when using parameter type lists.
47
48----------------------------------------
49
50
5128 May 2020. Summary of changes for version 20200528:
52
53
541) ACPICA kernel-resident subsystem:
55
56Removed old/obsolete Visual Studio files which were used to build the
57Windows versions of the ACPICA tools. Since we have moved to Visual
58Studio 2017, we are no longer supporting Visual Studio 2006 and 2009
59project files. The new subdirectory and solution file are located at:
60
61    acpica/generate/msvc2017/AcpiComponents.sln
62
63
642) iASL Compiler/Disassembler and ACPICA tools:
65
66iASL: added support for a new OperationRegion Address Space (subtype):
67PlatformRtMechanism. Support for this new keyword is being released for
68early prototyping. It will appear in the next release of the ACPI
69specification.
70
71iASL: do not optimize the NameString parameter of the CondRefOf operator.
72In the previous iASL compiler release, the NameString parameter of the
73CondRefOf was optimized. There is evidence that some implementations of
74the AML interpreter do not perform the recursive search-to-parent search
75during the execution of the CondRefOf operator. Therefore, the CondRefOf
76operator behaves differently when the NameString parameter is a single
77name segment (a NameSeg) as opposed to a full NamePath (starting at the
78root scope) or a NameString containing parent prefixes.
79
80iASL: Prevent an inadvertent remark message. This change prevents a
81remark if within a control method the following exist:
821) An Operation Region is defined, and
832) A Field operator is defined that refers to the region.
84This happens because at the top level, the Field operator does not
85actually create a new named object, it simply references the operation
86region.
87
88Removed support for the acpinames utility. The acpinames was a simple
89utility used to populate and display the ACPI namespace without executing
90any AML code. However, ACPICA now supports executable opcodes outside of
91control methods. This means that executable AML opcodes such as If and
92Store opcodes need to be executed during table load. Therefore, acpinames
93would need to be updated to match the same behavior as the acpiexec
94utility and since acpiexec can already dump the entire namespace (via the
95'namespace' command), we no longer have the need to maintain acpinames.
96
97    In order to dump the contents of the ACPI namepsace using acpiexec,
98execute the following command from the command line:
99
100        acpiexec -b "n" [aml files]
101
102----------------------------------------
103
104
10530 April 2020. Summary of changes for version 20200430:
106
1071) ACPICA kernel-resident subsystem:
108
109Cleaned up the coding style of a couple of global variables
110(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers.
111AcpiProtocolLengths was made static, and the definition of
112AcpiGbl_NextCmdNum was moved to acglobal.h.
113
114
1152) iASL Compiler/Disassembler and ACPICA tools:
116
117iASL DataTable Compiler:  Fixed a segfault on errors that aren't directly
118associated with a field.
119
120Disassembler: has been made more resilient so that it will continue to
121parse AML even if the AML generates ACPI namespace errors. This enables
122iASL to disassemble some AML that may have been compiled using older
123versions of iASL that no longer compile with newer versions of iASL.
124
125iASL: Fixed the required parameters for _NIH and _NIG. Previously, there
126was a mixup where _NIG required one parameter and _NIH required zero
127parameters. This change swaps these parameter requirements. Now it is
128required that _NIH must be called with one parameter and _NIG requires
129zero parameters.
130
131iASL: Allow use of undefined externals as long as they are protected by
132an if (CondRefOf (...)) block when compiling multiple definition blocks.
133
134iASL: Fixed the type override behavior of named objects that are declared
135as External. External declarations will no longer override the type of
136the actual definition if it already exists.
137
138AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable
139command line wildcard support on Windows. Note: the AcpiNames utility is
140essentially redundant with the AcpiExec utility (using the "namespace"
141command) and is therefore deprecated. It will be removed in future
142releases of ACPICA.
143
144Disassembler: ignore AE_ALREADY_EXISTS status when parsing create*
145operators. The disassembler is intended to emit existing ASL code as-is.
146Therefore, error messages emitted during disassembly should be ignored or
147handled in a way such that the disassembler can continue to parse the
148AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op
149parsing for create operators in order to complete parsing ASL termlists.
150
151iASL DataTable Compiler: IVRS table: fix potentially uninitialized
152variable warning. Some compilers catch potential uninitialized variables.
153This is done by examining branches of if/else statements. This change
154replaces an "else if" with an "else" to fix the uninitialized variable
155warning.
156
157
158----------------------------------------
15926 March 2020. Summary of changes for version 20200326:
160
161
1621) ACPICA kernel-resident subsystem:
163
164Performed a code clean-up to prevent build errors on early versions of
165GCC-10.
166
167Added the NHLT table signature. iASL data table compiler/disassembler
168support for this table is coming soon.
169
170
1712) iASL Compiler/Disassembler and ACPICA tools:
172
173AcpiExec: Fixed several problems with the namespace initialization file
174(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS
175errors, several seg faults, and enhancements to line parsing within the
176init file. In addition, each object found in the init file and it's new
177value is displayed, as well as any such entries that do not have a
178corresponding name in the namespace. For reference, the syntax for the
179various supported data types are presented below:
180	PCHG 0x777788889999BBBB	// Integer
181	\DEV1.STR1 "XYZ"			// String
182	BUF1 (88 99 AA)			// Buffer
183	PKG1 [0x1111 0x2222]		// Package
184	\BF1 0x7980				// BufferField
185	RCRV 0x0123456789ABCDEF	// Field Unit
186
187iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro
188can be used anywhere in a given ASL file to configure iASL to expect an
189iASL compiler error code on the line where this macro was placed. If the
190error code does not exist, an error is generated. This is intended to be
191used for ACPICA's ASL test suite, but can be used by ASL developers as
192well.
193
194iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD
195IVRS table parsing supported only IVHD type 10h structures. Parsing an
196IVHD type 11h caused the iasl to report unknown subtable type. Add
197necessary structure definition for IVHD type 11h and apply correct
198parsing method based on subtable type. Micha? ?ygowski.
199
200iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name
201According to AMD IOMMU Specification Revision 3.05 the reserved field
202should be IOMMU Feature Reporting. Change the name of the field to the
203correct one. Micha? ?ygowski.
204
205acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch
206based on suggestions by David Seifert and Benjamin Berg.
207
208iASL: table compiler: removed an unused variable (DtCompilerParserResult)
209causing linking errors. Patch based on suggestions by David Seifert and
210Benjamin Berg.
211
212iASL: table compiler: make LexBuffer static to avoid linking errors in
213newer compilers. Patch based on suggestions by David Seifert and Benjamin
214Berg.
215
216iASL: fixed type matching between External and Named objects. External
217object types can only be expressed with ACPI object type values that are
218defined in the ACPI spec. However, iASL uses ACPI object type values that
219are local to ACPICA in addition to the values defined in the ACPI spec.
220This change implements type matching to map some object type values
221specific to ACPICA to ones that are defined in the ACPI spec.
222
223iASL: Dropped the type mismatch compiler error that can arise from
224External declarations to a warning. This warning can occur when there is
225a type difference between the external declaration and the actual object
226declaration (when compiling multiple files/modules simultaneously).
227
228iASL: removed an incorrect error message regarding externals. This change
229removes an incorrect error that is emitted when a duplicate external
230declaration does not contain a type that opens a scope. This is incorrect
231because the duplicate external with conflicting types are already caught
232by iASL and it doesn't make any sense to enforce what this conflicting
233type should be.
234
235AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be
236surrounded by parens. Otherwise, a logical statement that applies a
237logical not operator to this macro could result in a computation that
238applies the operator to the left side of the logical and but not the
239right. Reported-by: John Levon <john.levon@joyent.com>
240
241Fixed a problem with the local version of sprint(): On 32-bit, the
242provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX,
243String + Size will wrap, meaning End < Start, and
244AcpiUtBoundStringOutput() will never output anything as a result. The
245symptom seen of this was acpixtract failing to output anything -- with a
246custom build that included utprint.c. Signed-off-by: John Levon
247<john.levon@joyent.com>
248
249iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the
250ACPI specification.
251
252
253----------------------------------------
25414 February 2020. Summary of changes for version 20200214:
255
256
2571) ACPICA kernel-resident subsystem:
258
259Enable sleep button on ACPI legacy wake:  Hibernation (S4) is triggered
260in a guest when it receives a sleep trigger from the hypervisor. When the
261guest resumes from this power state, it does not see the SleepEnabled
262bit. In other words, the sleepHibernation (S4) is triggered in a guest
263when it receives a sleep trigger from the hypervisor. When the guest
264resumes from this power state, it does not see the SleepEnabled bit. In
265other words, the sleep button is not enabled on waking from an S4 state.
266This causes subsequent invocation of sleep state to fail since the
267guest.button is not enabled on waking from an S4 state. This causes
268subsequent invocation of sleep state to fail in the guest. Fix this
269problem by enabling the sleep button in ACPI legacy wake. From Anchal
270Agarwal <anchalag@amazon.com>.
271
272Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used
273for checking the status bits of all enabled GPEs in one go. It is needed
274to distinguish spurious SCIs from genuine ones when deciding whether or
275not to wake up the system from suspend-to-idle.
276
277Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be
278using HOST in their environment to represent the host name for their
279machines. Avoid this problem by renaming this variable from HOST to
280ACPI_HOST.
281
282MSVC 2017 project files: Enable multiprocessor generation to improve
283build performance.
284
285Added a macro to get the byte width of a Generic Address structure. New
286ACPI_ACCESS_BYTE_WIDTH is in addition to the existing
287ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg.
288
289
2902) iASL Compiler/Disassembler and ACPICA tools:
291
292iASL: Implemented full support for the (optional, rarely used) ReturnType
293and ParameterTypesList for the Method, Function, and External operators.
294For Method declarations, the number of individual ParameterTypes must
295match the declaration of the number of arguments (NumArgs). This also
296Fixes a problem with the External operator where extra/extraneous bytes
297were emitted in the AML code if the optional ReturnType/ParameterTypes
298were specified for a MethodObj declaration.
299New error message:
3001) Method NumArgs count does not match length of ParameterTypes list
301
302iASL: Implemented detection of type mismatches between External
303declarations and named object declarations. Also, detect type mismatches
304between multiple External declarations of the same Name.
305New error messages:
3061) Type mismatch between external declaration and actual object
307declaration detected
3082) Type mismatch between multiple external declarations detected
309
310iASL: Implemented new error messages for External operators that specify
311a ReturnType and/or ParameterTypesList for any object type other than
312control methods (MethodObj).
313New error messages:
3141) Return type is only allowed for Externals declared as MethodObj
3152) Parameter type is only allowed for Externals declared as MethodObj
316
317iASL: Implemented two new remark/warning messages for ASL code that
318creates named objects from within a control method. This is very
319inefficient since the named object must be created and deleted each time
320the method is executed.
321New messages:
3221) Creation of named objects within a method is highly inefficient, use
323globals or method local variables instead (remark)
3242) Static OperationRegion should be declared outside control method
325(warning)
326
327iASL: Improved illegal forward reference detection by adding support to
328detect forward-reference method invocations.
329
330iASL: Detect and issue an error message for NameStrings that contain too
331many individual NameSegs (>255). This is an AML limitation that is
332defined in the ACPI specification.
333New message:
3341) NameString contains too many NameSegs (>255)
335
336acpidump: windows: use GetSystemFirmwareTable API for all tables except
337SSDT. By using this API, acpidump is able to get all tables in the XSDT
338
339iASL: Removed unused parser file and updated msvc2017 project files.
340Removed the obsolete AslCompiler.y from the repository.
341
342iASL: msvc2017: Fixed macros in the file dependency list to prevent
343unnecessary rebuilds. Replace %(Directory) with %(RelativeDir).
344
345Disassembler: Prevent spilling error messages to the output file. All
346errors are directed to the console instead. These error messages
347prevented re-compilation of the resulting disassembled ASL output file
348(.DSL).
349
350
351----------------------------------------
35210 January 2020. Summary of changes for version 20200110:
353
354
3551) ACPICA kernel-resident subsystem:
356
357Updated all copyrights to 2020. This affects all ACPICA source code
358modules.
359
360
3612) iASL Compiler/Disassembler and ACPICA tools:
362
363ASL test suite (ASLTS): Updated all copyrights to 2020.
364
365Tools and utilities: Updated all signon copyrights to 2020.
366
367iASL: fix forward reference analysis for field declarations. Fixes
368forward reference analysis for field declarations by searching the
369parent scope for the named object when the object is not present in
370the current scope.
371
372iASL: Improved the error output for ALREADY_EXISTS errors. Now, the
373full pathname of the name that already exists is printed.
374
375iASL: Enhance duplicate Case() detection for buffers. Add check for
376buffers with no initializer list (these buffers will be filled with
377zeros at runtime.)
378
379
380----------------------------------------
38113 December 2019. Summary of changes for version 20191213:
382
383
3841) ACPICA kernel-resident subsystem:
385
386Return a Buffer object for all fields created via the CreateField
387operator. Previously, an Integer would be returned if the size of
388the field was less than or equal to the current size of an Integer.
389Although this goes against the ACPI specification, it provides
390compatibility with other ACPI implementations. Also updated the
391ASLTS test suite to reflect this new behavior.
392
3932) iASL Compiler/Disassembler and ACPICA tools:
394
395iASL: Implemented detection of (and throw an error for) duplicate
396values for Case statements within a single Switch statement. Duplicate
397Integers, Strings, and Buffers are supported.
398
399iASL: Fix error logging issue during multiple file compilation --
400Switch to the correct input file during error node creation.
401
402iASL: For duplicate named object creation, now emit an error instead
403of a warning - since this will cause a runtime error.
404
405AcpiSrc: Add unix line-ending support for non-Windows builds.
406
407iASL: Add an error condition for an attempt to create a NameString
408with > 255 NameSegs (the max allowable via the AML definition).
409
410
411----------------------------------------
41218 October 2019. Summary of changes for version 20191018:
413
414
4151) ACPICA kernel-resident subsystem:
416
417Debugger: added a new command: ?Fields [address space ID]?. This command
418dumps the contents of all field units that are defined within the
419namespace with a particular address space ID.
420
421Modified the external interface AcpiLoadTable() to return a table index.
422This table index can be used for unloading a table for debugging.
423    ACPI_STATUS
424    AcpiLoadTable (
425        ACPI_TABLE_HEADER       *Table,
426        UINT32                  *TableIndex))
427
428Implemented a new external interface: AcpiUnloadTable() This new function
429takes a table index as an argument and unloads the table. Useful for
430debugging only.
431    ACPI_STATUS
432    AcpiUnloadTable (
433        UINT32                  TableIndex))
434
435Ported the AcpiNames utility to use the new table initialization
436sequence. The utility was broken before this change. Also, it was
437required to include most of the AML interpreter into the utility in order
438to process table initialization (module-level code execution.)
439
440Update for results from running Clang V8.0.1. This fixes all "dead
441assignment" warnings. There are still several "Dereference of NULL
442pointer" warnings, but these have been found to be false positive
443warnings.
444
445
4462) iASL Compiler/Disassembler and ACPICA tools:
447
448iASL: numerous table compiler changes to ensure that the usage of
449yacc/bison syntax is POSIX-compliant.
450
451iASL/disassembler: several simple bug fixes in the data table
452disassembler.
453
454Acpiexec: expanded the initialization file (the -fi option) to initialize
455strings, buffers, packages, and field units.
456
457
458----------------------------------------
45916 August 2019. Summary of changes for version 20190816:
460
461This release is available at https://acpica.org/downloads
462
463
4641) ACPICA kernel-resident subsystem:
465
466Modified the OwnerId mechanism to allow for more Owner Ids. The previous
467limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT
468exceptions on machines with a large number of initialization threads,
469many CPU cores and nested initialization control methods.
470
471Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for
472checking if the given GPE (as represented by a GPE device handle and a
473GPE number) is currently active and dispatching it (if that's the case)
474outside of interrupt context.
475
476Table load: exit the interpreter before initializing objects within the
477new table This prevents re-acquiring the interpreter lock when loading
478tables
479
480Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
481uk Kim
482
483Macros: removed pointer math on a null pointer. Causes warnings on some
484compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR
485instead of using arithmetic.
486
487Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used
488across all "printf-like" internal functions. Also, cleanup all calls to
489such functions (both in 32-bit mode and 64-bit mode) now that they are
490analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
491
492
4932) iASL Compiler/Disassembler and ACPICA tools:
494
495iASL: implemented a new data table compiler flex/bison front-end. This
496change is internal and is not intended to result in changes to the
497compiled code. This new compiler front-end can be invoked using the -tp
498option for now, until the old mechanism is removed.
499
500ASLTS: Implemented a new data table compiler test suite. This test suite
501generates all table templates and compile/disassemble/re-compile/binary-
502compare each file.
503
504iASL: return -1 if AML files were not generated due to compiler errors
505
506iASL: added a warning on use of the now-legacy ASL Processor () keyword.
507
508iASL: added an error on _UID object declaration that returns a String
509within a Processor () declaration. A _UID for a processor must be an
510Integer.
511
512iASL: added a null terminator to name strings that consist only of
513multiple parent prefixes (^)
514
515iASL: added support to compile both ASL and data table files in a single
516command.
517
518Updated the tool generation project files that were recently migrated to
519MSVC 2017 to eliminate all new warnings. The new project files appear in
520the directory \acpica\generate\msvc2017. This change effectively
521deprecates the older project files in \acpica\generate\msvc9.
522
523
524----------------------------------------
52503 July 2019. Summary of changes for version 20190703:
526
527
5281) ACPICA kernel-resident subsystem:
529
530Remove legacy module-level support code. There were still some remnants
531of the legacy module-level code executions. Since we no longer support
532this option, this is essentially dead code and has been removed from the
533ACPICA source.
534
535iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
536scope. If these named objects are declared outside the root scope, they
537will not be invoked by any host Operating System.
538
539Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC
540one) can be enabled in two situations. First, the GPEs with existing _Lxx
541and _Exx methods are enabled implicitly by ACPICA during system
542initialization.  Second, the GPEs without these methods (like GPEs listed
543by _PRW objects for wakeup devices) need to be enabled directly by the
544code that is going to use them (e.g. ACPI power management or device
545drivers).
546
547In the former case, if the status of a given GPE is set to start with,
548its handler method (either _Lxx or _Exx) needs to be invoked to take care
549of the events (possibly) signaled before the GPE was enabled. In the
550latter case, however, the first caller of AcpiEnableGpe() for a given GPE
551should not be expected to care about any events that might be signaled
552through it earlier.  In that case, it is better to clear the status of
553the GPE before enabling it, to prevent stale events from triggering
554unwanted actions (like spurious system resume, for example).
555
556For this reason, modify AcpiEvAddGpeReference() to take an additional
557boolean argument indicating whether or not the GPE status needs to be
558cleared when its reference counter changes from zero to one and make
559AcpiEnableGpe() pass TRUE to it through that new argument.
560
561
5622) iASL Compiler/Disassembler and ACPICA tools:
563
564The tool generation process has been migrated to MSVC 2017, and all
565project files have been upgraded. The new project files appear in the
566directory \acpica\generate\msvc2017. This change effectively deprecates
567the older project files in \acpica\generate\msvc9.
568
569iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
570scope. If these named objects are declared outside the root scope, they
571will not be invoked by any host Operating System
572
573----------------------------------------
57409 May 2019. Summary of changes for version 20190509:
575
576
5771) ACPICA kernel-resident subsystem:
578
579Revert commit  6c43e1a ("ACPICA: Clear status of GPEs before enabling
580them") that causes problems with Thunderbolt controllers to occur if a
581dock device is connected at init time (the xhci_hcd and thunderbolt
582modules crash which prevents peripherals connected through them from
583working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA:
584Dispatch active GPEs at init time") to get undone, so the problem
585addressed by commit ecc1165b8b74 appears again as a result of it.
586
587
5882) iASL Compiler/Disassembler and ACPICA tools:
589
590Reverted iASL: Additional forward reference detection. This change
591reverts forward reference detection for field declarations. The feature
592unintentionally emitted AML bytecode with incorrect package lengths for
593some ASL code related to Fields and OperationRegions. This malformed AML
594can cause systems to crash
595during boot. The malformed AML bytecode is emitted in iASL version
59620190329 and 20190405.
597
598iASL: improve forward reference detection. This change improves forward
599reference detection for named objects inside of scopes. If a parse object
600has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to
601a named object that is declared later in the AML bytecode. This is
602allowed if the reference is inside of a method and the declaration is
603outside of a method like so:
604
605DefinitionBlock(...)
606{
607    Method (TEST)
608    {
609        Return (NUM0)
610    }
611    Name (NUM0,0)
612}
613
614However, if the declaration and reference are both in the same method or
615outside any methods, this is a forward reference and should be marked as
616an error because it would result in runtime errors.
617
618DefinitionBlock(...)
619{
620    Name (BUFF, Buffer (NUM0) {}) // Forward reference
621    Name (NUM0, 0x0)
622
623    Method (TEST)
624    {
625        Local0 = NUM1
626        Name (NUM1, 0x1) // Forward reference
627        return (Local0)
628    }
629}
630
631iASL: Implemented additional buffer overflow analysis for BufferField
632declarations. Check if a buffer index argument to a create buffer field
633operation is beyond the end of the target buffer.
634
635This affects these AML operators:
636
637   AML_CREATE_FIELD_OP
638   AML_CREATE_BIT_FIELD_OP
639   AML_CREATE_BYTE_FIELD_OP
640   AML_CREATE_WORD_FIELD_OP
641   AML_CREATE_DWORD_FIELD_OP
642   AML_CREATE_QWORD_FIELD_OP
643
644 There are three conditions that must be satisfied in order to allow this
645validation at compile time:
646
647   1) The length of the target buffer must be an integer constant
648   2) The index specified in the create* must be an integer constant
649   3) For CreateField, the bit length argument must be non-zero.
650
651Example:
652    Name (BUF1, Buffer() {1,2})
653    CreateField (BUF1, 7, 9, CF03)  // 3: ERR
654
655dsdt.asl     14:     CreateField (BUF1, 7, 9, CF03)  // 3: ERR
656Error    6165 -                           ^ Buffer index beyond end of
657target buffer
658
659
660----------------------------------------
66105 April 2019. Summary of changes for version 20190405:
662
663
6641) ACPICA kernel-resident subsystem:
665
666Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop
667unconditionally clearing ACPI IRQs during suspend/resume") was added
668earlier to stop clearing of event status bits unconditionally on suspend
669and resume paths. Though this change fixed an issue on suspend path, it
670introduced regressions on several resume paths. In the case of S0ix,
671events are enabled as part of device suspend path. If status bits for the
672events are set when they are enabled, it could result in premature wake
673from S0ix. If status is cleared for any event that is being enabled so
674that any stale events are cleared out. In case of S0ix, events are
675enabled as part of device suspend path. If status bits for the events are
676set when they are enabled, it could result in premature wake from S0ix.
677
678This change ensures that status is cleared for any event that is being
679enabled so that any stale events are cleared out.
680
681
6822) iASL Compiler/Disassembler and ACPICA tools:
683
684iASL: Implemented an enhanced multiple file compilation that combines
685named objects from all input files to a single namespace. With this
686feature, any unresolved external declarations as well as duplicate named
687object declarations can be detected during compilation rather than
688generating errors much later at runtime. The following commands are
689examples that utilize this feature:
690    iasl dsdt.asl ssdt.asl
691    iasl dsdt.asl ssdt1.asl ssdt2.asl
692    iasl dsdt.asl ssdt*.asl
693
694----------------------------------------
69529 March 2019. Summary of changes for version 20190329:
696
697
6981) ACPICA kernel-resident subsystem:
699
700Namespace support: Remove the address nodes from global list after method
701termination. The global address list contains pointers to namespace nodes
702that represent Operation Regions. This change properly removes Operation
703Region namespace nodes that are declared dynamically during method
704execution.
705
706Linux: Use a different debug default than ACPICA. There was a divergence
707between Linux and the ACPICA codebases. In order to resolve this
708divergence, Linux now declares its own debug default in aclinux.h
709
710Renamed some internal macros to improve code understanding and
711maintenance. The macros below all operate on single 4-character ACPI
712NameSegs, not generic strings (old -> new):
713    ACPI_NAME_SIZE    -> ACPI_NAMESEG_SIZE
714    ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
715    ACPI_MOVE_NAME    -> ACPI_COPY_NAMESEG
716
717Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
718table.
719
720Test suite: Update makefiles, add PCC operation region support
721
722
7232) iASL Compiler/Disassembler and Tools:
724
725iASL: Implemented additional illegal forward reference detection. Now
726detect and emit an error upon detection of a forward reference from a
727Field to an Operation Region. This will fail at runtime if allowed to
728pass the compiler.
729
730AcpiExec: Add an address list check for dynamic Operation Regions. This
731feature performs a sanity test for each node the global address list.
732This is done in order to ensure that all dynamic operation regions are
733properly removed from the global address list and no dangling pointers
734are left behind.
735
736Disassembler: Improved generation of resource pathnames. This change
737improves the code that generates resource descriptor and resource tag
738pathnames. The original code used a bunch of str* C library functions
739that caused warnings on some compilers.
740
741iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
742function can overwrite buffers if the calling code is not very careful.
743In the case of generating a module/table header, use of memmove is a
744better implementation.
745
746
7473) Status of new features that have not been completed at this time:
748
749iASL: Implementing an enhanced multiple file compilation into a single
750namespace feature (Status): This feature will be released soon, and
751allows multiple ASL files to be compiled into the same single namespace.
752By doing so, any unresolved external declarations as well as duplicate
753named object declarations can be detected during compilation (rather than
754later during runtime). The following commands are examples that utilize
755this feature:
756    iasl dsdt.asl ssdt.asl
757    iasl dsdt.asl ssdt1.asl ssdt2.asl
758    iasl dsdt.asl ssdt*.asl
759
760ASL tutorial status: Feedback is being gathered internally and the
761current plan is to publish this tutorial on the ACPICA website after a
762final review by a tech writer.
763
764----------------------------------------
76515 February 2019. Summary of changes for version 20190215:
766
767
7680) Support for ACPI specification version 6.3:
769
770Add PCC operation region support for the AML interpreter. This adds PCC
771operation region support in the AML interpreter and a default handler for
772acpiexec. The change also renames the PCC region address space keyword to
773PlatformCommChannel.
774
775Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG.
776These methods provide OSPM with health information and device boot
777status.
778
779PDTT: Add TriggerOrder to the PCC Identifier structure. The field value
780defines if the trigger needs to be invoked by OSPM before or at the end
781of kernel crash dump processing/handling operation.
782
783SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT
784is used for describing devices such as heterogeneous processors,
785accelerators, GPUs, and IO devices with integrated compute or DMA
786engines.
787
788MADT: Add support for statistical profiling in GICC. Statistical
789profiling extension (SPE) is an architecture-specific feature for ARM.
790
791MADT: Add online capable flag. If this bit is set, system hardware
792supports enabling this processor during OS runtime.
793
794New Error Disconnect Recover Notification value. There are a number of
795scenarios where system Firmware in collaboration with hardware may
796disconnect one or more devices from the rest of the system for purposes
797of error containment. Firmware can use this new notification value to
798alert OSPM of such a removal.
799
800PPTT: New additional fields in Processor Structure Flags. These flags
801provide more information about processor topology.
802
803NFIT/Disassembler: Change a field name from "Address Range" to "Region
804Type".
805
806HMAT updates: make several existing fields to be reserved as well as
807rename subtable 0 to "memory proximity domain attributes".
808
809GTDT: Add support for new GTDT Revision 3. This revision adds information
810for the EL2 timer.
811
812iASL: Update the HMAT example template for new fields.
813
814iASL: Add support for the new revision of the GTDT (Rev 3).
815
816
8171) ACPICA kernel-resident subsystem:
818
819AML Parser: fix the main AML parse loop to correctly skip erroneous
820extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
821byte extended opcodes. If an error occurs during an AML table load, the
822AML parser will continue loading the table by skipping the offending
823opcode. This implements a "load table at any cost" philosophy.
824
825
8262) iASL Compiler/Disassembler and Tools:
827
828iASL: Add checks for illegal object references, such as a reference
829outside of method to an object within a method. Such an object is only
830temporary.
831
832iASL: Emit error for creation of a zero-length operation region. Such a
833region is rather pointless. If encountered, a runtime error is also
834implemented in the interpreter.
835
836Debugger: Fix a possible fault with the "test objects" command.
837
838iASL: Makefile: support parent directory filenames containing embedded
839spaces.
840
841iASL: Update the TPM2 template to revision 4.
842
843iASL: Add the ability to report specific warnings or remarks as errors.
844
845Disassembler: Disassemble OEMx tables as actual AML byte code.
846Previously, these tables were treated as "unknown table".
847
848iASL: Add definition and disassembly for TPM2 revision 3.
849
850iASL: Add support for TPM2 rev 3 compilation.
851
852
853----------------------------------------
85408 January 2019. Summary of changes for version 20190108:
855
856
8571) ACPICA kernel-resident subsystem:
858
859Updated all copyrights to 2019. This affects all source code modules.
860
861
8622) iASL Compiler/Disassembler and Tools:
863
864ASL test suite (ASLTS): Updated all copyrights to 2019.
865
866Tools: Updated all signon copyrights to 2019.
867
868AcpiExec: Added a new option to dump extra information concerning any
869memory leaks detected by the internal object/cache tracking mechanism. -
870va
871
872iASL: Updated the table template for the TPM2 table to the newest version
873of the table (Revision 4)
874
875
876----------------------------------------
87713 December 2018. Summary of changes for version 20181213:
878
879
8801) ACPICA Kernel-resident Subsystem:
881
882Fixed some buffer length issues with the GenericSerialBus, related to two
883of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
884which are rarely seen in the field. For these, the LEN field of the ASL
885buffer is now ignored. Hans de Goede
886
887Implemented a new object evaluation trace mechanism for control methods
888and data objects. This includes nested control methods. It is
889particularly useful for examining the ACPI execution during system
890initialization since the output is relatively terse. The flag below
891enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
892   #define ACPI_LV_EVALUATION          0x00080000
893
894Examples:
895   Enter evaluation       :  _SB.PCI0._INI (Method)
896   Exit evaluation        :  _SB.PCI0._INI
897   Enter evaluation       :  _OSI (Method)
898   Exit evaluation        :  _OSI
899   Enter evaluation       :  _SB.PCI0.TEST (Method)
900   Nested method call     :     _SB.PCI0.NST1
901   Exit nested method     :     _SB.PCI0.NST1
902   Exit evaluation        :  _SB.PCI0.TEST
903
904Added two recently-defined _OSI strings. See
905https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
906osi.
907   "Windows 2018"
908   "Windows 2018.2"
909
910Update for buffer-to-string conversions via the ToHexString ASL operator.
911A "0x" is now prepended to each of the hex values in the output string.
912This provides compatibility with other ACPI implementations. The ACPI
913specification is somewhat vague on this issue.
914   Example output string after conversion:
915"0x01,0x02,0x03,0x04,0x05,0x06"
916
917Return a run-time error for TermArg expressions within individual package
918elements. Although this is technically supported by the ASL grammar,
919other ACPI implementations do not support this either. Also, this fixes a
920fault if this type of construct is ever encountered (it never has been).
921
922
9232) iASL Compiler/Disassembler and Tools:
924
925iASL: Implemented a new compile option (-ww) that will promote individual
926warnings and remarks to errors. This is intended to enhance the firmware
927build process.
928
929AcpiExec: Implemented a new command-line option (-eo) to support the new
930object evaluation trace mechanism described above.
931
932Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
933instead of a "unknown table" message.
934
935AcpiHelp: Improved support for the "special" predefined names such as
936_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be
937used for "xx" and "x".
938
939----------------------------------------
94031 October 2018. Summary of changes for version 20181031:
941
942
943An Operation Region regression was fixed by properly adding address
944ranges to a global list during initialization. This allows OS to
945accurately check for overlapping regions between native devices (such as
946PCI) and Operation regions as well as checking for region conflicts
947between two Operation Regions.
948
949Added support for the 2-byte extended opcodes in the code/feature that
950attempts to continue parsing during the table load phase. Skip parsing
951Device declarations (and other extended opcodes) when an error occurs
952during parsing. Previously, only single-byte opcodes were supported.
953
954Cleanup: Simplified the module-level code support by eliminating a
955useless global variable (AcpiGbl_GroupModuleLeveCode).
956
957
9582) iASL Compiler/Disassembler and Tools:
959
960iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
961could cause a fault in the preprocessor. This was an inadvertent side-
962effect from moving more allocations/frees to the local cache/memory
963mechanism.
964
965iASL: Enhanced error detection by validating that all NameSeg elements
966within a NamePatch actually exist. The previous behavior was spotty at
967best, and such errors could be improperly ignored at compiler time (never
968at runtime, however. There are two new error messages, as shown in the
969examples below:
970
971dsdt.asl     33:     CreateByteField (TTTT.BXXX, 1, CBF1)
972Error    6161 -                              ^ One or more objects within
973the Pathname do not exist (TTTT.BXXX)
974
975dsdt.asl     34:     CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
976Error    6160 -        One or more prefix Scopes do not exist ^
977(BBBB.CBF1)
978
979iASL: Disassembler/table-compiler: Added support for the static data
980table TPM2 revision 3 (an older version of TPM2). The support has been
981added for the compiler and the disassembler.
982
983Fixed compilation of DOS format data table file on Unix/Linux systems.
984iASL now properly detects line continuations (\) for DOS format data
985table definition language files on when executing on Unix/Linux.
986
987----------------------------------------
98803 October 2018. Summary of changes for version 20181003:
989
990
9912) iASL Compiler/Disassembler and Tools:
992
993Fixed a regression introduced in version 20180927 that could cause the
994compiler to fault, especially with NamePaths containing one or more
995carats (^). Such as: ^^_SB_PCI0
996
997Added a new remark for the Sleep() operator when the sleep time operand
998is larger than one second. This is a very long time for the ASL/BIOS code
999and may not be what was intended by the ASL writer.
1000
1001----------------------------------------
100227 September 2018. Summary of changes for version 20180927:
1003
1004
10051) ACPICA kernel-resident subsystem:
1006
1007Updated the GPE support to clear the status of all ACPI events when
1008entering any/all sleep states in order to avoid premature wakeups. In
1009theory, this may cause some wakeup events to be missed, but the
1010likelihood of this is small. This change restores the original behavior
1011of the ACPICA code in order to fix a regression seen from the previous
1012"Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
1013This regression could cause some systems to incorrectly wake immediately.
1014
1015Updated the execution of the _REG methods during initialization and
1016namespace loading to bring the behavior into closer conformance to the
1017ACPI specification and other ACPI implementations:
1018
1019From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
1020    "Control methods must assume all operation regions are inaccessible
1021until the _REG(RegionSpace, 1) method is executed"
1022
1023    "The exceptions to this rule are:
10241.  OSPM must guarantee that the following operation regions are always
1025accessible:
1026    SystemIO operation regions.
1027    SystemMemory operation regions when accessing memory returned by the
1028System Address Map reporting interfaces."
1029
1030Since the state of both the SystemIO and SystemMemory address spaces are
1031defined by the specification to never change, this ACPICA change ensures
1032that now _REG is never called on them. This solves some problems seen in
1033the field and provides compatibility with other ACPI implementations. An
1034update to the upcoming new version of the ACPI specification will help
1035clarify this behavior.
1036
1037Updated the implementation of support for the Generic Serial Bus. For the
1038"bidirectional" protocols, the internal implementation now automatically
1039creates a return data buffer of the maximum size (255). This handles the
1040worst-case for data that is returned from the serial bus handler, and
1041fixes some problems seen in the field. This new buffer is directly
1042returned to the ASL. As such, there is no true "bidirectional" buffer,
1043which matches the ACPI specification. This is the reason for the "double
1044store" seen in the example ASL code in the specification, shown below:
1045
1046Word Process Call (AttribProcessCall):
1047    OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
1048    Field(TOP1, BufferAcc, NoLock, Preserve)
1049    {
1050        FLD1, 8, // Virtual register at command value 1.
1051    }
1052
1053    Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
1054                             // as BUFF
1055    CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
1056
1057    Store(0x5416, DATA)               // Save 0x5416 into the data buffer
1058    Store(Store(BUFF, FLD1), BUFF)    // Invoke a write/read Process Call
1059transaction
1060                           // This is the "double store". The write to
1061                           // FLD1 returns a new buffer, which is stored
1062                           // back into BUFF with the second Store.
1063
1064
10652) iASL Compiler/Disassembler and Tools:
1066
1067iASL: Implemented detection of extraneous/redundant uses of the Offset()
1068operator within a Field Unit list. A remark is now issued for these. For
1069example, the first two of the Offset() operators below are extraneous.
1070Because both the compiler and the interpreter track the offsets
1071automatically, these Offsets simply refer to the current offset and are
1072unnecessary. Note, when optimization is enabled, the iASL compiler will
1073in fact remove the redundant Offset operators and will not emit any AML
1074code for them.
1075
1076    OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
1077    Field (OPR1)
1078    {
1079        Offset (0),     // Never needed
1080        FLD1, 32,
1081        Offset (4),     // Redundant, offset is already 4 (bytes)
1082        FLD2, 8,
1083        Offset (64),    // OK use of Offset.
1084        FLD3, 16,
1085    }
1086dsdt.asl     14:         Offset (0),
1087Remark   2158 -                 ^ Unnecessary/redundant use of Offset
1088operator
1089
1090dsdt.asl     16:         Offset (4),
1091Remark   2158 -                 ^ Unnecessary/redundant use of Offset
1092operator
1093
1094----------------------------------------
109510 August 2018. Summary of changes for version 20180810:
1096
1097
10981) ACPICA kernel-resident subsystem:
1099
1100Initial ACPI table loading: Attempt to continue loading ACPI tables
1101regardless of malformed AML. Since migrating table initialization to the
1102new module-level code support, the AML interpreter rejected tables upon
1103any ACPI error encountered during table load. This is a problem because
1104non-serious ACPI errors during table load do not necessarily mean that
1105the entire definition block (DSDT or SSDT) is invalid. This change
1106improves the table loading by ignoring some types of errors that can be
1107generated by incorrect AML. This can range from object type errors, scope
1108errors, and index errors.
1109
1110Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
1111during suspend/resume. The status of ACPI events is no longer cleared
1112when entering the ACPI S5 system state (power off) which caused some
1113systems to power up immediately after turning off power in certain
1114situations. This was a functional regression. It was fixed by clearing
1115the status of all ACPI events again when entering S5 (for system-wide
1116suspend or hibernation the clearing of the status of all events is not
1117desirable, as it might cause the kernel to miss wakeup events sometimes).
1118Rafael Wysocki.
1119
1120
11212) iASL Compiler/Disassembler and Tools:
1122
1123AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
1124elements listed in the initialization file were previously initialized
1125after the table load and before executing module-level code blocks.
1126Recent changes in the module-level code support means that the table load
1127becomes a large control method execution. If fields are used within
1128module-level code and we are executing with the -fi option, the
1129initialization values were used to initialize the namespace object(s)
1130only after the table was finished loading. This change Provides an early
1131initialization of objects specified in the initialization file so that
1132field unit values are populated during the table load (not after the
1133load).
1134
1135AcpiExec: Fixed a small memory leak regression that could result in
1136warnings during exit of the utility. These warnings were similar to
1137these:
1138    0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
1139    0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
1140
1141----------------------------------------
114229 June 2018. Summary of changes for version 20180629:
1143
1144
11451) iASL Compiler/Disassembler and Tools:
1146
1147iASL: Fixed a regression related to the use of the ASL External
1148statement. Error checking for the use of the External() statement has
1149been relaxed. Previously, a restriction on the use of External meant that
1150the referenced named object was required to be defined in a different
1151table (an SSDT). Thus it would be an error to declare an object as an
1152external and then define the same named object in the same table. For
1153example:
1154    DefinitionBlock (...)
1155    {
1156        External (DEV1)
1157        Device (DEV1){...} // This was an error
1158    }
1159However, this behavior has caused regressions in some existing ASL code,
1160because there is code that depends on named objects and externals (with
1161the same name) being declared in the same table. This change will allow
1162the ASL code above to compile without errors or warnings.
1163
1164iASL: Implemented ASL language extensions for four operators to make some
1165of their arguments optional instead of required:
1166    1) Field (RegionName, AccessType, LockRule, UpdateRule)
1167    2) BankField (RegionName, BankName, BankValue,
1168                AccessType, LockRule, UpdateRule)
1169    3) IndexField (IndexName, DataName,
1170                AccessType, LockRule, UpdateRule)
1171For the Field operators above, the AccessType, LockRule, and UpdateRule
1172are now optional arguments. The default values are:
1173        AccessType: AnyAcc
1174        LockRule:   NoLock
1175        UpdateRule: Preserve
1176    4) Mutex (MutexName, SyncLevel)
1177For this operator, the SyncLevel argument is now optional. This argument
1178is rarely used in any meaningful way by ASL code, and thus it makes sense
1179to make it optional. The default value is:
1180        SyncLevel:  0
1181
1182iASL: Attempted use of the ASL Unload() operator now results in the
1183following warning:
1184    "Unload is not supported by all operating systems"
1185This is in fact very true, and the Unload operator may be completely
1186deprecated in the near future.
1187
1188AcpiExec: Fixed a regression for the -fi option (Namespace initialization
1189file. Recent changes in the ACPICA module-level code support altered the
1190table load/initialization sequence . This means that the table load has
1191become a large method execution of the table itself. If Operation Region
1192Fields are used within any module-level code and the -fi option was
1193specified, the initialization values were populated only after the table
1194had completely finished loading (and thus the module-level code had
1195already been executed). This change moves the initialization of objects
1196listed in the initialization file to before the table is executed as a
1197method. Field unit values are now initialized before the table execution
1198is performed.
1199
1200----------------------------------------
120131 May 2018. Summary of changes for version 20180531:
1202
1203
12041) ACPICA kernel-resident Subsystem:
1205
1206Implemented additional support to help ensure that a DSDT or SSDT is
1207fully loaded even if errors are incurred during the load. The majority of
1208the problems that are seen is the failure of individual AML operators
1209that occur during execution of any module-level code (MLC) existing in
1210the table. This support adds a mechanism to abort the current ASL
1211statement (AML opcode), emit an error message, and to simply move on to
1212the next opcode -- instead of aborting the entire table load. This is
1213different than the execution of a control method where the entire method
1214is aborted upon any error. The goal is to perform a very "best effort" to
1215load the ACPI tables. The most common MLC errors that have been seen in
1216the field are direct references to unresolved ASL/AML symbols (referenced
1217directly without the use of the CondRefOf operator to validate the
1218symbol). This new ACPICA behavior is now compatible with other ACPI
1219implementations.
1220
1221Interpreter: The Unload AML operator is no longer supported for the
1222reasons below. An AE_NOT_IMPLEMENTED exception is returned.
12231) A correct implementation on at least some hosts may not be possible.
12242) Other ACPI implementations do not correctly/fully support it.
12253) It requires host device driver support which is not known to exist.
1226    (To properly support namespace unload out from underneath.)
12274) This AML operator has never been seen in the field.
1228
1229Parser: Added a debug option to dump AML parse sub-trees as they are
1230being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
1231ACPI_DB_PARSE_TREES.
1232
1233Debugger: Reduced the verbosity for errors incurred during table load and
1234module-level code execution.
1235
1236Completed an investigation into adding a namespace node "owner list"
1237instead of the current "owner ID" associated with namespace nodes. This
1238list would link together all nodes that are owned by an individual
1239control method. The purpose would be to enhance control method execution
1240by speeding up cleanup during method exit (all namespace nodes created by
1241a method are deleted upon method termination.) Currently, the entire
1242namespace must be searched for matching owner IDs if (and only if) the
1243method creates named objects outside of the local scope. However, by far
1244the most common case is that methods create objects locally, not outside
1245the method scope. There is already an ACPICA optimization in place that
1246only searches the entire namespace in the rare case of a method creating
1247objects elsewhere in the namespace. Therefore, it is felt that the
1248overhead of adding an additional pointer to each namespace node to
1249implement the owner list makes this feature unnecessary.
1250
1251
12522) iASL Compiler/Disassembler and Tools:
1253
1254iASL, Disassembler, and Template generator: Implemented support for
1255Revision D of the IORT table. Adds a new subtable that is used to specify
1256SMMUv3 PMCGs. rmurphy-arm.
1257
1258Disassembler: Restored correct table header validation for the "special"
1259ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
1260table header and must be special-cased. This was a regression that has
1261been present for apparently a long time.
1262
1263AcpiExec: Reduced verbosity of the local exception handler implemented
1264within acpiexec. This handler is invoked by ACPICA upon any exceptions
1265generated during control method execution. A new option was added: -vh
1266restores the original verbosity level if desired.
1267
1268AcpiExec: Changed the default base from decimal to hex for the -x option
1269(set debug level). This simplifies the use of this option and matches the
1270behavior of the corresponding iASL -x option.
1271
1272AcpiExec: Restored a force-exit on multiple control-c (sigint)
1273interrupts. This allows program termination even if other issues cause
1274the control-c to fail.
1275
1276ASL test suite (ASLTS): Added tests for the recently implemented package
1277element resolution mechanism that allows forward references to named
1278objects from individual package elements (this mechanism provides
1279compatibility with other ACPI implementations.)
1280
1281
1282----------------------------------------
12838 May 2018. Summary of changes for version 20180508:
1284
1285
12861) ACPICA kernel-resident subsystem:
1287
1288Completed the new (recently deployed) package resolution mechanism for
1289the Load and LoadTable ASL/AML operators. This fixes a regression that
1290was introduced in version 20180209 that could result in an
1291AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
1292(SSDT) that contains package objects.
1293
1294
12952) iASL Compiler/Disassembler and Tools:
1296
1297AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
12981 MB. This change allows for table offsets within the acpidump file to be
1299up to 8 characters. These changes are backwards compatible with existing
1300acpidump files.
1301
1302
1303----------------------------------------
130427 April 2018. Summary of changes for version 20180427:
1305
1306
13071) ACPICA kernel-resident subsystem:
1308
1309Debugger: Added support for Package objects in the "Test Objects"
1310command. This command walks the entire namespace and evaluates all named
1311data objects (Integers, Strings, Buffers, and now Packages).
1312
1313Improved error messages for the namespace root node. Originally, the root
1314was referred to by the confusing string "\___". This has been replaced by
1315"Namespace Root" for clarification.
1316
1317Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
1318Ian King <colin.king@canonical.com>.
1319
1320
13212) iASL Compiler/Disassembler and Tools:
1322
1323iASL: Implemented support to detect and flag illegal forward references.
1324For compatibility with other ACPI implementations, these references are
1325now illegal at the root level of the DSDT or SSDTs. Forward references
1326have always been illegal within control methods. This change should not
1327affect existing ASL/AML code because of the fact that these references
1328have always been illegal in the other ACPI implementation.
1329
1330iASL: Added error messages for the case where a table OEM ID and OEM
1331TABLE ID strings are longer than the ACPI-defined length. Previously,
1332these strings were simply silently truncated.
1333
1334iASL: Enhanced the -tc option (which creates an AML hex file in C,
1335suitable for import into a firmware project):
1336  1) Create a unique name for the table, to simplify use of multiple
1337SSDTs.
1338  2) Add a protection #ifdef in the file, similar to a .h header file.
1339With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd,
1340evan.lloyd@arm.com
1341
1342AcpiExec: Added a new option, -df, to disable the local fault handler.
1343This is useful during debugging, where it may be desired to drop into a
1344debugger on a fault.
1345
1346----------------------------------------
134713 March 2018. Summary of changes for version 20180313:
1348
1349
13501) ACPICA kernel-resident subsystem:
1351
1352Implemented various improvements to the GPE support:
1353
13541) Dispatch all active GPEs at initialization time so that no GPEs are
1355lost.
13562) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
1357before devices are enumerated.
13583) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
1359IRQs are not lost.
13604) Add parallel GPE handling to eliminate the possibility of dispatching
1361the same GPE twice.
13625) Dispatch any pending GPEs after enabling for the first time.
1363
1364AcpiGetObjectInfo - removed support for the _STA method. This was causing
1365problems on some platforms.
1366
1367Added a new _OSI string, "Windows 2017.2".
1368
1369Cleaned up and simplified the module-level code support. These changes
1370are in preparation for the eventual removal of the legacy MLC support
1371(deferred execution), replaced by the new MLC architecture which executes
1372the MLC as a table is loaded (DSDT/SSDTs).
1373
1374Changed a compile-time option to a runtime option. Changes the option to
1375ignore ACPI table load-time package resolution errors into a runtime
1376option. Used only for platforms that generate many AE_NOT_FOUND errors
1377during boot. AcpiGbl_IgnorePackageResolutionErrors.
1378
1379Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
1380ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
1381compilation errors from unused variables (seen with some compilers).
1382
1383
13842) iASL Compiler/Disassembler and Tools:
1385
1386ASLTS: parallelized execution in order to achieve an (approximately) 2X
1387performance increase.
1388
1389ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
1390error reporting.
1391
1392----------------------------------------
139309 February 2018. Summary of changes for version 20180209:
1394
1395
13961) ACPICA kernel-resident subsystem:
1397
1398Completed the final integration of the recent changes to Package Object
1399handling and the module-level AML code support. This allows forward
1400references from individual package elements when the package object is
1401declared from within module-level code blocks. Provides compatibility
1402with other ACPI implementations.
1403
1404The new architecture for the AML module-level code has been completed and
1405is now the default for the ACPICA code. This new architecture executes
1406the module-level code in-line as the ACPI table is loaded/parsed instead
1407of the previous architecture which deferred this code until after the
1408table was fully loaded. This solves some ASL code ordering issues and
1409provides compatibility with other ACPI implementations. At this time,
1410there is an option to fallback to the earlier architecture, but this
1411support is deprecated and is planned to be completely removed later this
1412year.
1413
1414Added a compile-time option to ignore AE_NOT_FOUND exceptions during
1415resolution of named reference elements within Package objects. Although
1416this is potentially a serious problem, it can generate a lot of
1417noise/errors on platforms whose firmware carries around a bunch of unused
1418Package objects. To disable these errors, define
1419ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
1420errors are always reported for ACPICA applications such as AcpiExec.
1421
1422Fixed a regression related to the explicit type-conversion AML operators
1423(ToXXXX). The regression was introduced early in 2017 but was not seen
1424until recently because these operators are not fully supported by other
1425ACPI implementations and are thus rarely used by firmware developers. The
1426operators are defined by the ACPI specification to not implement the
1427"implicit result object conversion". The regression incorrectly
1428introduced this object conversion for the following explicit conversion
1429operators:
1430    ToInteger
1431    ToString
1432    ToBuffer
1433    ToDecimalString
1434    ToHexString
1435    ToBCD
1436    FromBCD
1437
1438
14392) iASL Compiler/Disassembler and Tools:
1440
1441iASL: Fixed a problem with the compiler constant folding feature as
1442related to the ToXXXX explicit conversion operators. These operators do
1443not support the "implicit result object conversion" by definition. Thus,
1444ASL expressions that use these operators cannot be folded to a simple
1445Store operator because Store implements the implicit conversion. This
1446change uses the CopyObject operator for the ToXXXX operator folding
1447instead. CopyObject is defined to not implement implicit result
1448conversions and is thus appropriate for folding the ToXXXX operators.
1449
1450iASL: Changed the severity of an error condition to a simple warning for
1451the case where a symbol is declared both locally and as an external
1452symbol. This accommodates existing ASL code.
1453
1454AcpiExec: The -ep option to enable the new architecture for module-level
1455code has been removed. It is replaced by the -dp option which instead has
1456the opposite effect: it disables the new architecture (the default) and
1457enables the legacy architecture. When the legacy code is removed in the
1458future, the -dp option will be removed also.
1459
1460----------------------------------------
146105 January 2018. Summary of changes for version 20180105:
1462
1463
14641) ACPICA kernel-resident subsystem:
1465
1466Updated all copyrights to 2018. This affects all source code modules.
1467
1468Fixed a possible build error caused by an unresolved reference to the
1469AcpiUtSafeStrncpy function.
1470
1471Removed NULL pointer arithmetic in the various pointer manipulation
1472macros. All "(void *) NULL" constructs are converted to "(void *) 0".
1473This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
1474
1475Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
1476Mittal.
1477
1478
14792) iASL Compiler/Disassembler and Tools:
1480
1481ASLTS: Updated all copyrights to 2018.
1482
1483Tools: Updated all signon copyrights to 2018.
1484
1485AcpiXtract: Fixed a regression related to ACPI table signatures where the
1486signature was truncated to 3 characters (instead of 4).
1487
1488AcpiExec: Restore the original terminal mode after the use of the -v and
1489-vd options.
1490
1491ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
1492
1493----------------------------------------
149414 December 2017. Summary of changes for version 20171214:
1495
1496
14971) ACPICA kernel-resident subsystem:
1498
1499Fixed a regression in the external (public) AcpiEvaluateObjectTyped
1500interface where the optional "pathname" argument had inadvertently become
1501a required argument returning an error if omitted (NULL pointer
1502argument).
1503
1504Fixed two possible memory leaks related to the recently developed "late
1505resolution" of reference objects within ASL Package Object definitions.
1506
1507Added two recently defined _OSI strings: "Windows 2016" and "Windows
15082017". Mario Limonciello.
1509
1510Implemented and deployed a safer version of the C library function
1511strncpy:  AcpiUtSafeStrncpy. The intent is to at least prevent the
1512creation of unterminated strings as a possible result of a standard
1513strncpy.
1514
1515Cleaned up and restructured the global variable file (acglobal.h). There
1516are many changes, but no functional changes.
1517
1518
15192) iASL Compiler/Disassembler and Tools:
1520
1521iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
1522optional OemData field at the end of the table was incorrectly required
1523for proper compilation. It is now correctly an optional field.
1524
1525ASLTS: The entire suite was converted from standard ASL to the ASL+
1526language, using the ASL-to-ASL+ converter which is integrated into the
1527iASL compiler. A binary compare of all output files has verified the
1528correctness of the conversion.
1529
1530iASL: Fixed the source code build for platforms where "char" is unsigned.
1531This affected the iASL lexer only. Jung-uk Kim.
1532
1533----------------------------------------
153410 November 2017. Summary of changes for version 20171110:
1535
1536
15371) ACPICA kernel-resident subsystem:
1538
1539This release implements full support for ACPI 6.2A:
1540    NFIT - Added a new subtable, "Platform Capabilities Structure"
1541No other changes to ACPICA were required, since ACPI 6.2A is primarily an
1542errata release of the specification.
1543
1544Other ACPI table changes:
1545    IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
1546    PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
1547Linton
1548
1549Utilities: Modified the string/integer conversion functions to use
1550internal 64-bit divide support instead of a native divide. On 32-bit
1551platforms, a 64-bit divide typically requires a library function which
1552may not be present in the build (kernel or otherwise).
1553
1554Implemented a targeted error message for timeouts returned from the
1555Embedded Controller device driver. This is seen frequently enough to
1556special-case an AE_TIME returned from an EC operation region access:
1557    "Timeout from EC hardware or EC device driver"
1558
1559Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
1560runtime error messages have the identical prefix.
1561
1562
15632) iASL Compiler/Disassembler and Tools:
1564
1565AcpiXtract: Fixed a problem with table header detection within the
1566acpidump file. Processing a table could be ended early if a 0x40 (@)
1567appears in the original binary table, resulting in the @ symbol appearing
1568in the decoded ASCII field at the end of the acpidump text line. The
1569symbol caused acpixtract to incorrectly think it had reached the end of
1570the current table and the beginning of a new table.
1571
1572AcpiXtract: Added an option (-f) to ignore some errors during table
1573extraction. This initial implementation ignores non-ASCII and non-
1574printable characters found in the acpidump text file.
1575
1576TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
1577for ASLTS. This feature is used to track memory allocations from
1578different memory caches within the ACPICA code. At the end of an ASLTS
1579run, these memory statistics are recorded and stored in a log file.
1580
1581Debugger (user-space version): Implemented a simple "Background" command.
1582Creates a new thread to execute a control method in the background, while
1583control returns to the debugger prompt to allow additional commands.
1584    Syntax: Background <Namepath> [Arguments]
1585
1586----------------------------------------
158729 September 2017. Summary of changes for version 20170929:
1588
1589
15901) ACPICA kernel-resident subsystem:
1591
1592Redesigned and implemented an improved ASL While() loop timeout
1593mechanism. This mechanism is used to prevent infinite loops in the kernel
1594AML interpreter caused by either non-responsive hardware or incorrect AML
1595code. The new implementation uses AcpiOsGetTimer instead of a simple
1596maximum loop count, and is thus more accurate and constant across
1597different machines. The default timeout is currently 30 seconds, but this
1598may be adjusted later.
1599
1600Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
1601better reflect the new implementation of the loop timeout mechanism.
1602
1603Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
1604and to fix an off-by-one error. Jung-uk Kim.
1605
1606Fixed an EFI build problem by updating the makefiles to for a new file
1607that was added, utstrsuppt.c
1608
1609
16102) iASL Compiler/Disassembler and Tools:
1611
1612Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
1613includes support in the table disassembler, compiler, and template
1614generator.
1615
1616iASL: Added an exception for an illegal type of recursive method
1617invocation. If a method creates named objects, the first recursive call
1618will fail at runtime. This change adds an error detection at compile time
1619to catch the problem up front. Note: Marking such a method as
1620"serialized" will not help with this problem, because the same thread can
1621acquire the method mutex more than once. Example compiler and runtime
1622output:
1623
1624    Method (MTH1)
1625    {
1626        Name (INT1, 1)
1627        MTH1 ()
1628    }
1629
1630    dsdt.asl     22: MTH1 ()
1631    Error    6152 -  ^ Illegal recursive call to method
1632                       that creates named objects (MTH1)
1633
1634Previous runtime exception:
1635    ACPI Error: [INT1] Namespace lookup failure,
1636    AE_ALREADY_EXISTS (20170831/dswload2-465)
1637
1638iASL: Updated support for External() opcodes to improve namespace
1639management and error detection. These changes are related to issues seen
1640with multiple-segment namespace pathnames within External declarations,
1641such as below:
1642
1643    External(\_SB.PCI0.GFX0, DeviceObj)
1644    External(\_SB.PCI0.GFX0.ALSI)
1645
1646iASL: Implemented support for multi-line error/warning messages. This
1647enables more detailed and helpful error messages as below, from the
1648initial deployment for the duplicate names error:
1649
1650    DSDT.iiii   1692:       Device(PEG2) {
1651    Error    6074 -                  ^ Name already exists in scope
1652(PEG2)
1653
1654        Original name creation/declaration below:
1655        DSDT.iiii     93:   External(\_SB.PCI0.PEG2, DeviceObj)
1656
1657AcpiXtract: Added additional flexibility to support differing input hex
1658dump formats. Specifically, hex dumps that contain partial disassembly
1659and/or comments within the ACPI table data definition. There exist some
1660dump utilities seen in the field that create this type of hex dump (such
1661as Simics). For example:
1662
1663    DSDT @ 0xdfffd0c0 (10999 bytes)
1664        Signature DSDT
1665        Length 10999
1666        Revision 1
1667        Checksum 0xf3 (Ok)
1668        OEM_ID BXPC
1669        OEM_table_id BXDSDT
1670        OEM_revision 1
1671        Creator_id 1280593481
1672        Creator_revision 537399345
1673      0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
1674      ...
1675      2af0: 5f 4c 30 46 00 a4 01
1676
1677Test suite: Miscellaneous changes/fixes:
1678    More cleanup and simplification of makefiles
1679    Continue compilation of test cases after a compile failure
1680    Do not perform binary compare unless both files actually exist
1681
1682iASL: Performed some code/module restructuring. Moved all memory
1683allocation functions to new modules. Two new files, aslallocate.c and
1684aslcache.c
1685
1686----------------------------------------
168731 August 2017. Summary of changes for version 20170831:
1688
1689
16901) ACPICA kernel-resident subsystem:
1691
1692Implemented internal support for full 64-bit addresses that appear in all
1693Generic Address Structure (GAS) structures. Previously, only the lower 32
1694bits were used. Affects the use of GAS structures in the FADT and other
1695tables, as well as the GAS structures passed to the AcpiRead and
1696AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
1697
1698Added header support for the PDTT ACPI table (Processor Debug Trigger
1699Table). Full support in the iASL Data Table Compiler and disassembler is
1700forthcoming.
1701
1702
17032) iASL Compiler/Disassembler and Tools:
1704
1705iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
1706Properties Topology Table) where a flag bit was specified in the wrong
1707bit position ("Line Size Valid", bit 6).
1708
1709iASL: Implemented support for Octal integer constants as defined by the
1710ASL language grammar, per the ACPI specification. Any integer constant
1711that starts with a zero is an octal constant. For example,
1712    Store (037777, Local0) /* Octal constant */
1713    Store (0x3FFF, Local0) /* Hex equivalent */
1714    Store (16383,  Local0) /* Decimal equivalent */
1715
1716iASL: Improved overflow detection for 64-bit string conversions during
1717compilation of integer constants. "Overflow" in this case means a string
1718that represents an integer that is too large to fit into a 64-bit value.
1719Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
1720the low-order 32 bits with a warning, as previously implemented. Several
1721new exceptions are defined that indicate a 64-bit overflow, as well as
1722the base (radix) that was used during the attempted conversion. Examples:
1723    Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF        // AE_HEX_OVERFLOW
1724    Local0 = 01111222233334444555566667777     // AE_OCTAL_OVERFLOW
1725    Local0 = 11112222333344445555666677778888  // AE_DECIMAL_OVERFLOW
1726
1727iASL: Added a warning for the case where a ResourceTemplate is declared
1728with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
1729this case, the resulting template is created with a single END_TAG
1730descriptor, which is essentially useless.
1731
1732iASL: Expanded the -vw option (ignore specific warnings/remarks) to
1733include compilation error codes as well.
1734
1735----------------------------------------
173628 July 2017. Summary of changes for version 20170728:
1737
1738
17391) ACPICA kernel-resident subsystem:
1740
1741Fixed a regression seen with small resource descriptors that could cause
1742an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
1743
1744AML interpreter: Implemented a new feature that allows forward references
1745from individual named references within package objects that are
1746contained within blocks of "module-level code". This provides
1747compatibility with other ACPI implementations and supports existing
1748firmware that depends on this feature. Example:
1749
1750    Name (ABCD, 1)
1751    If (ABCD)                       /* An If() at module-level */
1752    {
1753        Name (PKG1, Package()
1754        {
1755            INT1                    /* Forward reference to object INT1
1756*/
1757        })
1758        Name (INT1, 0x1234)
1759    }
1760
1761AML Interpreter: Fixed a problem with the Alias() operator where aliases
1762to some ASL objects were not handled properly. Objects affected are:
1763Mutex, Event, and OperationRegion.
1764
1765AML Debugger: Enhanced to properly handle AML Alias objects. These
1766objects have one level of indirection which was not fully supported by
1767the debugger.
1768
1769Table Manager: Added support to detect and ignore duplicate SSDTs within
1770the XSDT/RSDT. This error in the XSDT has been seen in the field.
1771
1772EFI and EDK2 support:
1773    Enabled /WX flag for MSVC builds
1774    Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
1775    Added local support for 64-bit multiply and shift operations
1776    Added support to compile acpidump.efi on Windows
1777    Added OSL function stubs for interfaces not used under EFI
1778
1779Added additional support for the _DMA predefined name. _DMA returns a
1780buffer containing a resource template. This change add support within the
1781resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
1782resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
1783
1784
17852) iASL Compiler/Disassembler and Tools:
1786
1787iASL: Fixed a problem where the internal input line buffer(s) could
1788overflow if there are very long lines in the input ASL source code file.
1789Implemented buffer management that automatically increases the size of
1790the buffers as necessary.
1791
1792iASL: Added an option (-vx) to "expect" particular remarks, warnings and
1793errors. If the specified exception is not raised during compilation, the
1794compiler emits an error. This is intended to support the ASL test suite,
1795but may be useful in other contexts.
1796
1797iASL: Implemented a new predefined macro, __METHOD__, which returns a
1798string containing the name of the current control method that is being
1799compiled.
1800
1801iASL: Implemented debugger and table compiler support for the SDEI ACPI
1802table (Software Delegated Exception Interface). James Morse
1803<james.morse@arm.com>
1804
1805Unix/Linux makefiles: Added an option to disable compile optimizations.
1806The disable occurs when the NOOPT flag is set to TRUE.
1807theracermaster@gmail.com
1808
1809Acpidump: Added support for multiple DSDT and FACS tables. This can occur
1810when there are different tables for 32-bit versus 64-bit.
1811
1812Enhanced error reporting for the ASL test suite (ASLTS) by removing
1813unnecessary/verbose text, and emit the actual line number where an error
1814has occurred. These changes are intended to improve the usefulness of the
1815test suite.
1816
1817----------------------------------------
181829 June 2017. Summary of changes for version 20170629:
1819
1820
18211) ACPICA kernel-resident subsystem:
1822
1823Tables: Implemented a deferred ACPI table verification. This is useful
1824for operating systems where the tables cannot be verified in the early
1825initialization stage due to early memory mapping limitations on some
1826architectures. Lv Zheng.
1827
1828Tables: Removed the signature validation for dynamically loaded tables.
1829Provides compatibility with other ACPI implementations. Previously, only
1830SSDT tables were allowed, as per the ACPI specification. Now, any table
1831signature can be used via the Load() operator. Lv Zheng.
1832
1833Tables: Fixed several mutex issues that could cause errors during table
1834acquisition. Lv Zheng.
1835
1836Tables: Fixed a problem where an ACPI warning could be generated if a
1837null pointer was passed to the AcpiPutTable interface. Lv Zheng.
1838
1839Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
1840AcpiPutTable interfaces. This applies to the "late stage" table loading
1841when the use of AcpiPutTable is no longer required (since the system
1842memory manager is fully running and available). Lv Zheng.
1843
1844Fixed/Reverted a regression during processing of resource descriptors
1845that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
1846exception in this case.
1847
1848Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
1849I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
1850
1851Interpreter: Fixed a possible fault if an Alias operator with an invalid
1852or duplicate target is encountered during Alias creation in
1853AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
1854
1855Added an option to use designated initializers for function pointers.
1856Kees Cook <keescook@google.com>
1857
1858
18592) iASL Compiler/Disassembler and Tools:
1860
1861iASL: Allow compilation of External declarations with target pathnames
1862that refer to existing named objects within the table. Erik Schmauss.
1863
1864iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
1865FieldUnit name also is declared via External in the same table. Erik
1866Schmauss.
1867
1868iASL: Allow existing scope names within pathnames used in External
1869statements. For example:
1870    External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
1871    Device (ABCD)
1872
1873iASL: IORT ACPI table: Implemented changes required to decode the new
1874Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
1875compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
1876
1877Disassembler: Don't abort disassembly on errors from External()
1878statements. Erik Schmauss.
1879
1880Disassembler: fixed a possible fault when one of the Create*Field
1881operators references a Resource Template. ACPICA Bugzilla 1396.
1882
1883iASL: In the source code, resolved some naming inconsistences across the
1884parsing support. Fixes confusion between "Parse Op" and "Parse Node".
1885Adds a new file, aslparseop.c
1886
1887----------------------------------------
188831 May 2017. Summary of changes for version 20170531:
1889
1890
18910) ACPI 6.2 support:
1892
1893The ACPI specification version 6.2 has been released and is available at
1894http://uefi.org/specifications
1895
1896This version of ACPICA fully supports the ACPI 6.2 specification. Changes
1897are summarized below.
1898
1899New ACPI tables (Table Compiler/Disassembler/Templates):
1900    HMAT (Heterogeneous Memory Attributes Table)
1901    WSMT (Windows SMM Security Mitigation Table)
1902    PPTT (Processor Properties Topology Table)
1903
1904New subtables for existing ACPI tables:
1905    HEST (New subtable, Arch-deferred machine check)
1906    SRAT (New subtable, Arch-specific affinity structure)
1907    PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
1908
1909Simple updates for existing ACPI tables:
1910    BGRT (two new flag bits)
1911    HEST (New bit defined for several subtables, GHES_ASSIST)
1912
1913New Resource Descriptors and Resource macros (Compiler/Disassembler):
1914    PinConfig()
1915    PinFunction()
1916    PinGroup()
1917    PinGroupConfig()
1918    PinGroupFunction()
1919    New type for hardware error notification (section 18.3.2.9)
1920
1921New predefined names/methods (Compiler/Interpreter):
1922    _HMA (Heterogeneous Memory Attributes)
1923    _LSI (Label Storage Information)
1924    _LSR (Label Storage Read)
1925    _LSW (Label Storage Write)
1926
1927ASL grammar/macro changes (Compiler):
1928    For() ASL macro, implemented with the AML while operator
1929    Extensions to Concatenate operator
1930    Support for multiple definition blocks in same ASL file
1931    Clarification for Buffer operator
1932    Allow executable AML code underneath all scopes (Devices, etc.)
1933    Clarification/change for the _OSI return value
1934    ASL grammar update for reference operators
1935    Allow a zero-length string for AML filename in DefinitionBlock
1936
1937Miscellaneous:
1938    New device object notification value
1939    Remove a notify value (0x0C) for graceful shutdown
1940    New UUIDs for processor/cache properties and
1941        physical package property
1942    New _HID, ACPI0014 (Wireless Power Calibration Device)
1943
1944
19451) ACPICA kernel-resident subsystem:
1946
1947Added support to disable ACPI events on hardware-reduced platforms.
1948Eliminates error messages of the form "Could not enable fixed event". Lv
1949Zheng
1950
1951Fixed a problem using Device/Thermal objects with the ObjectType and
1952DerefOf ASL operators. This support had not been fully/properly
1953implemented.
1954
1955Fixed a problem where if a Buffer object containing a resource template
1956was longer than the actual resource template, an error was generated --
1957even though the AML is legal. This case has been seen in the field.
1958
1959Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
1960The values for DUAL_PIC and MULTIPLE_APIC were reversed.
1961
1962Added header file changes for the TPM2 ACPI table. Update to new version
1963of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
1964
1965Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
1966These interfaces are intended to be used only in conjunction with the
1967predefined _DLM method (Device Lock Method). "This object appears in a
1968device scope when AML access to the device must be synchronized with the
1969OS environment".
1970
1971Example Code and Data Size: These are the sizes for the OS-independent
1972acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1973debug version of the code includes the debug output trace mechanism and
1974has a much larger code and data size.
1975
1976  Current Release:
1977    Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
1978    Debug Version:     204.0K Code, 84.3K Data, 288.3K Total
1979  Previous Release:
1980    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
1981    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
1982
1983
19842) iASL Compiler/Disassembler and Tools:
1985
1986iASL: Fixed a problem where an External() declaration could not refer to
1987a Field Unit. Erik Schmauss.
1988
1989Disassembler: Improved support for the Switch/Case operators. This
1990feature will disassemble AML code back to the original Switch operators
1991when possible, instead of an If..Else sequence. David Box
1992
1993iASL and disassembler: Improved the handling of multiple extraneous
1994parentheses for both ASL input and disassembled ASL output.
1995
1996Improved the behavior of the iASL compiler and disassembler to detect
1997improper use of external declarations
1998
1999Disassembler: Now aborts immediately upon detection of an unknown AML
2000opcode. The AML parser has no real way to recover from this, and can
2001result in the creation of an ill-formed parse tree that causes errors
2002later during the disassembly.
2003
2004All tools: Fixed a problem where the Unix application OSL did not handle
2005control-c correctly. For example, a control-c could incorrectly wake the
2006debugger.
2007
2008AcpiExec: Improved the Control-C handling and added a handler for
2009segmentation faults (SIGSEGV). Supports both Windows and Unix-like
2010environments.
2011
2012Reduced the verbosity of the generic unix makefiles. Previously, each
2013compilation displayed the full set of compiler options. This has been
2014eliminated as the options are easily inspected within the makefiles. Each
2015compilation now results in a single line of output.
2016
2017----------------------------------------
201803 March 2017. Summary of changes for version 20170303:
2019
2020
20210) ACPICA licensing:
2022
2023The licensing information at the start of each source code module has
2024been updated. In addition to the Intel license, the dual GPLv2/BSD
2025license has been added for completeness. Now, a single version of the
2026source code should be suitable for all ACPICA customers. This is the
2027major change for this release since it affects all source code modules.
2028
2029
20301) ACPICA kernel-resident subsystem:
2031
2032Fixed two issues with the common asltypes.h header that could cause
2033problems in some environments: (Kim Jung-uk)
2034    Removed typedef for YY_BUFFER_STATE ?
2035       Fixes an error with earlier versions of Flex.
2036    Removed use of FILE typedef (which is only defined in stdio.h)
2037
2038
20392) iASL Compiler/Disassembler and Tools:
2040
2041Disassembler: fixed a regression introduced in 20170224. A fix for a
2042memory leak related to resource descriptor tags (names) could fault when
2043the disassembler was generated with 64-bit compilers.
2044
2045The ASLTS test suite has been updated to implement a new testing
2046architecture. During generation of the suite from ASL source, both the
2047ASL and ASL+ compilers are now validated, as well as the disassembler
2048itself (Erik Schmauss). The architecture executes as follows:
2049
2050    For every ASL source module:
2051        Compile (legacy ASL compilation)
2052        Disassemble the resulting AML to ASL+ source code
2053        Compile the new ASL+ module
2054        Perform a binary compare on the legacy AML and the new ASL+ AML
2055    The ASLTS suite then executes normally using the AML binaries.
2056
2057----------------------------------------
205824 February 2017. Summary of changes for version 20170224:
2059
2060
20611) ACPICA kernel-resident subsystem:
2062
2063Interpreter: Fixed two issues with the control method return value auto-
2064repair feature, where an attempt to double-delete an internal object
2065could result in an ACPICA warning (for _CID repair and others). No fault
2066occurs, however, because the attempted deletion (actually a release to an
2067internal cache) is detected and ignored via object poisoning.
2068
2069Debugger: Fixed an AML interpreter mutex issue during the single stepping
2070of control methods. If certain debugger commands are executed during
2071stepping, a mutex acquire/release error could occur. Lv Zheng.
2072
2073Fixed some issues generating ACPICA with the Intel C compiler by
2074restoring the original behavior and compiler-specific include file in
2075acenv.h. Lv Zheng.
2076
2077Example Code and Data Size: These are the sizes for the OS-independent
2078acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2079debug version of the code includes the debug output trace mechanism and
2080has a much larger code and data size.
2081
2082  Current Release:
2083    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
2084    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
2085  Previous Release:
2086    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2087    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2088
2089
20902) iASL Compiler/Disassembler and Tools:
2091
2092iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
2093tool has been designed, implemented, and included in this release. The
2094key feature of this utility is that the original comments within the
2095input ASL file are preserved during the conversion process, and included
2096within the converted ASL+ file -- thus creating a transparent conversion
2097of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
2098
2099    Usage: iasl -ca <ASL-filename>  // Output is a .dsl file with
2100converted code
2101
2102iASL/Disassembler: Improved the detection and correct disassembly of
2103Switch/Case operators. This feature detects sequences of if/elseif/else
2104operators that originated from ASL Switch/Case/Default operators and
2105emits the original operators. David Box.
2106
2107iASL: Improved the IORT ACPI table support in the following areas. Lv
2108Zheng:
2109    Clear MappingOffset if the MappingCount is zero.
2110    Fix the disassembly of the SMMU GSU interrupt offset.
2111    Update the template file for the IORT table.
2112
2113Disassembler: Enhanced the detection and disassembly of resource
2114template/descriptor within a Buffer object. An EndTag descriptor is now
2115required to have a zero second byte, since all known ASL compilers emit
2116this. This helps eliminate incorrect decisions when a buffer is
2117disassembled (false positives on resource templates).
2118
2119----------------------------------------
212019 January 2017. Summary of changes for version 20170119:
2121
2122
21231) General ACPICA software:
2124
2125Entire source code base: Added the 2017 copyright to all source code
2126legal/licensing module headers and utility/tool signons. This includes
2127the standard Linux dual-license header. This affects virtually every file
2128in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
2129the ACPICA test suite.
2130
2131
21322) iASL Compiler/Disassembler and Tools:
2133
2134iASL: Removed/fixed an inadvertent remark when a method argument
2135containing a reference is used as a target operand within the method (and
2136never used as a simple argument), as in the example below. Jeffrey Hugo.
2137
2138    dsdt.asl   1507:    Store(0x1, Arg0)
2139    Remark   2146 -                ^ Method Argument is never used (Arg0)
2140
2141All tools: Removed the bit width of the compiler that generated the tool
2142from the common signon for all user space tools. This proved to be
2143confusing and unnecessary. This includes similar removal of HARDWARE_NAME
2144from the generic makefiles (Thomas Petazzoni). Example below.
2145
2146    Old:
2147    ASL+ Optimizing Compiler version 20170119-32
2148    ASL+ Optimizing Compiler version 20170119-64
2149
2150    New:
2151    ASL+ Optimizing Compiler version 20170119
2152
2153----------------------------------------
215422 December 2016. Summary of changes for version 20161222:
2155
2156
21571) ACPICA kernel-resident subsystem:
2158
2159AML Debugger: Implemented a new mechanism to simplify and enhance
2160debugger integration into all environments, including kernel debuggers
2161and user-space utilities, as well as remote debug services. This
2162mechanism essentially consists of new OSL interfaces to support debugger
2163initialization/termination, as well as wait/notify interfaces to perform
2164the debugger handshake with the host. Lv Zheng.
2165
2166    New OSL interfaces:
2167        AcpiOsInitializeDebugger (void)
2168        AcpiOsTerminateDebugger (void)
2169        AcpiOsWaitCommandReady (void)
2170        AcpiOsNotifyCommandComplete (void)
2171
2172    New OS services layer:
2173        osgendbg.c -- Example implementation, and used for AcpiExec
2174
2175Update for Generic Address Space (GAS) support: Although the AccessWidth
2176and/or BitOffset fields of the GAS are not often used, this change now
2177fully supports these fields. This affects the internal support for FADT
2178registers, registers in other ACPI data tables, and the AcpiRead and
2179AcpiWrite public interfaces. Lv Zheng.
2180
2181Sleep support: In order to simplify integration of ACPI sleep for the
2182various host operating systems, a new OSL interface has been introduced.
2183AcpiOsEnterSleep allows the host to perform any required operations
2184before the final write to the sleep control register(s) is performed by
2185ACPICA. Lv Zheng.
2186
2187    New OSL interface:
2188        AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
2189
2190    Called from these internal interfaces:
2191        AcpiHwLegacySleep
2192        AcpiHwExtendedSleep
2193
2194EFI support: Added a very small EFI/ACPICA example application. Provides
2195a simple demo for EFI integration, as well as assisting with resolution
2196of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
2197
2198    source/tools/efihello/efihello.c
2199
2200Local C library: Implemented several new functions to enhance ACPICA
2201portability, for environments where these clib functions are not
2202available (such as EFI). Lv Zheng:
2203    putchar
2204    getchar
2205    strpbrk
2206    strtok
2207    memmove
2208
2209Fixed a regression where occasionally a valid resource descriptor was
2210incorrectly detected as invalid at runtime, and a
2211AE_AML_NO_RESOURCE_END_TAG was returned.
2212
2213Fixed a problem with the recently implemented support that enables
2214control method invocations as Target operands to many ASL operators.
2215Warnings of this form: "Needed type [Reference], found [Processor]" were
2216seen at runtime for some method invocations.
2217
2218Example Code and Data Size: These are the sizes for the OS-independent
2219acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2220debug version of the code includes the debug output trace mechanism and
2221has a much larger code and data size.
2222
2223  Current Release:
2224    Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
2225    Debug Version:     201.7K Code, 82.7K Data, 284.4K Total
2226  Previous Release:
2227    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
2228    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
2229
2230
22312) iASL Compiler/Disassembler and Tools:
2232
2233Disassembler: Enhanced output by adding the capability to detect and
2234disassemble ASL Switch/Case statements back to the original ASL source
2235code instead of if/else blocks. David Box.
2236
2237AcpiHelp: Split a large file into separate files based upon
2238functionality/purpose. New files are:
2239    ahaml.c
2240    ahasl.c
2241
2242----------------------------------------
224317 November 2016. Summary of changes for version 20161117:
2244
2245
22461) ACPICA kernel-resident subsystem:
2247
2248Table Manager: Fixed a regression introduced in 20160729, "FADT support
2249cleanup". This was an attempt to remove all references in the source to
2250the FADT version 2, which never was a legal version number. It was
2251skipped because it was an early version of 64-bit support that was
2252eventually abandoned for the current 64-bit support.
2253
2254Interpreter: Fixed a problem where runtime implicit conversion was
2255incorrectly disabled for the ASL operators below. This brings the
2256behavior into compliance with the ACPI specification:
2257    FromBCD
2258    ToBCD
2259    ToDecimalString
2260    ToHexString
2261    ToInteger
2262    ToBuffer
2263
2264Table Manager: Added a new public interface, AcpiPutTable, used to
2265release and free an ACPI table returned by AcpiGetTable and related
2266interfaces. Lv Zheng.
2267
2268Example Code and Data Size: These are the sizes for the OS-independent
2269acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2270debug version of the code includes the debug output trace mechanism and
2271has a much larger code and data size.
2272
2273  Current Release:
2274    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
2275    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
2276  Previous Release:
2277    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
2278    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
2279
2280
22812) iASL Compiler/Disassembler and Tools:
2282
2283Disassembler: Fixed a regression for disassembly of Resource Template.
2284Detection of templates in the AML stream missed some types of templates.
2285
2286iASL: Fixed a problem where an Access Size error was returned for the PCC
2287address space when the AccessSize of the GAS register is greater than a
2288DWORD. Hoan Tran.
2289
2290iASL: Implemented several grammar changes for the operators below. These
2291changes are slated for the next version of the ACPI specification:
2292    RefOf        - Disallow method invocation as an operand
2293    CondRefOf    - Disallow method invocation as an operand
2294    DerefOf      - Disallow operands that use the result from operators
2295that
2296                   do not return a reference (Changed TermArg to
2297SuperName).
2298
2299iASL: Control method invocations are now allowed for Target operands, as
2300per the ACPI specification. Removed error for using a control method
2301invocation as a Target operand.
2302
2303Disassembler: Improved detection of Resource Templates, Unicode, and
2304Strings within Buffer objects. These subtypes do not contain a specific
2305opcode to indicate the originating ASL code, and they must be detected by
2306other means within the disassembler.
2307
2308iASL: Implemented an optimization improvement for 32-bit ACPI tables
2309(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
2310only after 64-bit to 32-bit truncation. A truncation warning message is
2311still emitted, however.
2312
2313AcpiXtract: Implemented handling for both types of line terminators (LF
2314or CR/LF) so that it can accept AcpiDump output files from any system.
2315Peter Wu.
2316
2317AcpiBin: Added two new options for comparing AML files:
2318    -a: compare and display ALL mismatches
2319    -o: start compare at this offset into the second file
2320
2321----------------------------------------
232230 September 2016. Summary of changes for version 20160930:
2323
2324
23251) ACPICA kernel-resident subsystem:
2326
2327Fixed a regression in the internal AcpiTbFindTable function where a non
2328AE_OK exception could inadvertently be returned even if the function did
2329not fail. This problem affects the following operators:
2330    DataTableRegion
2331    LoadTable
2332
2333Fixed a regression in the LoadTable operator where a load to any
2334namespace location other than the root no longer worked properly.
2335
2336Increased the maximum loop count value that will result in the
2337AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
2338prevent infinite loops within the AML interpreter and thus the host OS
2339kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
23401,048,575).
2341
2342Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
2343acpixf.h file. This allows hosts to easily configure the maximum loop
2344count at runtime.
2345
2346Removed an illegal character in the strtoul64.c file. This character
2347caused errors with some C compilers.
2348
2349Example Code and Data Size: These are the sizes for the OS-independent
2350acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2351debug version of the code includes the debug output trace mechanism and
2352has a much larger code and data size.
2353
2354  Current Release:
2355    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
2356    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
2357  Previous Release:
2358    Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
2359    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
2360
2361
23622) iASL Compiler/Disassembler and Tools:
2363
2364Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
2365the simpler ASL ElseIf keyword. During the conversion, a trailing If
2366block could be lost and missing from the disassembled output.
2367
2368iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
2369the missing rule caused a parse error when using the Index operator as an
2370operand to ObjectType. This construct now compiles properly. Example:
2371    ObjectType(PKG1[4]).
2372
2373iASL: Correctly handle unresolved symbols in the hardware map file (-lm
2374option). Previously, unresolved symbols could cause a protection fault.
2375Such symbols are now marked as unresolved in the map file.
2376
2377iASL: Implemented support to allow control method invocations as an
2378operand to the ASL DeRefOf operator. Example:
2379    DeRefOf(MTH1(Local0))
2380
2381Disassembler: Improved support for the ToPLD ASL macro. Detection of a
2382possible _PLD buffer now includes examination of both the normal buffer
2383length (16 or 20) as well as the surrounding AML package length.
2384
2385Disassembler: Fixed a problem with the decoding of complex expressions
2386within the Divide operator for ASL+. For the case where both the quotient
2387and remainder targets are specified, the entire statement cannot be
2388disassembled. Previously, the output incorrectly contained a mix of ASL-
2389and ASL+ operators. This mixed statement causes a syntax error when
2390compiled. Example:
2391    Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly
2392disassembled to:
2393    Divide (INT1 + 6, 128, RSLT, QUOT)
2394
2395iASL/Tools: Added support to process AML and non-AML ACPI tables
2396consistently. For the disassembler and AcpiExec, allow all types of ACPI
2397tables (AML and data tables). For the iASL -e option, allow only AML
2398tables (DSDT/SSDT).
2399
2400----------------------------------------
240131 August 2016. Summary of changes for version 20160831:
2402
2403
24041) ACPICA kernel-resident subsystem:
2405
2406Improve support for the so-called "module-level code", which is defined
2407to be math, logical and control AML opcodes that appear outside of any
2408control method. This change improves the support by adding more opcodes
2409that can be executed in the manner. Some other issues have been solved,
2410and the ASL grammar changes to support such code under all scope
2411operators (Device, etc.) are complete. Lv Zheng.
2412
2413UEFI support: these OSL functions have been implemented. This is an
2414additional step toward supporting the AcpiExec utility natively (with
2415full hardware access) under UEFI. Marcelo Ferreira.
2416    AcpiOsReadPciConfiguration
2417    AcpiOsWritePciConfiguration
2418
2419Fixed a possible mutex error during control method auto-serialization. Lv
2420Zheng.
2421
2422Updated support for the Generic Address Structure by fully implementing
2423all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
2424Zheng.
2425
2426Updated the return value for the internal _OSI method. Instead of
24270xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
2428for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
2429implementations, and will be reflected and clarified in the next version
2430of the ACPI specification.
2431
2432Implemented two new table events that can be passed to an ACPICA table
2433handler. These events are used to indicate a table installation or
2434uninstallation. These events are used in addition to existed table load
2435and unload events. Lv Zheng.
2436
2437Implemented a cleanup for all internal string-to-integer conversions.
2438Consolidate multiple versions of this functionality and limit possible
2439bases to either 10 or 16 to simplify the code. Adds a new file,
2440utstrtoul64.
2441
2442Cleanup the inclusion order of the various compiler-specific headers.
2443This simplifies build configuration management. The compiler-specific
2444headers are now split out from the host-specific headers. Lv Zheng.
2445
2446Example Code and Data Size: These are the sizes for the OS-independent
2447acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2448debug version of the code includes the debug output trace mechanism and
2449has a much larger code and data size.
2450
2451  Current Release:
2452    Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
2453    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
2454
2455
24562) iASL Compiler/Disassembler and Tools:
2457
2458iASL/AcpiExec: Added a command line option to display the build date/time
2459of the tool (-vd). This can be useful to verify that the correct version
2460of the tools are being used.
2461
2462AML Debugger: Implemented a new subcommand ("execute predef") to execute
2463all predefined control methods and names within the current namespace.
2464This can be useful for debugging problems with ACPI tables and the ACPI
2465namespace.
2466
2467----------------------------------------
246829 July 2016. Summary of changes for version 20160729:
2469
2470
24711) ACPICA kernel-resident subsystem:
2472
2473Implemented basic UEFI support for the various ACPICA tools. This
2474includes:
24751) An OSL to implement the various AcpiOs* interfaces on UEFI.
24762) Support to obtain the ACPI tables on UEFI.
24773) Local implementation of required C library functions not available on
2478UEFI.
24794) A front-end (main) function for the tools for UEFI-related
2480initialization.
2481
2482The initial deployment of this support is the AcpiDump utility executing
2483as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
2484Current environments supported are Linux/Unix. MSVC generation is not
2485supported at this time. See the generate/efi/README file for build
2486instructions. Lv Zheng.
2487
2488Future plans include porting the AcpiExec utility to execute natively on
2489the platform with I/O and memory access. This will allow viewing/dump of
2490the platform namespace and native execution of ACPI control methods that
2491access the actual hardware. To fully implement this support, the OSL
2492functions below must be implemented with UEFI interfaces. Any community
2493help in the implementation of these functions would be appreciated:
2494    AcpiOsReadPort
2495    AcpiOsWritePort
2496    AcpiOsReadMemory
2497    AcpiOsWriteMemory
2498    AcpiOsReadPciConfiguration
2499    AcpiOsWritePciConfiguration
2500
2501Restructured and standardized the C library configuration for ACPICA,
2502resulting in the various configuration options below. This includes a
2503global restructuring of the compiler-dependent and platform-dependent
2504include files. These changes may affect the existing platform-dependent
2505configuration files on some hosts. Lv Zheng.
2506
2507The current C library configuration options appear below. For any issues,
2508it may be helpful to examine the existing compiler-dependent and
2509platform-dependent files as examples. Lv Zheng.
2510
25111) Linux kernel:
2512    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2513library.
2514    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
25152) Unix/Windows/BSD applications:
2516    ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
2517library.
2518    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
25193) UEFI applications:
2520    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2521library.
2522    ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
25234) UEFI applications (EDK2/StdLib):
2524    ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
2525    ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
2526
2527
2528AML interpreter: "module-level code" support. Allows for execution of so-
2529called "executable" AML code (math/logical operations, etc.) outside of
2530control methods not just at the module level (top level) but also within
2531any scope declared outside of a control method - Scope{}, Device{},
2532Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
2533
2534Simplified the configuration of the "maximum AML loops" global option by
2535adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
2536modified at runtime.
2537
2538
2539Example Code and Data Size: These are the sizes for the OS-independent
2540acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2541debug version of the code includes the debug output trace mechanism and
2542has a much larger code and data size.
2543
2544  Current Release:
2545    Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
2546    Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
2547
2548
25492) iASL Compiler/Disassembler and Tools:
2550
2551iASL: Add full support for the RASF ACPI table (RAS Features Table).
2552Includes disassembler, data table compiler, and header support.
2553
2554iASL Expand "module-level code" support. Allows for
2555compilation/disassembly of so-called "executable" AML code (math/logical
2556operations, etc.) outside of control methods not just at the module level
2557(top level) but also within any scope declared outside of a control
2558method - Scope{}, Device{}, Processor{}, PowerResource{}, and
2559ThermalZone{}.
2560
2561AcpiDump: Added support for dumping all SSDTs on newer versions of
2562Windows. These tables are now easily available -- SSDTs are not available
2563through the registry on older versions.
2564
2565----------------------------------------
256627 May 2016. Summary of changes for version 20160527:
2567
2568
25691) ACPICA kernel-resident subsystem:
2570
2571Temporarily reverted the new arbitrary bit length/alignment support in
2572AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
2573a number of regressions with the new code that need to be fully resolved
2574and tested before this support can be finally integrated into ACPICA.
2575Apologies for any inconveniences these issues may have caused.
2576
2577The ACPI message macros are not configurable (ACPI_MSG_ERROR,
2578ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
2579and ACPI_MSG_BIOS_WARNING). Lv Zheng.
2580
2581Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
2582option. Adds a new return macro, return_STR. Junk-uk Kim.
2583
2584Example Code and Data Size: These are the sizes for the OS-independent
2585acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2586debug version of the code includes the debug output trace mechanism and
2587has a much larger code and data size.
2588
2589  Current Release:
2590    Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
2591    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2592  Previous Release:
2593    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2594    Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
2595
2596----------------------------------------
259722 April 2016. Summary of changes for version 20160422:
2598
25991) ACPICA kernel-resident subsystem:
2600
2601Fixed a regression in the GAS (generic address structure) arbitrary bit
2602support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
2603and incorrect return values. Lv Zheng. ACPICA BZ 1270.
2604
2605ACPI 6.0: Added support for new/renamed resource macros. One new argument
2606was added to each of these macros, and the original name has been
2607deprecated. The AML disassembler will always disassemble to the new
2608names. Support for the new macros was added to iASL, disassembler,
2609resource manager, and the acpihelp utility. ACPICA BZ 1274.
2610
2611    I2cSerialBus  -> I2cSerialBusV2
2612    SpiSerialBus  -> SpiSerialBusV2
2613    UartSerialBus -> UartSerialBusV2
2614
2615ACPI 6.0: Added support for a new integer field that was appended to the
2616package object returned by the _BIX method. This adds iASL compile-time
2617and AML runtime error checking. ACPICA BZ 1273.
2618
2619ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
2620Subspace Type2" (Headers, Disassembler, and data table compiler).
2621
2622Example Code and Data Size: These are the sizes for the OS-independent
2623acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2624debug version of the code includes the debug output trace mechanism and
2625has a much larger code and data size.
2626
2627  Current Release:
2628    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2629    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2630  Previous Release:
2631    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2632    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2633
2634
26352) iASL Compiler/Disassembler and Tools:
2636
2637iASL: Implemented an ASL grammar extension to allow/enable executable
2638"module-level code" to be created and executed under the various
2639operators that create new scopes. This type of AML code is already
2640supported in all known AML interpreters, and the grammar change will
2641appear in the next version of the ACPI specification. Simplifies the
2642conditional runtime creation of named objects under these object types:
2643
2644    Device
2645    PowerResource
2646    Processor
2647    Scope
2648    ThermalZone
2649
2650iASL: Implemented a new ASL extension, a "For" loop macro to add greater
2651ease-of-use to the ASL language. The syntax is similar to the
2652corresponding C operator, and is implemented with the existing AML While
2653opcode -- thus requiring no changes to existing AML interpreters.
2654
2655    For (Initialize, Predicate, Update) {TermList}
2656
2657Grammar:
2658    ForTerm :=
2659        For (
2660            Initializer    // Nothing | TermArg => ComputationalData
2661            Predicate      // Nothing | TermArg => ComputationalData
2662            Update         // Nothing | TermArg => ComputationalData
2663        ) {TermList}
2664
2665
2666iASL: The _HID/_ADR detection and validation has been enhanced to search
2667under conditionals in order to allow these objects to be conditionally
2668created at runtime.
2669
2670iASL: Fixed several issues with the constant folding feature. The
2671improvement allows better detection and resolution of statements that can
2672be folded at compile time. ACPICA BZ 1266.
2673
2674iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
2675conversion to the ASL ElseIf operator where incorrect ASL code could be
2676generated.
2677
2678iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
2679sometimes an extra (and extraneous) set of parentheses were emitted for
2680some combinations of operators. Although this did not cause any problems
2681with recompilation of the disassembled code, it made the code more
2682difficult to read. David Box. ACPICA BZ 1231.
2683
2684iASL: Changed to ignore the unreferenced detection for predefined names
2685of resource descriptor elements, when the resource descriptor is
2686created/defined within a control method.
2687
2688iASL: Disassembler: Fix a possible fault with externally declared Buffer
2689objects.
2690
2691----------------------------------------
269218 March 2016. Summary of changes for version 20160318:
2693
26941) ACPICA kernel-resident subsystem:
2695
2696Added support for arbitrary bit lengths and bit offsets for registers
2697defined by the Generic Address Structure. Previously, only aligned bit
2698lengths of 8/16/32/64 were supported. This was sufficient for many years,
2699but recently some machines have been seen that require arbitrary bit-
2700level support. ACPICA BZ 1240. Lv Zheng.
2701
2702Fixed an issue where the \_SB._INI method sometimes must be evaluated
2703before any _REG methods are evaluated. Lv Zheng.
2704
2705Implemented several changes related to ACPI table support
2706(Headers/Disassembler/TableCompiler):
2707NFIT: For ACPI 6.1, updated to add some additional new fields and
2708constants.
2709FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
27106).
2711DMAR: Added new constants per the 10/2014 DMAR spec.
2712IORT: Added new subtable per the 10/2015 IORT spec.
2713HEST: For ACPI 6.1, added new constants and new subtable.
2714DBG2: Added new constants per the 12/2015 DBG2 spec.
2715FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
2716ACPICA BZ 1249.
2717ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
2718
2719Updated header support for the DMAR table to match the current version of
2720the related spec.
2721
2722Added extensions to the ASL Concatenate operator to allow any ACPI object
2723to be passed as an operand. Any object other than Integer/String/Buffer
2724simply returns a string containing the object type. This extends the
2725usefulness of the Printf macros. Previously, Concatenate would abort the
2726control method if a non-data object was encountered.
2727
2728ACPICA source code: Deployed the C "const" keyword across the source code
2729where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
2730
2731Example Code and Data Size: These are the sizes for the OS-independent
2732acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2733debug version of the code includes the debug output trace mechanism and
2734has a much larger code and data size.
2735
2736  Current Release:
2737    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2738    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2739  Previous Release:
2740    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2741    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
2742
2743
27442) iASL Compiler/Disassembler and Tools:
2745
2746iASL/Disassembler: Improved the heuristic used to determine the number of
2747arguments for an externally defined control method (a method in another
2748table). Although this is an improvement, there is no deterministic way to
2749"guess" the number of method arguments. Only the ACPI 6.0 External opcode
2750will completely solve this problem as it is deployed (automatically) in
2751newer BIOS code.
2752
2753iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
2754statements that could cause errors when the disassembled file is
2755compiled. ACPICA BZ 1243. David Box.
2756
2757iASL: Fixed a regression caused by the merger of the two versions of the
2758local strtoul64. Because of a dependency on a global variable, strtoul64
2759could return an error for integers greater than a 32-bit value. ACPICA BZ
27601260.
2761
2762iASL: Fixed a regression where a fault could occur for an ASL Return
2763statement if it invokes a control method that is not resolved. ACPICA BZ
27641264.
2765
2766AcpiXtract: Improved input file validation: detection of binary files and
2767non-acpidump text files.
2768
2769----------------------------------------
277012 February 2016. Summary of changes for version 20160212:
2771
27721) ACPICA kernel-resident subsystem:
2773
2774Implemented full support for the ACPI 6.1 specification (released in
2775January). This version of the specification is available at:
2776http://www.uefi.org/specifications
2777
2778Only a relatively small number of changes were required in ACPICA to
2779support ACPI 6.1, in these areas:
2780- New predefined names
2781- New _HID values
2782- A new subtable for HEST
2783- A few other header changes for new values
2784
2785Ensure \_SB_._INI is executed before any _REG methods are executed. There
2786appears to be existing BIOS code that relies on this behavior. Lv Zheng.
2787
2788Reverted a change made in version 20151218 which enabled method
2789invocations to be targets of various ASL operators (SuperName and Target
2790grammar elements). While the new behavior is supported by the ACPI
2791specification, other AML interpreters do not support this behavior and
2792never will. The ACPI specification will be updated for ACPI 6.2 to remove
2793this support. Therefore, the change was reverted to the original ACPICA
2794behavior.
2795
2796ACPICA now supports the GCC 6 compiler.
2797
2798Current Release: (Note: build changes increased sizes)
2799    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2800    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
2801Previous Release:
2802    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2803    Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
2804
2805
28062) iASL Compiler/Disassembler and Tools:
2807
2808Completed full support for the ACPI 6.0 External() AML opcode. The
2809compiler emits an external AML opcode for each ASL External statement.
2810This opcode is used by the disassembler to assist with the disassembly of
2811external control methods by specifying the required number of arguments
2812for the method. AML interpreters do not use this opcode. To ensure that
2813interpreters do not even see the opcode, a block of one or more external
2814opcodes is surrounded by an "If(0)" construct. As this feature becomes
2815commonly deployed in BIOS code, the ability of disassemblers to correctly
2816disassemble AML code will be greatly improved. David Box.
2817
2818iASL: Implemented support for an optional cross-reference output file.
2819The -lx option will create a the cross-reference file with the suffix
2820"xrf". Three different types of cross-reference are created in this file:
2821- List of object references made from within each control method
2822- Invocation (caller) list for each user-defined control method
2823- List of references to each non-method object in the namespace
2824
2825iASL: Method invocations as ASL Target operands are now disallowed and
2826flagged as errors in preparation for ACPI 6.2 (see the description of the
2827problem above).
2828
2829----------------------------------------
28308 January 2016. Summary of changes for version 20160108:
2831
28321) ACPICA kernel-resident subsystem:
2833
2834Updated all ACPICA copyrights and signons to 2016: Added the 2016
2835copyright to all source code module headers and utility/tool signons.
2836This includes the standard Linux dual-license header. This affects
2837virtually every file in the ACPICA core subsystem, iASL compiler, all
2838ACPICA utilities, and the ACPICA test suite.
2839
2840Fixed a regression introduced in version 20151218 concerning the
2841execution of so-called module-level ASL/AML code. Namespace objects
2842created under a module-level If() construct were not properly/fully
2843entered into the namespace and could cause an interpreter fault when
2844accessed.
2845
2846Example Code and Data Size: These are the sizes for the OS-independent
2847acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2848debug version of the code includes the debug output trace mechanism and
2849has a much larger code and data size.
2850
2851Current Release:
2852    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2853    Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
2854  Previous Release:
2855    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2856    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
2857
2858
28592) iASL Compiler/Disassembler and Tools:
2860
2861Fixed a problem with the compilation of the GpioIo and GpioInt resource
2862descriptors. The _PIN field name was incorrectly defined to be an array
2863of 32-bit values, but the _PIN values are in fact 16 bits each. This
2864would cause incorrect bit width warnings when using Word (16-bit) fields
2865to access the descriptors.
2866
2867
2868----------------------------------------
286918 December 2015. Summary of changes for version 20151218:
2870
28711) ACPICA kernel-resident subsystem:
2872
2873Implemented per-AML-table execution of "module-level code" as individual
2874ACPI tables are loaded into the namespace during ACPICA initialization.
2875In other words, any module-level code within an AML table is executed
2876immediately after the table is loaded, instead of batched and executed
2877after all of the tables have been loaded. This provides compatibility
2878with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
2879David Box.
2880
2881To fully support the feature above, the default operation region handlers
2882for the SystemMemory, SystemIO, and PCI_Config address spaces are now
2883installed before any ACPI tables are loaded. This enables module-level
2884code to access these address spaces during the table load and module-
2885level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
2886Box.
2887
2888Implemented several changes to the internal _REG support in conjunction
2889with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
2890utilities for the changes above. Although these tools were changed, host
2891operating systems that simply use the default handlers for SystemMemory,
2892SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
2893
2894For example, in the code below, DEV1 is conditionally added to the
2895namespace by the DSDT via module-level code that accesses an operation
2896region. The SSDT references DEV1 via the Scope operator. DEV1 must be
2897created immediately after the DSDT is loaded in order for the SSDT to
2898successfully reference DEV1. Previously, this code would cause an
2899AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
2900fully supported by ACPICA.
2901
2902    DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
2903    {
2904        OperationRegion (OPR1, SystemMemory, 0x400, 32)
2905        Field (OPR1, AnyAcc, NoLock, Preserve)
2906        {
2907            FLD1, 1
2908        }
2909        If (FLD1)
2910        {
2911            Device (\DEV1)
2912            {
2913            }
2914        }
2915    }
2916    DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
2917    {
2918        External (\DEV1, DeviceObj)
2919        Scope (\DEV1)
2920        {
2921        }
2922    }
2923
2924Fixed an AML interpreter problem where control method invocations were
2925not handled correctly when the invocation was itself a SuperName argument
2926to another ASL operator. In these cases, the method was not invoked.
2927ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
2928argument:
2929    Store
2930    Acquire, Wait
2931    CondRefOf, RefOf
2932    Decrement, Increment
2933    Load, Unload
2934    Notify
2935    Signal, Release, Reset
2936    SizeOf
2937
2938Implemented automatic String-to-ObjectReference conversion support for
2939packages returned by predefined names (such as _DEP). A common BIOS error
2940is to add double quotes around an ObjectReference namepath, which turns
2941the reference into an unexpected string object. This support detects the
2942problem and corrects it before the package is returned to the caller that
2943invoked the method. Lv Zheng.
2944
2945Implemented extensions to the Concatenate operator. Concatenate now
2946accepts any type of object, it is not restricted to simply
2947Integer/String/Buffer. For objects other than these 3 basic data types,
2948the argument is treated as a string containing the name of the object
2949type. This expands the utility of Concatenate and the Printf/Fprintf
2950macros. ACPICA BZ 1222.
2951
2952Cleaned up the output of the ASL Debug object. The timer() value is now
2953optional and no longer emitted by default. Also, the basic data types of
2954Integer/String/Buffer are simply emitted as their values, without a data
2955type string -- since the data type is obvious from the output. ACPICA BZ
29561221.
2957
2958Example Code and Data Size: These are the sizes for the OS-independent
2959acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2960debug version of the code includes the debug output trace mechanism and
2961has a much larger code and data size.
2962
2963  Current Release:
2964    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2965    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
2966  Previous Release:
2967    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
2968    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
2969
2970
29712) iASL Compiler/Disassembler and Tools:
2972
2973iASL: Fixed some issues with the ASL Include() operator. This operator
2974was incorrectly defined in the iASL parser rules, causing a new scope to
2975be opened for the code within the include file. This could lead to
2976several issues, including allowing ASL code that is technically illegal
2977and not supported by AML interpreters. Note, this does not affect the
2978related #include preprocessor operator. ACPICA BZ 1212.
2979
2980iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
2981operator is essentially an ASL macro since there is no AML opcode
2982associated with it. The code emitted by the iASL compiler for ElseIf is
2983an Else opcode followed immediately by an If opcode. The disassembler
2984will now emit an ElseIf if it finds an Else immediately followed by an
2985If. This simplifies the decoded ASL, especially for deeply nested
2986If..Else and large Switch constructs. Thus, the disassembled code more
2987closely follows the original source ASL. ACPICA BZ 1211. Example:
2988
2989    Old disassembly:
2990        Else
2991        {
2992            If (Arg0 == 0x02)
2993            {
2994                Local0 = 0x05
2995            }
2996        }
2997
2998    New disassembly:
2999        ElseIf (Arg0 == 0x02)
3000        {
3001            Local0 = 0x05
3002        }
3003
3004AcpiExec: Added support for the new module level code behavior and the
3005early region installation. This required a small change to the
3006initialization, since AcpiExec must install its own operation region
3007handlers.
3008
3009AcpiExec: Added support to make the debug object timer optional. Default
3010is timer disabled. This cleans up the debug object output -- the timer
3011data is rarely used.
3012
3013AcpiExec: Multiple ACPI tables are now loaded in the order that they
3014appear on the command line. This can be important when there are
3015interdependencies/references between the tables.
3016
3017iASL/Templates. Add support to generate template files with multiple
3018SSDTs within a single output file. Also added ommand line support to
3019specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
30201223, 1225.
3021
3022
3023----------------------------------------
302424 November 2015. Summary of changes for version 20151124:
3025
30261) ACPICA kernel-resident subsystem:
3027
3028Fixed a possible regression for a previous update to FADT handling. The
3029FADT no longer has a fixed table ID, causing some issues with code that
3030was hardwired to a specific ID. Lv Zheng.
3031
3032Fixed a problem where the method auto-serialization could interfere with
3033the current SyncLevel. This change makes the auto-serialization support
3034transparent to the SyncLevel support and management.
3035
3036Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
3037interface is intended for early access to the namespace during the
3038initial namespace device discovery walk. The _SUB method has been seen to
3039access operation regions in some cases, causing errors because the
3040operation regions are not fully initialized.
3041
3042AML Debugger: Fixed some issues with the terminate/quit/exit commands
3043that can cause faults. Lv Zheng.
3044
3045AML Debugger: Add thread ID support so that single-step mode only applies
3046to the AML Debugger thread. This prevents runtime errors within some
3047kernels. Lv Zheng.
3048
3049Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
3050methods that are invoked by this interface are optional, removed warnings
3051emitted for the case where one or more of these methods do not exist.
3052ACPICA BZ 1208, original change by Prarit Bhargava.
3053
3054Made a major pass through the entire ACPICA source code base to
3055standardize formatting that has diverged a bit over time. There are no
3056functional changes, but this will of course cause quite a few code
3057differences from the previous ACPICA release.
3058
3059Example Code and Data Size: These are the sizes for the OS-independent
3060acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3061debug version of the code includes the debug output trace mechanism and
3062has a much larger code and data size.
3063
3064  Current Release:
3065    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
3066    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
3067  Previous Release:
3068    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3069    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
3070
3071
30722) iASL Compiler/Disassembler and Tools:
3073
3074iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
3075definition blocks within a single ASL file and the resulting AML file.
3076Support for this type of file was also added to the various tools that
3077use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
3078example code below shows two definition blocks within the same file:
3079
3080    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
30810x12345678)
3082    {
3083    }
3084    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
3085    {
3086    }
3087
3088iASL: Enhanced typechecking for the Name() operator. All expressions for
3089the value of the named object must be reduced/folded to a single constant
3090at compile time, as per the ACPI specification (the AML definition of
3091Name()).
3092
3093iASL: Fixed some code indentation issues for the -ic and -ia options (C
3094and assembly headers). Now all emitted code correctly begins in column 1.
3095
3096iASL: Added an error message for an attempt to open a Scope() on an
3097object defined in an SSDT. The DSDT is always loaded into the namespace
3098first, so any attempt to open a Scope on an SSDT object will fail at
3099runtime.
3100
3101
3102----------------------------------------
310330 September 2015. Summary of changes for version 20150930:
3104
31051) ACPICA kernel-resident subsystem:
3106
3107Debugger: Implemented several changes and bug fixes to assist support for
3108the in-kernel version of the AML debugger. Lv Zheng.
3109- Fix the "predefined" command for in-kernel debugger.
3110- Do not enter debug command loop for the help and version commands.
3111- Disallow "execute" command during execution/single-step of a method.
3112
3113Interpreter: Updated runtime typechecking for all operators that have
3114target operands. The operand is resolved and validated that it is legal.
3115For example, the target cannot be a non-data object such as a Device,
3116Mutex, ThermalZone, etc., as per the ACPI specification.
3117
3118Debugger: Fixed the double-mutex user I/O handshake to work when local
3119deadlock detection is enabled.
3120
3121Debugger: limited display of method locals and arguments (LocalX and
3122ArgX) to only those that have actually been initialized. This prevents
3123lines of extraneous output.
3124
3125Updated the definition of the NFIT table to correct the bit polarity of
3126one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
3127
3128Example Code and Data Size: These are the sizes for the OS-independent
3129acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3130debug version of the code includes the debug output trace mechanism and
3131has a much larger code and data size.
3132
3133  Current Release:
3134    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3135    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
3136  Previous Release:
3137    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
3138    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
3139
3140
31412) iASL Compiler/Disassembler and Tools:
3142
3143iASL: Improved the compile-time typechecking for operands of many of the
3144ASL operators:
3145
3146-- Added an option to disable compiler operand/operator typechecking (-
3147ot).
3148
3149-- For the following operators, the TermArg operands are now validated
3150when possible to be Integer data objects: BankField, OperationRegion,
3151DataTableRegion, Buffer, and Package.
3152
3153-- Store (Source, Target): Both the source and target operands are
3154resolved and checked that the operands are both legal. For example,
3155neither operand can be a non-data object such as a Device, Mutex,
3156ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
3157operator can be used to store an object to any type of target object.
3158
3159-- Store (Source, Target): If the source is a Package object, the target
3160must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
3161is a Package, the source must also be a Package.
3162
3163-- Store (Source, Target): A warning is issued if the source and target
3164resolve to the identical named object.
3165
3166-- Store (Source, <method invocation>): An error is generated for the
3167target method invocation, as this construct is not supported by the AML
3168interpreter.
3169
3170-- For all ASL math and logic operators, the target operand must be a
3171data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
3172includes the function return value also.
3173
3174-- External declarations are also included in the typechecking where
3175possible. External objects defined using the UnknownObj keyword cannot be
3176typechecked, however.
3177
3178iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
3179operator:
3180- Legacy code: Index(PKG1, 3)
3181- New ASL+ code: PKG1[3]
3182This completes the ACPI 6.0 ASL+ support as it was the only operator not
3183supported.
3184
3185iASL: Fixed the file suffix for the preprocessor output file (.i). Two
3186spaces were inadvertently appended to the filename, causing file access
3187and deletion problems on some systems.
3188
3189ASL Test Suite (ASLTS): Updated the master makefile to generate all
3190possible compiler output files when building the test suite -- thus
3191exercising these features of the compiler. These files are automatically
3192deleted when the test suite exits.
3193
3194
3195----------------------------------------
319618 August 2015. Summary of changes for version 20150818:
3197
31981) ACPICA kernel-resident subsystem:
3199
3200Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
3201Zheng. ACPICA BZ 1186.
3202
3203Completed development to ensure that the ACPICA Disassembler and Debugger
3204are fully standalone components of ACPICA. Removed cross-component
3205dependences. Lv Zheng.
3206
3207The max-number-of-AML-loops is now runtime configurable (previously was
3208compile-time only). This is essentially a loop timeout to force-abort
3209infinite AML loops. ACPCIA BZ 1192.
3210
3211Debugger: Cleanup output to dump ACPI names and namepaths without any
3212trailing underscores. Lv Zheng. ACPICA BZ 1135.
3213
3214Removed unnecessary conditional compilations across the Debugger and
3215Disassembler components where entire modules could be left uncompiled.
3216
3217The aapits test is deprecated and has been removed from the ACPICA git
3218tree. The test has never been completed and has not been maintained, thus
3219becoming rather useless. ACPICA BZ 1015, 794.
3220
3221A batch of small changes to close bugzilla and other reports:
3222- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
3223- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
3224- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
3225- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
3226Moore.
3227- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
3228ACPICA BZ 1184.
3229- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
3230operators.
3231- Debugger: Split debugger initialization/termination interfaces. Lv
3232Zheng.
3233- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
3234identification.
3235- AcpiExec: Add debug message during _REG method phase during table
3236load/init.
3237- AcpiNames: Fix a regression where some output was missing and no longer
3238emitted.
3239- Debugger: General cleanup and simplification. Lv Zheng.
3240- Disassembler: Cleanup use of several global option variables. Lv Zheng.
3241
3242Example Code and Data Size: These are the sizes for the OS-independent
3243acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3244debug version of the code includes the debug output trace mechanism and
3245has a much larger code and data size.
3246
3247  Current Release:
3248    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
3249    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
3250  Previous Release:
3251    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
3252    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
3253
3254
32552) iASL Compiler/Disassembler and Tools:
3256
3257AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
3258were not handled properly and caused load errors. Now, properly invoke
3259and use the ACPICA auto-reallocate mechanism for ACPI table data
3260structures. ACPICA BZ 1188
3261
3262AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
3263BZ 1190.
3264
3265AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
3266AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
3267executed during initialization. ACPICA BZ 1187, 1189.
3268
3269iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
3270that corresponds to each disassembled ASL statement, to simplify
3271debugging. ACPICA BZ 1191.
3272
3273Debugger: Add option to the "objects" command to display a summary of the
3274current namespace objects (Object type and count). This is displayed if
3275the command is entered with no arguments.
3276
3277AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
3278
3279
3280----------------------------------------
328117 July 2015. Summary of changes for version 20150717:
3282
32831) ACPICA kernel-resident subsystem:
3284
3285Improved the partitioning between the Debugger and Disassembler
3286components. This allows the Debugger to be used standalone within kernel
3287code without the Disassembler (which is used for single stepping also).
3288This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
3289
3290Debugger: Implemented a new command to trace the execution of control
3291methods (Trace). This is especially useful for the in-kernel version of
3292the debugger when file I/O may not be available for method trace output.
3293See the ACPICA reference for more information. Lv Zheng.
3294
3295Moved all C library prototypes (used for the local versions of these
3296functions when requested) to a new header, acclib.h
3297Cleaned up the use of non-ANSI C library functions. These functions are
3298implemented locally in ACPICA. Moved all such functions to a common
3299source file, utnonansi.c
3300
3301Debugger: Fixed a problem with the "!!" command (get last command
3302executed) where the debugger could enter an infinite loop and eventually
3303crash.
3304
3305Removed the use of local macros that were used for some of the standard C
3306library functions to automatically cast input parameters. This mostly
3307affected the is* functions where the input parameter is defined to be an
3308int. This required a few modifications to the main ACPICA source code to
3309provide casting for these functions and eliminate possible compiler
3310warnings for these parameters.
3311
3312Across the source code, added additional status/error checking to resolve
3313issues discovered by static source code analysis tools such as Coverity.
3314
3315Example Code and Data Size: These are the sizes for the OS-independent
3316acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3317debug version of the code includes the debug output trace mechanism and
3318has a much larger code and data size.
3319
3320  Current Release:
3321    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
3322    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
3323  Previous Release:
3324    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3325    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
3326
3327
33282) iASL Compiler/Disassembler and Tools:
3329
3330iASL: Fixed a regression where the device map file feature no longer
3331worked properly when used in conjunction with the disassembler. It only
3332worked properly with the compiler itself.
3333
3334iASL: Implemented a new warning for method LocalX variables that are set
3335but never used (similar to a C compiler such as gcc). This also applies
3336to ArgX variables that are not defined by the parent method, and are
3337instead (legally) used as local variables.
3338
3339iASL/Preprocessor: Finished the pass-through of line numbers from the
3340preprocessor to the compiler. This ensures that compiler errors/warnings
3341have the correct original line numbers and filenames, regardless of any
3342#include files.
3343
3344iASL/Preprocessor: Fixed a couple of issues with comment handling and the
3345pass-through of comments to the preprocessor output file (which becomes
3346the compiler input file). Also fixed a problem with // comments that
3347appear after a math expression.
3348
3349iASL: Added support for the TCPA server table to the table compiler and
3350template generator. (The client table was already previously supported)
3351
3352iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
3353identify the iASL compiler.
3354
3355Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
3356multiple times. The new names are ACPI_SIGN_NEGATIVE and
3357ACPI_SIGN_POSITIVE.
3358
3359AcpiHelp: Update to expand help messages for the iASL preprocessor
3360directives.
3361
3362
3363----------------------------------------
336419 June 2015. Summary of changes for version 20150619:
3365
3366Two regressions in version 20150616 have been addressed:
3367
3368Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
3369etc.) This update changes ACPICA to only use the standard headers for
3370functions, or the prototypes for the local versions of the C library
3371functions. Across the source code, this required some additional casts
3372for some Clib invocations for portability. Moved all local prototypes to
3373a new file, acclib.h
3374
3375Fixes several problems with recent changes to the handling of the FACS
3376table that could cause some systems not to boot.
3377
3378
3379----------------------------------------
338016 June 2015. Summary of changes for version 20150616:
3381
3382
33831) ACPICA kernel-resident subsystem:
3384
3385Across the entire ACPICA source code base, the various macros for the C
3386library functions (such as ACPI_STRLEN, etc.) have been removed and
3387replaced by the standard C library names (strlen, etc.) The original
3388purpose for these macros is no longer applicable. This simplification
3389reduces the number of macros used in the ACPICA source code
3390significantly, improving readability and maintainability.
3391
3392Implemented support for a new ACPI table, the OSDT. This table, the
3393"override" SDT, can be loaded directly by the host OS at boot time. It
3394enables the replacement of existing namespace objects that were installed
3395via the DSDT and/or SSDTs. The primary purpose for this is to replace
3396buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
3397for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
3398Moore.
3399
3400Added support for systems with (improperly) two FACS tables -- a "32-bit"
3401table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
3402X field). This change will support both automatically. There continues to
3403be systems found with this issue. This support requires a change to the
3404AcpiSetFirmwareWakingVector interface. Also, a public global variable has
3405been added to allow the host to select which FACS is desired
3406(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
3407details Lv Zheng.
3408
3409Added a new feature to allow for systems that do not contain an FACS.
3410Although this is already supported on hardware-reduced platforms, the
3411feature has been extended for all platforms. The reasoning is that we do
3412not want to abort the entire ACPICA initialization just because the
3413system is seriously buggy and has no FACS.
3414
3415Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
3416not correctly transcribed from the ACPI specification in ACPICA version
341720150515.
3418
3419Implemented support for the _CLS object in the AcpiGetObjectInfo external
3420interface.
3421
3422Updated the definitions of the TCPA and TPM2 ACPI tables to the more
3423recent TCG ACPI Specification, December 14, 2014. Table disassembler and
3424compiler also updated. Note: The TCPA "server" table is not supported by
3425the disassembler/table-compiler at this time.
3426
3427ACPI 6.0: Added definitions for the new GIC version field in the MADT.
3428
3429Example Code and Data Size: These are the sizes for the OS-independent
3430acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3431debug version of the code includes the debug output trace mechanism and
3432has a much larger code and data size.
3433
3434  Current Release:
3435    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3436    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
3437  Previous Release:
3438    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
3439    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
3440
3441
34422) iASL Compiler/Disassembler and Tools:
3443
3444Disassembler: Fixed a problem with the new symbolic operator disassembler
3445where incorrect ASL code could be emitted in some cases for the "non-
3446commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
3447ShiftRight. The actual problem cases seem to be rather unusual in common
3448ASL code, however. David Box.
3449
3450Modified the linux version of acpidump to obtain ACPI tables from not
3451just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
3452Zheng.
3453
3454iASL: Fixed a problem where the user preprocessor output file (.i)
3455contained extra data that was not expected. The compiler was using this
3456file as a temporary file and passed through #line directives in order to
3457keep compiler error messages in sync with the input file and line number
3458across multiple include files. The (.i) is no longer a temporary file as
3459the compiler uses a new, different file for the original purpose.
3460
3461iASL: Fixed a problem where comments within the original ASL source code
3462file were not passed through to the preprocessor output file, nor any
3463listing files.
3464
3465iASL: Fixed some issues for the handling of the "#include" preprocessor
3466directive and the similar (but not the same) "Include" ASL operator.
3467
3468iASL: Add support for the new OSDT in both the disassembler and compiler.
3469
3470iASL: Fixed a problem with the constant folding support where a Buffer
3471object could be incorrectly generated (incorrectly formed) during a
3472conversion to a Store() operator.
3473
3474AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
3475description text for the _REV predefined name. _REV now permanently
3476returns 2, as per the ACPI 6.0 specification.
3477
3478Debugger: Enhanced the output of the Debug ASL object for references
3479produced by the Index operator. For Buffers and strings, only output the
3480actual byte pointed to by the index. For packages, only print the single
3481package element decoded by the index. Previously, the entire
3482buffer/string/package was emitted.
3483
3484iASL/Table-compiler: Fixed a regression where the "generic" data types
3485were no longer recognized, causing errors.
3486
3487
3488----------------------------------------
348915 May 2015. Summary of changes for version 20150515:
3490
3491This release implements most of ACPI 6.0 as described below.
3492
34931) ACPICA kernel-resident subsystem:
3494
3495Implemented runtime argument checking and return value checking for all
3496new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
3497_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
3498
3499Example Code and Data Size: These are the sizes for the OS-independent
3500acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3501debug version of the code includes the debug output trace mechanism and
3502has a much larger code and data size.
3503
3504  Current Release:
3505    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
3506    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
3507  Previous Release:
3508    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
3509    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
3510
3511
35122) iASL Compiler/Disassembler and Tools:
3513
3514iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
3515names (argument count validation and return value typechecking.)
3516
3517iASL disassembler and table compiler: implemented support for all new
3518ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
3519
3520iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
3521tables: FADT, MADT.
3522
3523iASL preprocessor: Added a new directive to enable inclusion of binary
3524blobs into ASL code. The new directive is #includebuffer. It takes a
3525binary file as input and emits a named ascii buffer object into the ASL
3526code.
3527
3528AcpiHelp: Added support for all new ACPI 6.0 predefined names.
3529
3530AcpiHelp: Added a new option, -d, to display all iASL preprocessor
3531directives.
3532
3533AcpiHelp: Added a new option, -t, to display all known/supported ACPI
3534tables.
3535
3536
3537----------------------------------------
353810 April 2015. Summary of changes for version 20150410:
3539
3540Reverted a change introduced in version 20150408 that caused
3541a regression in the disassembler where incorrect operator
3542symbols could be emitted.
3543
3544
3545----------------------------------------
354608 April 2015. Summary of changes for version 20150408:
3547
3548
35491) ACPICA kernel-resident subsystem:
3550
3551Permanently set the return value for the _REV predefined name. It now
3552returns 2 (was 5). This matches other ACPI implementations. _REV will be
3553deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
3554for ACPI 2.0 and later. It should never be used to differentiate or
3555identify operating systems.
3556
3557Added the "Windows 2015" string to the _OSI support. ACPICA will now
3558return TRUE to a query with this string.
3559
3560Fixed several issues with the local version of the printf function.
3561
3562Added the C99 compiler option (-std=c99) to the Unix makefiles.
3563
3564  Current Release:
3565    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
3566    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
3567  Previous Release:
3568    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3569    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3570
3571
35722) iASL Compiler/Disassembler and Tools:
3573
3574iASL: Implemented an enhancement to the constant folding feature to
3575transform the parse tree to a simple Store operation whenever possible:
3576    Add (2, 3, X) ==> is converted to: Store (5, X)
3577    X = 2 + 3     ==> is converted to: Store (5, X)
3578
3579Updated support for the SLIC table (Software Licensing Description Table)
3580in both the Data Table compiler and the disassembler. The SLIC table
3581support now conforms to "Microsoft Software Licensing Tables (SLIC and
3582MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
3583following the ACPI header is now defined to be "Proprietary Data", and as
3584such, can only be entered or displayed as a hex data block.
3585
3586Implemented full support for the MSDM table as described in the document
3587above. Note: The format of MSDM is similar to SLIC. Any MSDM data
3588following the ACPI header is defined to be "Proprietary Data", and can
3589only be entered or displayed as a hex data block.
3590
3591Implemented the -Pn option for the iASL Table Compiler (was only
3592implemented for the ASL compiler). This option disables the iASL
3593preprocessor.
3594
3595Disassembler: For disassembly of Data Tables, added a comment field
3596around the Ascii equivalent data that is emitted as part of the "Raw
3597Table Data" block. This prevents the iASL Preprocessor from possible
3598confusion if/when the table is compiled.
3599
3600Disassembler: Added an option (-df) to force the disassembler to assume
3601that the table being disassembled contains valid AML. This feature is
3602useful for disassembling AML files that contain ACPI signatures other
3603than DSDT or SSDT (such as OEMx or other signatures).
3604
3605Changes for the EFI version of the tools:
36061) Fixed a build error/issue
36072) Fixed a cast warning
3608
3609iASL: Fixed a path issue with the __FILE__ operator by making the
3610directory prefix optional within the internal SplitInputFilename
3611function.
3612
3613Debugger: Removed some unused global variables.
3614
3615Tests: Updated the makefile for proper generation of the AAPITS suite.
3616
3617
3618----------------------------------------
361904 February 2015. Summary of changes for version 20150204:
3620
3621ACPICA kernel-resident subsystem:
3622
3623Updated all ACPICA copyrights and signons to 2014. Added the 2014
3624copyright to all module headers and signons, including the standard Linux
3625header. This affects virtually every file in the ACPICA core subsystem,
3626iASL compiler, all ACPICA utilities, and the test suites.
3627
3628Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
3629A raw gpe handling mechanism was created to allow better handling of GPE
3630storms that aren't easily managed by the normal handler. The raw handler
3631allows disabling/renabling of the the GPE so that interrupt storms can be
3632avoided in cases where events cannot be timely serviced. In this
3633scenario, handlers should use the AcpiSetGpe() API to disable/enable the
3634GPE. This API will leave the reference counts undisturbed, thereby
3635preventing unintentional clearing of the GPE when the intent in only to
3636temporarily disable it. Raw handlers allow enabling and disabling of a
3637GPE by removing GPE register locking. As such, raw handlers much provide
3638their own locks while using GPE API's to protect access to GPE data
3639structures.
3640Lv Zheng
3641
3642Events: Always modify GPE registers under the GPE lock.
3643Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
3644values. Reported as bug by joe.liu@apple.com.
3645
3646Unix makefiles: Separate option to disable optimizations and
3647_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
3648NOOPT disable option and creates a separate flag (NOFORTIFY) for this
3649purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
3650errors when building ACPICA. This allows disabling the option without
3651also having to disable optimazations.
3652David Box
3653
3654  Current Release:
3655    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3656    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
3657
3658--
3659--------------------------------------
366007 November 2014. Summary of changes for version 20141107:
3661
3662This release is available at https://acpica.org/downloads
3663
3664This release introduces and implements language extensions to ASL that
3665provide support for symbolic ("C-style") operators and expressions. These
3666language extensions are known collectively as ASL+.
3667
3668
36691) iASL Compiler/Disassembler and Tools:
3670
3671Disassembler: Fixed a problem with disassembly of the UartSerialBus
3672macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
3673Box.
3674
3675Disassembler: Fixed the Unicode macro support to add escape sequences.
3676All non-printable ASCII values are emitted as escape sequences, as well
3677as the standard escapes for quote and backslash. Ensures that the
3678disassembled macro can be correctly recompiled.
3679
3680iASL: Added Printf/Fprintf macros for formatted output. These macros are
3681translated to existing AML Concatenate and Store operations. Printf
3682writes to the ASL Debug object. Fprintf allows the specification of an
3683ASL name as the target. Only a single format specifier is required, %o,
3684since the AML interpreter dynamically converts objects to the required
3685type. David E. Box.
3686
3687    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3688                 (Concatenate (Concatenate (Concatenate ("", Arg0),
3689                 ": Unexpected value for "), Arg1), ", "), Arg2),
3690                 " at line "), Arg3), Debug)
3691
3692    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
3693                 Arg0, Arg1, Arg2, Arg3)
3694
3695    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3696                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
3697
3698    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
3699
3700iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
3701ASL parse tree before the AML code is generated. This allows blocks of
3702ASL code to be removed in order to help locate and identify problem
3703devices and/or code. David E. Box.
3704
3705AcpiExec: Added support (-fi) for an optional namespace object
3706initialization file. This file specifies initial values for namespace
3707objects as necessary for debugging and testing different ASL code paths
3708that may be taken as a result of BIOS options.
3709
3710
37112) Overview of symbolic operator support for ASL (ASL+)
3712-------------------------------------------------------
3713
3714As an extension to the ASL language, iASL implements support for symbolic
3715(C-style) operators for math and logical expressions. This can greatly
3716simplify ASL code as well as improve both readability and
3717maintainability. These language extensions can exist concurrently with
3718all legacy ASL code and expressions.
3719
3720The symbolic extensions are 100% compatible with existing AML
3721interpreters, since no new AML opcodes are created. To implement the
3722extensions, the iASL compiler transforms the symbolic expressions into
3723the legacy ASL/AML equivalents at compile time.
3724
3725Full symbolic expressions are supported, along with the standard C
3726precedence and associativity rules.
3727
3728Full disassembler support for the symbolic expressions is provided, and
3729creates an automatic migration path for existing ASL code to ASL+ code
3730via the disassembly process. By default, the disassembler now emits ASL+
3731code with symbolic expressions. An option (-dl) is provided to force the
3732disassembler to emit legacy ASL code if desired.
3733
3734Below is the complete list of the currently supported symbolic operators
3735with examples. See the iASL User Guide for additional information.
3736
3737
3738ASL+ Syntax      Legacy ASL Equivalent
3739-----------      ---------------------
3740
3741    // Math operators
3742
3743Z = X + Y        Add (X, Y, Z)
3744Z = X - Y        Subtract (X, Y, Z)
3745Z = X * Y        Multiply (X, Y, Z)
3746Z = X / Y        Divide (X, Y, , Z)
3747Z = X % Y        Mod (X, Y, Z)
3748Z = X << Y       ShiftLeft (X, Y, Z)
3749Z = X >> Y       ShiftRight (X, Y, Z)
3750Z = X & Y        And (X, Y, Z)
3751Z = X | Y        Or (X, Y, Z)
3752Z = X ^ Y        Xor (X, Y, Z)
3753Z = ~X           Not (X, Z)
3754X++              Increment (X)
3755X--              Decrement (X)
3756
3757    // Logical operators
3758
3759(X == Y)         LEqual (X, Y)
3760(X != Y)         LNotEqual (X, Y)
3761(X < Y)          LLess (X, Y)
3762(X > Y)          LGreater (X, Y)
3763(X <= Y)         LLessEqual (X, Y)
3764(X >= Y)         LGreaterEqual (X, Y)
3765(X && Y)         LAnd (X, Y)
3766(X || Y)         LOr (X, Y)
3767(!X)             LNot (X)
3768
3769    // Assignment and compound assignment operations
3770
3771X = Y           Store (Y, X)
3772X += Y          Add (X, Y, X)
3773X -= Y          Subtract (X, Y, X)
3774X *= Y          Multiply (X, Y, X)
3775X /= Y          Divide (X, Y, , X)
3776X %= Y          Mod (X, Y, X)
3777X <<= Y         ShiftLeft (X, Y, X)
3778X >>= Y         ShiftRight (X, Y, X)
3779X &= Y          And (X, Y, X)
3780X |= Y          Or (X, Y, X)
3781X ^= Y          Xor (X, Y, X)
3782
3783
37843) ASL+ Examples:
3785-----------------
3786
3787Legacy ASL:
3788        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
3789            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
37900x03FB),
3791            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
3792        {
3793            And (MEMB, 0xFFFFFFF0, SRMB)
3794            Store (MEMB, Local2)
3795            Store (PDBM, Local1)
3796            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
3797            Store (SRMB, MEMB)
3798            Or (PDBM, 0x02, PDBM)
3799        }
3800
3801ASL+ version:
3802        If (((R510 & 0x03FB) == 0x02E0) ||
3803            ((R520 & 0x03FB) == 0x02E0) ||
3804            ((R530 & 0x03FB) == 0x02E0) ||
3805            ((R540 & 0x03FB) == 0x02E0))
3806        {
3807            SRMB = (MEMB & 0xFFFFFFF0)
3808            Local2 = MEMB
3809            Local1 = PDBM
3810            PDBM &= 0xFFFFFFFFFFFFFFF9
3811            MEMB = SRMB
3812            PDBM |= 0x02
3813        }
3814
3815Legacy ASL:
3816        Store (0x1234, Local1)
3817        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
3818        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
3819        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
3820        Store (Index (PKG1, 0x03), Local6)
3821        Store (Add (Local3, Local2), Debug)
3822        Add (Local1, 0x0F, Local2)
3823        Add (Local1, Multiply (Local2, Local3), Local2)
3824        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
3825
3826ASL+ version:
3827        Local1 = 0x1234
3828        Local3 = (((Local1 + TEST) + 0x20) * Local2)
3829        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
3830        Local3 = (Local1 + (TEST + (0x20 * Local2)))
3831        Local6 = Index (PKG1, 0x03)
3832        Debug = (Local3 + Local2)
3833        Local2 = (Local1 + 0x0F)
3834        Local2 = (Local1 + (Local2 * Local3))
3835        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
3836
3837
3838----------------------------------------
383926 September 2014. Summary of changes for version 20140926:
3840
38411) ACPICA kernel-resident subsystem:
3842
3843Updated the GPIO operation region handler interface (GeneralPurposeIo).
3844In order to support GPIO Connection objects with multiple pins, along
3845with the related Field objects, the following changes to the interface
3846have been made: The Address is now defined to be the offset in bits of
3847the field unit from the previous invocation of a Connection. It can be
3848viewed as a "Pin Number Index" into the connection resource descriptor.
3849The BitWidth is the exact bit width of the field. It is usually one bit,
3850but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
3851additional information and examples.
3852
3853GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
3854corresponding _Lxx/_Exx methods are disabled (they may have been enabled
3855by the firmware), so that they cannot fire until they are enabled via
3856AcpiUpdateAllGpes. Rafael J. Wysocki.
3857
3858Added a new return flag for the Event/GPE status interfaces --
3859AcpiGetEventStatus and AcpiGetGpeStatus. The new
3860ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
3861GPE currently has a handler associated with it, and can thus actually
3862affect the system. Lv Zheng.
3863
3864Example Code and Data Size: These are the sizes for the OS-independent
3865acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3866debug version of the code includes the debug output trace mechanism and
3867has a much larger code and data size.
3868
3869  Current Release:
3870    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
3871    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
3872  Previous Release:
3873    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3874    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3875
38762) iASL Compiler/Disassembler and Tools:
3877
3878iASL: Fixed a memory allocation/free regression introduced in 20140828
3879that could cause the compiler to crash. This was introduced inadvertently
3880during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
38811113.
3882
3883iASL: Removed two error messages that have been found to create false
3884positives, until they can be fixed and fully validated (ACPICA BZ 1112):
38851) Illegal forward reference within a method
38862) Illegal reference across two methods
3887
3888iASL: Implemented a new option (-lm) to create a hardware mapping file
3889that summarizes all GPIO, I2C, SPI, and UART connections. This option
3890works for both the compiler and disassembler. See the iASL compiler user
3891guide for additional information and examples (section 6.4.6).
3892
3893AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
3894version 2. This corrects the AE_BAD_HEADER exception seen on systems with
3895a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
3896
3897AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
3898unless STDIN is actually a terminal. Assists with batch-mode processing.
3899ACPICA BZ 1114.
3900
3901Disassembler/AcpiHelp: Added another large group of recognized _HID
3902values.
3903
3904
3905----------------------------------------
390628 August 2014. Summary of changes for version 20140828:
3907
39081) ACPICA kernel-resident subsystem:
3909
3910Fixed a problem related to the internal use of the Timer() operator where
3911a 64-bit divide could cause an attempted link to a double-precision math
3912library. This divide is not actually necessary, so the code was
3913restructured to eliminate it. Lv Zheng.
3914
3915ACPI 5.1: Added support for the runtime validation of the _DSD package
3916(similar to the iASL support).
3917
3918ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
3919SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
3920
3921Example Code and Data Size: These are the sizes for the OS-independent
3922acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3923debug version of the code includes the debug output trace mechanism and
3924has a much larger code and data size.
3925
3926  Current Release:
3927    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3928    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3929  Previous Release:
3930    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
3931    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
3932
39332) iASL Compiler/Disassembler and Tools:
3934
3935AcpiExec: Fixed a problem on unix systems where the original terminal
3936state was not always properly restored upon exit. Seen when using the -v
3937option. ACPICA BZ 1104.
3938
3939iASL: Fixed a problem with the validation of the ranges/length within the
3940Memory24 resource descriptor. There was a boundary condition when the
3941range was equal to the (length -1) caused by the fact that these values
3942are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
3943
3944Disassembler: Fixed a problem with the GpioInt descriptor interrupt
3945polarity
3946flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
3947is
3948now supported properly.
3949
3950ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
3951in the disassembler, data table compiler, and table template generator.
3952
3953iASL: Added a requirement for Device() objects that one of either a _HID
3954or _ADR must exist within the scope of a Device, as per the ACPI
3955specification. Remove a similar requirement that was incorrectly in place
3956for the _DSD object.
3957
3958iASL: Added error detection for illegal named references within control
3959methods that would cause runtime failures. Now trapped as errors are: 1)
3960References to objects within a non-parent control method. 2) Forward
3961references (within a method) -- for control methods, AML interpreters use
3962a one-pass parse of control methods. ACPICA BZ 1008.
3963
3964iASL: Added error checking for dependencies related to the _PSx power
3965methods. ACPICA BZ 1029.
39661) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
3967_PS3.
39682) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
3969scope.
3970
3971iASL and table compiler: Cleanup miscellaneous memory leaks by fully
3972deploying the existing object and string caches and adding new caches for
3973the table compiler.
3974
3975iASL: Split the huge parser source file into multiple subfiles to improve
3976manageability. Generation now requires the M4 macro preprocessor, which
3977is part of the Bison distribution on both unix and windows platforms.
3978
3979AcpiSrc: Fixed and removed all extraneous warnings generated during
3980entire ACPICA source code scan and/or conversion.
3981
3982
3983----------------------------------------
3984
398524 July 2014. Summary of changes for version 20140724:
3986
3987The ACPI 5.1 specification has been released and is available at:
3988http://uefi.org/specs/access
3989
3990
39910) ACPI 5.1 support in ACPICA:
3992
3993ACPI 5.1 is fully supported in ACPICA as of this release.
3994
3995New predefined names. Support includes iASL and runtime ACPICA
3996validation.
3997    _CCA (Cache Coherency Attribute).
3998    _DSD (Device-Specific Data). David Box.
3999
4000Modifications to existing ACPI tables. Support includes headers, iASL
4001Data Table compiler, disassembler, and the template generator.
4002    FADT - New fields and flags. Graeme Gregory.
4003    GTDT - One new subtable and new fields. Tomasz Nowicki.
4004    MADT - Two new subtables. Tomasz Nowicki.
4005    PCCT - One new subtable.
4006
4007Miscellaneous.
4008    New notification type for System Resource Affinity change events.
4009
4010
40111) ACPICA kernel-resident subsystem:
4012
4013Fixed a regression introduced in 20140627 where a fault can happen during
4014the deletion of Alias AML namespace objects. The problem affected both
4015the core ACPICA and the ACPICA tools including iASL and AcpiExec.
4016
4017Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
4018simple mechanism to enable wake GPEs that have no associated handler or
4019control method. Rafael Wysocki.
4020
4021Updated the AcpiEnableGpe interface to disallow the enable if there is no
4022handler or control method associated with the particular GPE. This will
4023help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
4024
4025Updated GPE handling and dispatch by disabling the GPE before clearing
4026the status bit for edge-triggered GPEs. Lv Zheng.
4027
4028Added Timer() support to the AML Debug object. The current timer value is
4029now displayed with each invocation of (Store to) the debug object to
4030enable simple generation of execution times for AML code (method
4031execution for example.) ACPICA BZ 1093.
4032
4033Example Code and Data Size: These are the sizes for the OS-independent
4034acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4035debug version of the code includes the debug output trace mechanism and
4036has a much larger code and data size.
4037
4038  Current Release:
4039    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
4040    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
4041  Previous Release:
4042    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
4043    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
4044
4045
40462) iASL Compiler/Disassembler and Tools:
4047
4048Fixed an issue with the recently added local printf implementation,
4049concerning width/precision specifiers that could cause incorrect output.
4050Lv Zheng. ACPICA BZ 1094.
4051
4052Disassembler: Added support to detect buffers that contain UUIDs and
4053disassemble them to an invocation of the ToUUID operator. Also emit
4054commented descriptions of known ACPI-related UUIDs.
4055
4056AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
4057-u. Adds three new files.
4058
4059iASL: Update table compiler and disassembler for DMAR table changes that
4060were introduced in September 2013. With assistance by David Woodhouse.
4061
4062----------------------------------------
406327 June 2014. Summary of changes for version 20140627:
4064
40651) ACPICA kernel-resident subsystem:
4066
4067Formatted Output: Implemented local versions of standard formatted output
4068utilities such as printf, etc. Over time, it has been discovered that
4069there are in fact many portability issues with printf, and the addition
4070of this feature will fix/prevent these issues once and for all. Some
4071known issues are summarized below:
4072
40731) Output of 64-bit values is not portable. For example, UINT64 is %ull
4074for the Linux kernel and is %uI64 for some MSVC versions.
40752) Invoking printf consistently in a manner that is portable across both
407632-bit and 64-bit platforms is difficult at best in many situations.
40773) The output format for pointers varies from system to system (leading
4078zeros especially), and leads to inconsistent output from ACPICA across
4079platforms.
40804) Certain platform-specific printf formats may conflict with ACPICA use.
40815) If there is no local C library available, ACPICA now has local support
4082for printf.
4083
4084-- To address these printf issues in a complete manner, ACPICA now
4085directly implements a small subset of printf format specifiers, only
4086those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
4087
4088Implemented support for ACPICA generation within the EFI environment.
4089Initially, the AcpiDump utility is supported in the UEFI shell
4090environment. Lv Zheng.
4091
4092Added a new external interface, AcpiLogError, to improve ACPICA
4093portability. This allows the host to redirect error messages from the
4094ACPICA utilities. Lv Zheng.
4095
4096Added and deployed new OSL file I/O interfaces to improve ACPICA
4097portability:
4098  AcpiOsOpenFile
4099  AcpiOsCloseFile
4100  AcpiOsReadFile
4101  AcpiOsWriteFile
4102  AcpiOsGetFileOffset
4103  AcpiOsSetFileOffset
4104There are C library implementations of these functions in the new file
4105service_layers/oslibcfs.c -- however, the functions can be implemented by
4106the local host in any way necessary. Lv Zheng.
4107
4108Implemented a mechanism to disable/enable ACPI table checksum validation
4109at runtime. This can be useful when loading tables very early during OS
4110initialization when it may not be possible to map the entire table in
4111order to compute the checksum. Lv Zheng.
4112
4113Fixed a buffer allocation issue for the Generic Serial Bus support.
4114Originally, a fixed buffer length was used. This change allows for
4115variable-length buffers based upon the protocol indicated by the field
4116access attributes. Reported by Lan Tianyu. Lv Zheng.
4117
4118Fixed a problem where an object detached from a namespace node was not
4119properly terminated/cleared and could cause a circular list problem if
4120reattached. ACPICA BZ 1063. David Box.
4121
4122Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
4123
4124Fixed a possible memory leak in an error return path within the function
4125AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
4126
4127Example Code and Data Size: These are the sizes for the OS-independent
4128acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4129debug version of the code includes the debug output trace mechanism and
4130has a much larger code and data size.
4131
4132  Current Release:
4133    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
4134    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
4135  Previous Release:
4136    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
4137    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
4138
4139
41402) iASL Compiler/Disassembler and Tools:
4141
4142Disassembler: Add dump of ASCII equivalent text within a comment at the
4143end of each line of the output for the Buffer() ASL operator.
4144
4145AcpiDump: Miscellaneous changes:
4146  Fixed repetitive table dump in -n mode.
4147  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
4148the ACPI 2.0 GUID fails.
4149
4150iASL: Fixed a problem where the compiler could fault if incorrectly given
4151an acpidump output file as input. ACPICA BZ 1088. David Box.
4152
4153AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
4154they are invoked without any arguments.
4155
4156Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
41571086. Colin Ian King.
4158
4159Disassembler: Cleaned up a block of code that extracts a parent Op
4160object. Added a comment that explains that the parent is guaranteed to be
4161valid in this case. ACPICA BZ 1069.
4162
4163
4164----------------------------------------
416524 April 2014. Summary of changes for version 20140424:
4166
41671) ACPICA kernel-resident subsystem:
4168
4169Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
4170Some of these tables are known to contain a trailing NULL entry. Lv
4171Zheng.
4172
4173Removed an extraneous error message for the case where there are a large
4174number of system GPEs (> 124). This was the "32-bit FADT register is too
4175long to convert to GAS struct" message, which is irrelevant for GPEs
4176since the GPEx_BLK_LEN fields of the FADT are always used instead of the
4177(limited capacity) GAS bit length. Also, several changes to ensure proper
4178support for GPE numbers > 255, where some "GPE number" fields were 8-bits
4179internally.
4180
4181Implemented and deployed additional configuration support for the public
4182ACPICA external interfaces. Entire classes of interfaces can now be
4183easily modified or configured out, replaced by stubbed inline functions
4184by default. Lv Zheng.
4185
4186Moved all public ACPICA runtime configuration globals to the public
4187ACPICA external interface file for convenience. Also, removed some
4188obsolete/unused globals. See the file acpixf.h. Lv Zheng.
4189
4190Documentation: Added a new section to the ACPICA reference describing the
4191maximum number of GPEs that can be supported by the FADT-defined GPEs in
4192block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
4193reference.
4194
4195Example Code and Data Size: These are the sizes for the OS-independent
4196acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4197debug version of the code includes the debug output trace mechanism and
4198has a much larger code and data size.
4199
4200  Current Release:
4201    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
4202    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
4203  Previous Release:
4204    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
4205    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
4206
4207
42082) iASL Compiler/Disassembler and Tools:
4209
4210iASL and disassembler: Add full support for the LPIT table (Low Power
4211Idle Table). Includes support in the disassembler, data table compiler,
4212and template generator.
4213
4214AcpiDump utility:
42151) Add option to force the use of the RSDT (over the XSDT).
42162) Improve validation of the RSDP signature (use 8 chars instead of 4).
4217
4218iASL: Add check for predefined packages that are too large.  For
4219predefined names that contain subpackages, check if each subpackage is
4220too large. (Check for too small already exists.)
4221
4222Debugger: Updated the GPE command (which simulates a GPE by executing the
4223GPE code paths in ACPICA). The GPE device is now optional, and defaults
4224to the GPE 0/1 FADT-defined blocks.
4225
4226Unix application OSL: Update line-editing support. Add additional error
4227checking and take care not to reset terminal attributes on exit if they
4228were never set. This should help guarantee that the terminal is always
4229left in the previous state on program exit.
4230
4231
4232----------------------------------------
423325 March 2014. Summary of changes for version 20140325:
4234
42351) ACPICA kernel-resident subsystem:
4236
4237Updated the auto-serialize feature for control methods. This feature
4238automatically serializes all methods that create named objects in order
4239to prevent runtime errors. The update adds support to ignore the
4240currently executing AML SyncLevel when invoking such a method, in order
4241to prevent disruption of any existing SyncLevel priorities that may exist
4242in the AML code. Although the use of SyncLevels is relatively rare, this
4243change fixes a regression where an AE_AML_MUTEX_ORDER exception can
4244appear on some machines starting with the 20140214 release.
4245
4246Added a new external interface to allow the host to install ACPI tables
4247very early, before the namespace is even created. AcpiInstallTable gives
4248the host additional flexibility for ACPI table management. Tables can be
4249installed directly by the host as if they had originally appeared in the
4250XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
4251(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
4252with additional internal restructuring and cleanup. See the ACPICA
4253Reference for interface details. Lv Zheng.
4254
4255Added validation of the checksum for all incoming dynamically loaded
4256tables (via external interfaces or via AML Load/LoadTable operators). Lv
4257Zheng.
4258
4259Updated the use of the AcpiOsWaitEventsComplete interface during Notify
4260and GPE handler removal. Restructured calls to eliminate possible race
4261conditions. Lv Zheng.
4262
4263Added a warning for the use/execution of the ASL/AML Unload (table)
4264operator. This will help detect and identify machines that use this
4265operator if and when it is ever used. This operator has never been seen
4266in the field and the usage model and possible side-effects of the drastic
4267runtime action of a full table removal are unknown.
4268
4269Reverted the use of #pragma push/pop which was introduced in the 20140214
4270release. It appears that push and pop are not implemented by enough
4271compilers to make the use of this feature feasible for ACPICA at this
4272time. However, these operators may be deployed in a future ACPICA
4273release.
4274
4275Added the missing EXPORT_SYMBOL macros for the install and remove SCI
4276handler interfaces.
4277
4278Source code generation:
42791) Disabled the use of the "strchr" macro for the gcc-specific
4280generation. For some versions of gcc, this macro can periodically expose
4281a compiler bug which in turn causes compile-time error(s).
42822) Added support for PPC64 compilation. Colin Ian King.
4283
4284Example Code and Data Size: These are the sizes for the OS-independent
4285acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4286debug version of the code includes the debug output trace mechanism and
4287has a much larger code and data size.
4288
4289  Current Release:
4290    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
4291    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
4292  Previous Release:
4293    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
4294    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
4295
4296
42972) iASL Compiler/Disassembler and Tools:
4298
4299Disassembler: Added several new features to improve the readability of
4300the resulting ASL code. Extra information is emitted within comment
4301fields in the ASL code:
43021) Known _HID/_CID values are decoded to descriptive text.
43032) Standard values for the Notify() operator are decoded to descriptive
4304text.
43053) Target operands are expanded to full pathnames (in a comment) when
4306possible.
4307
4308Disassembler: Miscellaneous updates for extern() handling:
43091) Abort compiler if file specified by -fe option does not exist.
43102) Silence unnecessary warnings about argument count mismatches.
43113) Update warning messages concerning unresolved method externals.
43124) Emit "UnknownObj" keyword for externals whose type cannot be
4313determined.
4314
4315AcpiHelp utility:
43161) Added the -a option to display both the ASL syntax and the AML
4317encoding for an input ASL operator. This effectively displays all known
4318information about an ASL operator with one AcpiHelp invocation.
43192) Added substring match support (similar to a wildcard) for the -i
4320(_HID/PNP IDs) option.
4321
4322iASL/Disassembler: Since this tool does not yet support execution on big-
4323endian machines, added detection of endianness and an error message if
4324execution is attempted on big-endian. Support for big-endian within iASL
4325is a feature that is on the ACPICA to-be-done list.
4326
4327AcpiBin utility:
43281) Remove option to extract binary files from an acpidump; this function
4329is made obsolete by the AcpiXtract utility.
43302) General cleanup of open files and allocated buffers.
4331
4332
4333----------------------------------------
433414 February 2014. Summary of changes for version 20140214:
4335
43361) ACPICA kernel-resident subsystem:
4337
4338Implemented a new mechanism to proactively prevent problems with ill-
4339behaved reentrant control methods that create named ACPI objects. This
4340behavior is illegal as per the ACPI specification, but is nonetheless
4341frequently seen in the field. Previously, this could lead to an
4342AE_ALREADY_EXISTS exception if the method was actually entered by more
4343than one thread. This new mechanism detects such methods at table load
4344time and marks them "serialized" to prevent reentrancy. A new global
4345option, AcpiGbl_AutoSerializeMethods, has been added to disable this
4346feature if desired. This mechanism and global option obsoletes and
4347supersedes the previous AcpiGbl_SerializeAllMethods option.
4348
4349Added the "Windows 2013" string to the _OSI support. ACPICA will now
4350respond TRUE to _OSI queries with this string. It is the stated policy of
4351ACPICA to add new strings to the _OSI support as soon as possible after
4352they are defined. See the full ACPICA _OSI policy which has been added to
4353the utilities/utosi.c file.
4354
4355Hardened/updated the _PRT return value auto-repair code:
43561) Do not abort the repair on a single subpackage failure, continue to
4357check all subpackages.
43582) Add check for the minimum subpackage length (4).
43593) Properly handle extraneous NULL package elements.
4360
4361Added support to avoid the possibility of infinite loops when traversing
4362object linked lists. Never allow an infinite loop, even in the face of
4363corrupted object lists.
4364
4365ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
4366pack(pop) directives to ensure that the ACPICA headers are independent of
4367compiler settings or other host headers.
4368
4369Example Code and Data Size: These are the sizes for the OS-independent
4370acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4371debug version of the code includes the debug output trace mechanism and
4372has a much larger code and data size.
4373
4374  Current Release:
4375    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
4376    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
4377  Previous Release:
4378    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
4379    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
4380
4381
43822) iASL Compiler/Disassembler and Tools:
4383
4384iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
4385first reserved field was incorrectly forced to have a value of zero. This
4386change correctly forces the field to have a value of one. ACPICA BZ 1081.
4387
4388Debugger: Added missing support for the "Extra" and "Data" subobjects
4389when displaying object data.
4390
4391Debugger: Added support to display entire object linked lists when
4392displaying object data.
4393
4394iASL: Removed the obsolete -g option to obtain ACPI tables from the
4395Windows registry. This feature has been superseded by the acpidump
4396utility.
4397
4398
4399----------------------------------------
440014 January 2014. Summary of changes for version 20140114:
4401
44021) ACPICA kernel-resident subsystem:
4403
4404Updated all ACPICA copyrights and signons to 2014. Added the 2014
4405copyright to all module headers and signons, including the standard Linux
4406header. This affects virtually every file in the ACPICA core subsystem,
4407iASL compiler, all ACPICA utilities, and the test suites.
4408
4409Improved parameter validation for AcpiInstallGpeBlock. Added the
4410following checks:
44111) The incoming device handle refers to type ACPI_TYPE_DEVICE.
44122) There is not already a GPE block attached to the device.
4413Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
4414device.
4415
4416Correctly support "references" in the ACPI_OBJECT. This change fixes the
4417support to allow references (namespace nodes) to be passed as arguments
4418to control methods via the evaluate object interface. This is probably
4419most useful for testing purposes, however.
4420
4421Improved support for 32/64 bit physical addresses in printf()-like
4422output. This change improves the support for physical addresses in printf
4423debug statements and other output on both 32-bit and 64-bit hosts. It
4424consistently outputs the appropriate number of bytes for each host. The
4425%p specifier is unsatisfactory since it does not emit uniform output on
4426all hosts/clib implementations (on some, leading zeros are not supported,
4427leading to difficult-to-read output).
4428
4429Example Code and Data Size: These are the sizes for the OS-independent
4430acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4431debug version of the code includes the debug output trace mechanism and
4432has a much larger code and data size.
4433
4434  Current Release:
4435    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
4436    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
4437  Previous Release:
4438    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
4439    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
4440
4441
44422) iASL Compiler/Disassembler and Tools:
4443
4444iASL: Fix a possible fault when using the Connection() operator. Fixes a
4445problem if the parent Field definition for the Connection operator refers
4446to an operation region that does not exist. ACPICA BZ 1064.
4447
4448AcpiExec: Load of local test tables is now optional. The utility has the
4449capability to load some various tables to test features of ACPICA.
4450However, there are enough of them that the output of the utility became
4451confusing. With this change, only the required local tables are displayed
4452(RSDP, XSDT, etc.) along with the actual tables loaded via the command
4453line specification. This makes the default output simler and easier to
4454understand. The -el command line option restores the original behavior
4455for testing purposes.
4456
4457AcpiExec: Added support for overlapping operation regions. This change
4458expands the simulation of operation regions by supporting regions that
4459overlap within the given address space. Supports SystemMemory and
4460SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
4461
4462AcpiExec: Added region handler support for PCI_Config and EC spaces. This
4463allows AcpiExec to simulate these address spaces, similar to the current
4464support for SystemMemory and SystemIO.
4465
4466Debugger: Added new command to read/write/compare all namespace objects.
4467The command "test objects" will exercise the entire namespace by writing
4468new values to each data object, and ensuring that the write was
4469successful. The original value is then restored and verified.
4470
4471Debugger: Added the "test predefined" command. This change makes this
4472test public and puts it under the new "test" command. The test executes
4473each and every predefined name within the current namespace.
4474
4475
4476----------------------------------------
447718 December 2013. Summary of changes for version 20131218:
4478
4479Global note: The ACPI 5.0A specification was released this month. There
4480are no changes needed for ACPICA since this release of ACPI is an
4481errata/clarification release. The specification is available at
4482acpi.info.
4483
4484
44851) ACPICA kernel-resident subsystem:
4486
4487Added validation of the XSDT root table if it is present. Some older
4488platforms contain an XSDT that is ill-formed or otherwise invalid (such
4489as containing some or all entries that are NULL pointers). This change
4490adds a new function to validate the XSDT before actually using it. If the
4491XSDT is found to be invalid, ACPICA will now automatically fall back to
4492using the RSDT instead. Original implementation by Zhao Yakui. Ported to
4493ACPICA and enhanced by Lv Zheng and Bob Moore.
4494
4495Added a runtime option to ignore the XSDT and force the use of the RSDT.
4496This change adds a runtime option that will force ACPICA to use the RSDT
4497instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
4498requires that an XSDT be used instead of the RSDT, the XSDT has been
4499found to be corrupt or ill-formed on some machines. Lv Zheng.
4500
4501Added a runtime option to favor 32-bit FADT register addresses over the
450264-bit addresses. This change adds an option to favor 32-bit FADT
4503addresses when there is a conflict between the 32-bit and 64-bit versions
4504of the same register. The default behavior is to use the 64-bit version
4505in accordance with the ACPI specification. This can now be overridden via
4506the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
4507
4508During the change above, the internal "Convert FADT" and "Verify FADT"
4509functions have been merged to simplify the code, making it easier to
4510understand and maintain. ACPICA BZ 933.
4511
4512Improve exception reporting and handling for GPE block installation.
4513Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
4514status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
4515
4516Added helper macros to extract bus/segment numbers from the HEST table.
4517This change adds two macros to extract the encoded bus and segment
4518numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
4519Betty Dall <betty.dall@hp.com>
4520
4521Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
4522by ACPICA. It is not a public macro, so it should have no effect on
4523existing OSV code. Lv Zheng.
4524
4525Example Code and Data Size: These are the sizes for the OS-independent
4526acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4527debug version of the code includes the debug output trace mechanism and
4528has a much larger code and data size.
4529
4530  Current Release:
4531    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
4532    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
4533  Previous Release:
4534    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4535    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4536
4537
45382) iASL Compiler/Disassembler and Tools:
4539
4540Disassembler: Improved pathname support for emitted External()
4541statements. This change adds full pathname support for external names
4542that have been resolved internally by the inclusion of additional ACPI
4543tables (via the iASL -e option). Without this change, the disassembler
4544can emit multiple externals for the same object, or it become confused
4545when the Scope() operator is used on an external object. Overall, greatly
4546improves the ability to actually recompile the emitted ASL code when
4547objects a referenced across multiple ACPI tables. Reported by Michael
4548Tsirkin (mst@redhat.com).
4549
4550Tests/ASLTS: Updated functional control suite to execute with no errors.
4551David Box. Fixed several errors related to the testing of the interpreter
4552slack mode. Lv Zheng.
4553
4554iASL: Added support to detect names that are declared within a control
4555method, but are unused (these are temporary names that are only valid
4556during the time the method is executing). A remark is issued for these
4557cases. ACPICA BZ 1022.
4558
4559iASL: Added full support for the DBG2 table. Adds full disassembler,
4560table compiler, and template generator support for the DBG2 table (Debug
4561Port 2 table).
4562
4563iASL: Added full support for the PCCT table, update the table definition.
4564Updates the PCCT table definition in the actbl3.h header and adds table
4565compiler and template generator support.
4566
4567iASL: Added an option to emit only error messages (no warnings/remarks).
4568The -ve option will enable only error messages, warnings and remarks are
4569suppressed. This can simplify debugging when only the errors are
4570important, such as when an ACPI table is disassembled and there are many
4571warnings and remarks -- but only the actual errors are of real interest.
4572
4573Example ACPICA code (source/tools/examples): Updated the example code so
4574that it builds to an actual working program, not just example code. Added
4575ACPI tables and execution of an example control method in the DSDT. Added
4576makefile support for Unix generation.
4577
4578
4579----------------------------------------
458015 November 2013. Summary of changes for version 20131115:
4581
4582This release is available at https://acpica.org/downloads
4583
4584
45851) ACPICA kernel-resident subsystem:
4586
4587Resource Manager: Fixed loop termination for the "get AML length"
4588function. The loop previously had an error termination on a NULL resource
4589pointer, which can never happen since the loop simply increments a valid
4590resource pointer. This fix changes the loop to terminate with an error on
4591an invalid end-of-buffer condition. The problem can be seen as an
4592infinite loop by callers to AcpiSetCurrentResources with an invalid or
4593corrupted resource descriptor, or a resource descriptor that is missing
4594an END_TAG descriptor. Reported by Dan Carpenter
4595<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
4596
4597Table unload and ACPICA termination: Delete all attached data objects
4598during namespace node deletion. This fix updates namespace node deletion
4599to delete the entire list of attached objects (attached via
4600AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
46011024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
4602
4603ACPICA termination: Added support to delete all objects attached to the
4604root namespace node. This fix deletes any and all objects that have been
4605attached to the root node via AcpiAttachData. Previously, none of these
4606objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
4607
4608Debug output: Do not emit the function nesting level for the in-kernel
4609build. The nesting level is really only useful during a single-thread
4610execution. Therefore, only enable this output for the AcpiExec utility.
4611Also, only emit the thread ID when executing under AcpiExec (Context
4612switches are still always detected and a message is emitted). ACPICA BZ
4613972.
4614
4615Example Code and Data Size: These are the sizes for the OS-independent
4616acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4617debug version of the code includes the debug output trace mechanism and
4618has a much larger code and data size.
4619
4620  Current Release:
4621    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4622    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4623  Previous Release:
4624    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4625    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4626
4627
46282) iASL Compiler/Disassembler and Tools:
4629
4630AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
4631correct portable POSIX header for terminal control functions.
4632
4633Disassembler: Fixed control method invocation issues related to the use
4634of the CondRefOf() operator. The problem is seen in the disassembly where
4635control method invocations may not be disassembled properly if the
4636control method name has been used previously as an argument to CondRefOf.
4637The solution is to not attempt to emit an external declaration for the
4638CondRefOf target (it is not necessary in the first place). This prevents
4639disassembler object type confusion. ACPICA BZ 988.
4640
4641Unix Makefiles: Added an option to disable compiler optimizations and the
4642_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
4643with optimizations (reportedly, gcc 4.4 for example). This change adds a
4644command line option for make (NOOPT) that disables all compiler
4645optimizations and the _FORTIFY_SOURCE compiler flag. The default
4646optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
46471034. Lv Zheng, Bob Moore.
4648
4649Tests/ASLTS: Added options to specify individual test cases and modes.
4650This allows testers running aslts.sh to optionally specify individual
4651test modes and test cases. Also added an option to disable the forced
4652generation of the ACPICA tools from source if desired. Lv Zheng.
4653
4654----------------------------------------
465527 September 2013. Summary of changes for version 20130927:
4656
4657This release is available at https://acpica.org/downloads
4658
4659
46601) ACPICA kernel-resident subsystem:
4661
4662Fixed a problem with store operations to reference objects. This change
4663fixes a problem where a Store operation to an ArgX object that contained
4664a
4665reference to a field object did not complete the automatic dereference
4666and
4667then write to the actual field object. Instead, the object type of the
4668field object was inadvertently changed to match the type of the source
4669operand. The new behavior will actually write to the field object (buffer
4670field or field unit), thus matching the correct ACPI-defined behavior.
4671
4672Implemented support to allow the host to redefine individual OSL
4673prototypes. This change enables the host to redefine OSL prototypes found
4674in the acpiosxf.h file. This allows the host to implement OSL interfaces
4675with a macro or inlined function. Further, it allows the host to add any
4676additional required modifiers such as __iomem, __init, __exit, etc., as
4677necessary on a per-interface basis. Enables maximum flexibility for the
4678OSL interfaces. Lv Zheng.
4679
4680Hardcoded the access width for the FADT-defined reset register. The ACPI
4681specification requires the reset register width to be 8 bits. ACPICA now
4682hardcodes the width to 8 and ignores the FADT width value. This provides
4683compatibility with other ACPI implementations that have allowed BIOS code
4684with bad register width values to go unnoticed. Matthew Garett, Bob
4685Moore,
4686Lv Zheng.
4687
4688Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
4689used
4690in the OSL header (acpiosxf). The change modifies the position of this
4691macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
4692build issues if the OSL defines the implementation of the interface to be
4693an inline stub function. Lv Zheng.
4694
4695Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
4696initialization interfaces. This change adds a new macro for the main init
4697and terminate external interfaces in order to support hosts that require
4698additional or different processing for these functions. Changed from
4699ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
4700Zheng, Bob Moore.
4701
4702Cleaned up the memory allocation macros for configurability. In the
4703common
4704case, the ACPI_ALLOCATE and related macros now resolve directly to their
4705respective AcpiOs* OSL interfaces. Two options:
47061) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
4707default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
47082) For AcpiExec (and for debugging), the macros can optionally be
4709resolved
4710to the local ACPICA interfaces that track each allocation (local tracking
4711is used to immediately detect memory leaks).
4712Lv Zheng.
4713
4714Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
4715to predefine this macro to either TRUE or FALSE during the system build.
4716
4717Replaced __FUNCTION_ with __func__ in the gcc-specific header.
4718
4719Example Code and Data Size: These are the sizes for the OS-independent
4720acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4721debug version of the code includes the debug output trace mechanism and
4722has a much larger code and data size.
4723
4724  Current Release:
4725    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4726    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4727  Previous Release:
4728    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
4729    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4730
4731
47322) iASL Compiler/Disassembler and Tools:
4733
4734iASL: Implemented wildcard support for the -e option. This simplifies use
4735when there are many SSDTs that must be included to resolve external
4736method
4737declarations. ACPICA BZ 1041. Example:
4738    iasl -e ssdt*.dat -d dsdt.dat
4739
4740AcpiExec: Add history/line-editing for Unix/Linux systems. This change
4741adds a portable module that implements full history and limited line
4742editing for Unix and Linux systems. It does not use readline() due to
4743portability issues. Instead it uses the POSIX termio interface to put the
4744terminal in raw input mode so that the various special keys can be
4745trapped
4746(such as up/down-arrow for history support and left/right-arrow for line
4747editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
4748
4749AcpiXtract: Add support to handle (ignore) "empty" lines containing only
4750one or more spaces. This provides compatible with early or different
4751versions of the AcpiDump utility. ACPICA BZ 1044.
4752
4753AcpiDump: Do not ignore tables that contain only an ACPI table header.
4754Apparently, some BIOSs create SSDTs that contain an ACPI table header but
4755no other data. This change adds support to dump these tables. Any tables
4756shorter than the length of an ACPI table header remain in error (an error
4757message is emitted). Reported by Yi Li.
4758
4759Debugger: Echo actual command along with the "unknown command" message.
4760
4761----------------------------------------
476223 August 2013. Summary of changes for version 20130823:
4763
47641) ACPICA kernel-resident subsystem:
4765
4766Implemented support for host-installed System Control Interrupt (SCI)
4767handlers. Certain ACPI functionality requires the host to handle raw
4768SCIs. For example, the "SCI Doorbell" that is defined for memory power
4769state support requires the host device driver to handle SCIs to examine
4770if the doorbell has been activated. Multiple SCI handlers can be
4771installed to allow for future expansion. New external interfaces are
4772AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
4773details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
4774
4775Operation region support: Never locally free the handler "context"
4776pointer. This change removes some dangerous code that attempts to free
4777the handler context pointer in some (rare) circumstances. The owner of
4778the handler owns this pointer and the ACPICA code should never touch it.
4779Although not seen to be an issue in any kernel, it did show up as a
4780problem (fault) under AcpiExec. Also, set the internal storage field for
4781the context pointer to zero when the region is deactivated, simply for
4782sanity. David Box. ACPICA BZ 1039.
4783
4784AcpiRead: On error, do not modify the return value target location. If an
4785error happens in the middle of a split 32/32 64-bit I/O operation, do not
4786modify the target of the return value pointer. Makes the code consistent
4787with the rest of ACPICA. Bjorn Helgaas.
4788
4789Example Code and Data Size: These are the sizes for the OS-independent
4790acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4791debug version of the code includes the debug output trace mechanism and
4792has a much larger code and data size.
4793
4794  Current Release:
4795    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
4796    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4797  Previous Release:
4798    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
4799    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
4800
4801
48022) iASL Compiler/Disassembler and Tools:
4803
4804AcpiDump: Implemented several new features and fixed some problems:
48051) Added support to dump the RSDP, RSDT, and XSDT tables.
48062) Added support for multiple table instances (SSDT, UEFI).
48073) Added option to dump "customized" (overridden) tables (-c).
48084) Fixed a problem where some table filenames were improperly
4809constructed.
48105) Improved some error messages, removed some unnecessary messages.
4811
4812iASL: Implemented additional support for disassembly of ACPI tables that
4813contain invocations of external control methods. The -fe<file> option
4814allows the import of a file that specifies the external methods along
4815with the required number of arguments for each -- allowing for the
4816correct disassembly of the table. This is a workaround for a limitation
4817of AML code where the disassembler often cannot determine the number of
4818arguments required for an external control method and generates incorrect
4819ASL code. See the iASL reference for details. ACPICA BZ 1030.
4820
4821Debugger: Implemented a new command (paths) that displays the full
4822pathnames (namepaths) and object types of all objects in the namespace.
4823This is an alternative to the namespace command.
4824
4825Debugger: Implemented a new command (sci) that invokes the SCI dispatch
4826mechanism and any installed handlers.
4827
4828iASL: Fixed a possible segfault for "too many parent prefixes" condition.
4829This can occur if there are too many parent prefixes in a namepath (for
4830example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
4831
4832Application OSLs: Set the return value for the PCI read functions. These
4833functions simply return AE_OK, but should set the return value to zero
4834also. This change implements this. ACPICA BZ 1038.
4835
4836Debugger: Prevent possible command line buffer overflow. Increase the
4837size of a couple of the debugger line buffers, and ensure that overflow
4838cannot happen. ACPICA BZ 1037.
4839
4840iASL: Changed to abort immediately on serious errors during the parsing
4841phase. Due to the nature of ASL, there is no point in attempting to
4842compile these types of errors, and they typically end up causing a
4843cascade of hundreds of errors which obscure the original problem.
4844
4845----------------------------------------
484625 July 2013. Summary of changes for version 20130725:
4847
48481) ACPICA kernel-resident subsystem:
4849
4850Fixed a problem with the DerefOf operator where references to FieldUnits
4851and BufferFields incorrectly returned the parent object, not the actual
4852value of the object. After this change, a dereference of a FieldUnit
4853reference results in a read operation on the field to get the value, and
4854likewise, the appropriate BufferField value is extracted from the target
4855buffer.
4856
4857Fixed a problem where the _WAK method could cause a fault under these
4858circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
4859method returned no value. The problem is rarely seen because most kernels
4860run ACPICA in slack mode.
4861
4862For the DerefOf operator, a fatal error now results if an attempt is made
4863to dereference a reference (created by the Index operator) to a NULL
4864package element. Provides compatibility with other ACPI implementations,
4865and this behavior will be added to a future version of the ACPI
4866specification.
4867
4868The ACPI Power Management Timer (defined in the FADT) is now optional.
4869This provides compatibility with other ACPI implementations and will
4870appear in the next version of the ACPI specification. If there is no PM
4871Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
4872zero in the FADT indicates no PM timer.
4873
4874Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
4875allows the host to globally enable/disable all vendor strings, all
4876feature strings, or both. Intended to be primarily used for debugging
4877purposes only. Lv Zheng.
4878
4879Expose the collected _OSI data to the host via a global variable. This
4880data tracks the highest level vendor ID that has been invoked by the BIOS
4881so that the host (and potentially ACPICA itself) can change behaviors
4882based upon the age of the BIOS.
4883
4884Example Code and Data Size: These are the sizes for the OS-independent
4885acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4886debug version of the code includes the debug output trace mechanism and
4887has a much larger code and data size.
4888
4889  Current Release:
4890    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
4891    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4892  Previous Release:
4893    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
4894    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
4895
4896
48972) iASL Compiler/Disassembler and Tools:
4898
4899iASL: Created the following enhancements for the -so option (create
4900offset table):
49011)Add offsets for the last nameseg in each namepath for every supported
4902object type
49032)Add support for Processor, Device, Thermal Zone, and Scope objects
49043)Add the actual AML opcode for the parent object of every supported
4905object type
49064)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
4907
4908Disassembler: Emit all unresolved external symbols in a single block.
4909These are external references to control methods that could not be
4910resolved, and thus, the disassembler had to make a guess at the number of
4911arguments to parse.
4912
4913iASL: The argument to the -T option (create table template) is now
4914optional. If not specified, the default table is a DSDT, typically the
4915most common case.
4916
4917----------------------------------------
491826 June 2013. Summary of changes for version 20130626:
4919
49201) ACPICA kernel-resident subsystem:
4921
4922Fixed an issue with runtime repair of the _CST object. Null or invalid
4923elements were not always removed properly. Lv Zheng.
4924
4925Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
4926FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
4927the maximum number of GPEs is 1016. Use of multiple GPE block devices
4928makes the system-wide number of GPEs essentially unlimited.
4929
4930Example Code and Data Size: These are the sizes for the OS-independent
4931acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4932debug version of the code includes the debug output trace mechanism and
4933has a much larger code and data size.
4934
4935  Current Release:
4936    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
4937    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
4938  Previous Release:
4939    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
4940    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
4941
4942
49432) iASL Compiler/Disassembler and Tools:
4944
4945Portable AcpiDump: Implemented full support for the Linux and FreeBSD
4946hosts. Now supports Linux, FreeBSD, and Windows.
4947
4948Disassembler: Added some missing types for the HEST and EINJ tables: "Set
4949Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
4950
4951iASL/Preprocessor: Implemented full support for nested
4952#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
4953
4954Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
4955max. The original purpose of this constraint was to limit the amount of
4956debug output. However, the string function in question (UtPrintString) is
4957now used for the disassembler also, where 256 bytes is insufficient.
4958Reported by RehabMan@GitHub.
4959
4960iASL/DataTables: Fixed some problems and issues with compilation of DMAR
4961tables. ACPICA BZ 999. Lv Zheng.
4962
4963iASL: Fixed a couple of error exit issues that could result in a "Could
4964not delete <file>" message during ASL compilation.
4965
4966AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
4967the actual signatures for these tables are "FACP" and "APIC",
4968respectively.
4969
4970AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
4971tables are allowed to have multiple instances.
4972
4973----------------------------------------
497417 May 2013. Summary of changes for version 20130517:
4975
49761) ACPICA kernel-resident subsystem:
4977
4978Fixed a regression introduced in version 20130328 for _INI methods. This
4979change fixes a problem introduced in 20130328 where _INI methods are no
4980longer executed properly because of a memory block that was not
4981initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
4982<tomasz.nowicki@linaro.org>.
4983
4984Fixed a possible problem with the new extended sleep registers in the
4985ACPI
49865.0 FADT. Do not use these registers (even if populated) unless the HW-
4987reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
49881020. Lv Zheng.
4989
4990Implemented return value repair code for _CST predefined objects: Sort
4991the
4992list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
4993
4994Implemented a debug-only option to disable loading of SSDTs from the
4995RSDT/XSDT during ACPICA initialization. This can be useful for debugging
4996ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
4997acglobal.h - ACPICA BZ 1005. Lv Zheng.
4998
4999Fixed some issues in the ACPICA initialization and termination code:
5000Tomasz Nowicki <tomasz.nowicki@linaro.org>
50011) Clear events initialized flag upon event component termination. ACPICA
5002BZ 1013.
50032) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
50043) Delete global lock pending lock during termination. ACPICA BZ 1012.
50054) Clear debug buffer global on termination to prevent possible multiple
5006delete. ACPICA BZ 1010.
5007
5008Standardized all switch() blocks across the entire source base. After
5009many
5010years, different formatting for switch() had crept in. This change makes
5011the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
5012
5013Split some files to enhance ACPICA modularity and configurability:
50141) Split buffer dump routines into utilities/utbuffer.c
50152) Split internal error message routines into utilities/uterror.c
50163) Split table print utilities into tables/tbprint.c
50174) Split iASL command-line option processing into asloptions.c
5018
5019Makefile enhancements:
50201) Support for all new files above.
50212) Abort make on errors from any subcomponent. Chao Guan.
50223) Add build support for Apple Mac OS X. Liang Qi.
5023
5024Example Code and Data Size: These are the sizes for the OS-independent
5025acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5026debug version of the code includes the debug output trace mechanism and
5027has a much larger code and data size.
5028
5029  Current Release:
5030    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
5031    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
5032  Previous Release:
5033    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
5034    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
5035
5036
50372) iASL Compiler/Disassembler and Tools:
5038
5039New utility: Implemented an easily portable version of the acpidump
5040utility to extract ACPI tables from the system (or a file) in an ASCII
5041hex
5042dump format. The top-level code implements the various command line
5043options, file I/O, and table dump routines. To port to a new host, only
5044three functions need to be implemented to get tables -- since this
5045functionality is OS-dependent. See the tools/acpidump/apmain.c module and
5046the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
50471) The Windows version obtains the ACPI tables from the Registry.
50482) The Linux version is under development.
50493) Other hosts - If an OS-dependent module is submitted, it will be
5050distributed with ACPICA.
5051
5052iASL: Fixed a regression for -D preprocessor option (define symbol). A
5053restructuring/change to the initialization sequence caused this option to
5054no longer work properly.
5055
5056iASL: Implemented a mechanism to disable specific warnings and remarks.
5057Adds a new command line option, "-vw <messageid> as well as "#pragma
5058disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
5059
5060iASL: Fix for too-strict package object validation. The package object
5061validation for return values from the predefined names is a bit too
5062strict, it does not allow names references within the package (which will
5063be resolved at runtime.) These types of references cannot be validated at
5064compile time. This change ignores named references within package objects
5065for names that return or define static packages.
5066
5067Debugger: Fixed the 80-character command line limitation for the History
5068command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
5069
5070iASL: Added control method and package support for the -so option
5071(generates AML offset table for BIOS support.)
5072
5073iASL: issue a remark if a non-serialized method creates named objects. If
5074a thread blocks within the method for any reason, and another thread
5075enters the method, the method will fail because an attempt will be made
5076to
5077create the same (named) object twice. In this case, issue a remark that
5078the method should be marked serialized. NOTE: may become a warning later.
5079ACPICA BZ 909.
5080
5081----------------------------------------
508218 April 2013. Summary of changes for version 20130418:
5083
50841) ACPICA kernel-resident subsystem:
5085
5086Fixed a possible buffer overrun during some rare but specific field unit
5087read operations. This overrun can only happen if the DSDT version is 1 --
5088meaning that all AML integers are 32 bits -- and the field length is
5089between 33 and 55 bits long. During the read, an internal buffer object
5090is
5091created for the field unit because the field is larger than an integer
5092(32
5093bits). However, in this case, the buffer will be incorrectly written
5094beyond the end because the buffer length is less than the internal
5095minimum
5096of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
5097long, but a full 8 bytes will be written.
5098
5099Updated the Embedded Controller "orphan" _REG method support. This refers
5100to _REG methods under the EC device that have no corresponding operation
5101region. This is allowed by the ACPI specification. This update removes a
5102dependency on the existence an ECDT table. It will execute an orphan _REG
5103method as long as the operation region handler for the EC is installed at
5104the EC device node and not the namespace root. Rui Zhang (original
5105update), Bob Moore (update/integrate).
5106
5107Implemented run-time argument typechecking for all predefined ACPI names
5108(_STA, _BIF, etc.) This change performs object typechecking on all
5109incoming arguments for all predefined names executed via
5110AcpiEvaluateObject. This ensures that ACPI-related device drivers are
5111passing correct object types as well as the correct number of arguments
5112(therefore identifying any issues immediately). Also, the ASL/namespace
5113definition of the predefined name is checked against the ACPI
5114specification for the proper argument count. Adds one new file,
5115nsarguments.c
5116
5117Changed an exception code for the ASL UnLoad() operator. Changed the
5118exception code for the case where the input DdbHandle is invalid, from
5119AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
5120
5121Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
5122global makefile. The use of this flag causes compiler errors on earlier
5123versions of GCC, so it has been removed for compatibility.
5124
5125Miscellaneous cleanup:
51261) Removed some unused/obsolete macros
51272) Fixed a possible memory leak in the _OSI support
51283) Removed an unused variable in the predefined name support
51294) Windows OSL: remove obsolete reference to a memory list field
5130
5131Example Code and Data Size: These are the sizes for the OS-independent
5132acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5133debug version of the code includes the debug output trace mechanism and
5134has a much larger code and data size.
5135
5136  Current Release:
5137    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
5138    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
5139  Previous Release:
5140    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
5141    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
5142
5143
51442) iASL Compiler/Disassembler and Tools:
5145
5146AcpiExec: Added installation of a handler for the SystemCMOS address
5147space. This prevents control method abort if a method accesses this
5148space.
5149
5150AcpiExec: Added support for multiple EC devices, and now install EC
5151operation region handler(s) at the actual EC device instead of the
5152namespace root. This reflects the typical behavior of host operating
5153systems.
5154
5155AcpiExec: Updated to ensure that all operation region handlers are
5156installed before the _REG methods are executed. This prevents a _REG
5157method from aborting if it accesses an address space has no handler.
5158AcpiExec installs a handler for every possible address space.
5159
5160Debugger: Enhanced the "handlers" command to display non-root handlers.
5161This change enhances the handlers command to display handlers associated
5162with individual devices throughout the namespace, in addition to the
5163currently supported display of handlers associated with the root
5164namespace
5165node.
5166
5167ASL Test Suite: Several test suite errors have been identified and
5168resolved, reducing the total error count during execution. Chao Guan.
5169
5170----------------------------------------
517128 March 2013. Summary of changes for version 20130328:
5172
51731) ACPICA kernel-resident subsystem:
5174
5175Fixed several possible race conditions with the internal object reference
5176counting mechanism. Some of the external ACPICA interfaces update object
5177reference counts without holding the interpreter or namespace lock. This
5178change adds a spinlock to protect reference count updates on the internal
5179ACPICA objects. Reported by and with assistance from Andriy Gapon
5180(avg@FreeBSD.org).
5181
5182FADT support: Removed an extraneous warning for very large GPE register
5183sets. This change removes a size mismatch warning if the legacy length
5184field for a GPE register set is larger than the 64-bit GAS structure can
5185accommodate. GPE register sets can be larger than the 255-bit width
5186limitation of the GAS structure. Linn Crosetto (linn@hp.com).
5187
5188_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
5189return from this interface. Handles a possible timeout case if
5190ACPI_WAIT_FOREVER is modified by the host to be a value less than
5191"forever". Jung-uk Kim.
5192
5193Predefined name support: Add allowed/required argument type information
5194to
5195the master predefined info table. This change adds the infrastructure to
5196enable typechecking on incoming arguments for all predefined
5197methods/objects. It does not actually contain the code that will fully
5198utilize this information, this is still under development. Also condenses
5199some duplicate code for the predefined names into a new module,
5200utilities/utpredef.c
5201
5202Example Code and Data Size: These are the sizes for the OS-independent
5203acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5204debug version of the code includes the debug output trace mechanism and
5205has a much larger code and data size.
5206
5207  Previous Release:
5208    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
5209    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
5210  Current Release:
5211    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
5212    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
5213
5214
52152) iASL Compiler/Disassembler and Tools:
5216
5217iASL: Implemented a new option to simplify the development of ACPI-
5218related
5219BIOS code. Adds support for a new "offset table" output file. The -so
5220option will create a C table containing the AML table offsets of various
5221named objects in the namespace so that BIOS code can modify them easily
5222at
5223boot time. This can simplify BIOS runtime code by eliminating expensive
5224searches for "magic values", enhancing boot times and adding greater
5225reliability. With assistance from Lee Hamel.
5226
5227iASL: Allow additional predefined names to return zero-length packages.
5228Now, all predefined names that are defined by the ACPI specification to
5229return a "variable-length package of packages" are allowed to return a
5230zero length top-level package. This allows the BIOS to tell the host that
5231the requested feature is not supported, and supports existing BIOS/ASL
5232code and practices.
5233
5234iASL: Changed the "result not used" warning to an error. This is the case
5235where an ASL operator is effectively a NOOP because the result of the
5236operation is not stored anywhere. For example:
5237    Add (4, Local0)
5238There is no target (missing 3rd argument), nor is the function return
5239value used. This is potentially a very serious problem -- since the code
5240was probably intended to do something, but for whatever reason, the value
5241was not stored. Therefore, this issue has been upgraded from a warning to
5242an error.
5243
5244AcpiHelp: Added allowable/required argument types to the predefined names
5245info display. This feature utilizes the recent update to the predefined
5246names table (above).
5247
5248----------------------------------------
524914 February 2013. Summary of changes for version 20130214:
5250
52511) ACPICA Kernel-resident Subsystem:
5252
5253Fixed a possible regression on some hosts: Reinstated the safe return
5254macros (return_ACPI_STATUS, etc.) that ensure that the argument is
5255evaluated only once. Although these macros are not needed for the ACPICA
5256code itself, they are often used by ACPI-related host device drivers
5257where
5258the safe feature may be necessary.
5259
5260Fixed several issues related to the ACPI 5.0 reduced hardware support
5261(SOC): Now ensure that if the platform declares itself as hardware-
5262reduced
5263via the FADT, the following functions become NOOPs (and always return
5264AE_OK) because ACPI is always enabled by definition on these machines:
5265  AcpiEnable
5266  AcpiDisable
5267  AcpiHwGetMode
5268  AcpiHwSetMode
5269
5270Dynamic Object Repair: Implemented additional runtime repairs for
5271predefined name return values. Both of these repairs can simplify code in
5272the related device drivers that invoke these methods:
52731) For the _STR and _MLS names, automatically repair/convert an ASCII
5274string to a Unicode buffer.
52752) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
5276a
5277lone end tag descriptor in the following cases: A Return(0) was executed,
5278a null buffer was returned, or no object at all was returned (non-slack
5279mode only). Adds a new file, nsconvert.c
5280ACPICA BZ 998. Bob Moore, Lv Zheng.
5281
5282Resource Manager: Added additional code to prevent possible infinite
5283loops
5284while traversing corrupted or ill-formed resource template buffers. Check
5285for zero-length resource descriptors in all code that loops through
5286resource templates (the length field is used to index through the
5287template). This change also hardens the external AcpiWalkResources and
5288AcpiWalkResourceBuffer interfaces.
5289
5290Local Cache Manager: Enhanced the main data structure to eliminate an
5291unnecessary mechanism to access the next object in the list. Actually
5292provides a small performance enhancement for hosts that use the local
5293ACPICA cache manager. Jung-uk Kim.
5294
5295Example Code and Data Size: These are the sizes for the OS-independent
5296acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5297debug version of the code includes the debug output trace mechanism and
5298has a much larger code and data size.
5299
5300  Previous Release:
5301    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
5302    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
5303  Current Release:
5304    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
5305    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
5306
5307
53082) iASL Compiler/Disassembler and Tools:
5309
5310iASL/Disassembler: Fixed several issues with the definition of the ACPI
53115.0 RASF table (RAS Feature Table). This change incorporates late changes
5312that were made to the ACPI 5.0 specification.
5313
5314iASL/Disassembler: Added full support for the following new ACPI tables:
5315  1) The MTMR table (MID Timer Table)
5316  2) The VRTC table (Virtual Real Time Clock Table).
5317Includes header file, disassembler, table compiler, and template support
5318for both tables.
5319
5320iASL: Implemented compile-time validation of package objects returned by
5321predefined names. This new feature validates static package objects
5322returned by the various predefined names defined to return packages. Both
5323object types and package lengths are validated, for both parent packages
5324and sub-packages, if any. The code is similar in structure and behavior
5325to
5326the runtime repair mechanism within the AML interpreter and uses the
5327existing predefined name information table. Adds a new file, aslprepkg.c.
5328ACPICA BZ 938.
5329
5330iASL: Implemented auto-detection of binary ACPI tables for disassembly.
5331This feature detects a binary file with a valid ACPI table header and
5332invokes the disassembler automatically. Eliminates the need to
5333specifically invoke the disassembler with the -d option. ACPICA BZ 862.
5334
5335iASL/Disassembler: Added several warnings for the case where there are
5336unresolved control methods during the disassembly. This can potentially
5337cause errors when the output file is compiled, because the disassembler
5338assumes zero method arguments in these cases (it cannot determine the
5339actual number of arguments without resolution/definition of the method).
5340
5341Debugger: Added support to display all resources with a single command.
5342Invocation of the resources command with no arguments will now display
5343all
5344resources within the current namespace.
5345
5346AcpiHelp: Added descriptive text for each ACPICA exception code displayed
5347via the -e option.
5348
5349----------------------------------------
535017 January 2013. Summary of changes for version 20130117:
5351
53521) ACPICA Kernel-resident Subsystem:
5353
5354Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
5355return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
5356objects to return a package containing one integer, most BIOS code
5357returns
5358two integers and the previous code reflects that. However, we also need
5359to
5360support BIOS code that actually implements to the ACPI spec, and this
5361change reflects this.
5362
5363Fixed two issues with the ACPI_DEBUG_PRINT macros:
53641) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
5365C compilers that require this support.
53662) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
5367ACPI_DEBUG is already used by many of the various hosts.
5368
5369Updated all ACPICA copyrights and signons to 2013. Added the 2013
5370copyright to all module headers and signons, including the standard Linux
5371header. This affects virtually every file in the ACPICA core subsystem,
5372iASL compiler, all ACPICA utilities, and the test suites.
5373
5374Example Code and Data Size: These are the sizes for the OS-independent
5375acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5376debug version of the code includes the debug output trace mechanism and
5377has a much larger code and data size.
5378
5379  Previous Release:
5380    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
5381    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
5382  Current Release:
5383    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
5384    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
5385
5386
53872) iASL Compiler/Disassembler and Tools:
5388
5389Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
5390prevent a possible fault on some hosts. Some C libraries modify the arg
5391pointer parameter to vfprintf making it difficult to call it twice in the
5392AcpiOsVprintf function. Use a local buffer to workaround this issue. This
5393does not affect the Windows OSL since the Win C library does not modify
5394the arg pointer. Chao Guan, Bob Moore.
5395
5396iASL: Fixed a possible infinite loop when the maximum error count is
5397reached. If an output file other than the .AML file is specified (such as
5398a listing file), and the maximum number of errors is reached, do not
5399attempt to flush data to the output file(s) as the compiler is aborting.
5400This can cause an infinite loop as the max error count code essentially
5401keeps calling itself.
5402
5403iASL/Disassembler: Added an option (-in) to ignore NOOP
5404opcodes/operators.
5405Implemented for both the compiler and the disassembler. Often, the NOOP
5406opcode is used as padding for packages that are changed dynamically by
5407the
5408BIOS. When disassembled and recompiled, these NOOPs will cause syntax
5409errors. This option causes the disassembler to ignore all NOOP opcodes
5410(0xA3), and it also causes the compiler to ignore all ASL source code
5411NOOP
5412statements as well.
5413
5414Debugger: Enhanced the Sleep command to execute all sleep states. This
5415change allows Sleep to be invoked with no arguments and causes the
5416debugger to execute all of the sleep states, 0-5, automatically.
5417
5418----------------------------------------
541920 December 2012. Summary of changes for version 20121220:
5420
54211) ACPICA Kernel-resident Subsystem:
5422
5423Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
5424alternate entry point for AcpiWalkResources and improves the usability of
5425the resource manager by accepting as input a buffer containing the output
5426of either a _CRS, _PRS, or _AEI method. The key functionality is that the
5427input buffer is not deleted by this interface so that it can be used by
5428the host later. See the ACPICA reference for details.
5429
5430Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
5431(DSDT version < 2). The constant will be truncated and this warning
5432reflects that behavior.
5433
5434Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
5435ExtendedInterrupt, and GpioInt descriptors. This change adds support to
5436both get and set the new wake bit in these descriptors, separately from
5437the existing share bit. Reported by Aaron Lu.
5438
5439Interpreter: Fix Store() when an implicit conversion is not possible. For
5440example, in the cases such as a store of a string to an existing package
5441object, implement the store as a CopyObject(). This is a small departure
5442from the ACPI specification which states that the control method should
5443be
5444aborted in this case. However, the ASLTS suite depends on this behavior.
5445
5446Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
5447macros: check if debug output is currently enabled as soon as possible to
5448minimize performance impact if debug is in fact not enabled.
5449
5450Source code restructuring: Cleanup to improve modularity. The following
5451new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
5452psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
5453Associated makefiles and project files have been updated.
5454
5455Changed an exception code for LoadTable operator. For the case where one
5456of the input strings is too long, change the returned exception code from
5457AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
5458
5459Fixed a possible memory leak in dispatcher error path. On error, delete
5460the mutex object created during method mutex creation. Reported by
5461tim.gardner@canonical.com.
5462
5463Example Code and Data Size: These are the sizes for the OS-independent
5464acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5465debug version of the code includes the debug output trace mechanism and
5466has a much larger code and data size.
5467
5468  Previous Release:
5469    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
5470    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5471  Current Release:
5472    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
5473    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
5474
5475
54762) iASL Compiler/Disassembler and Tools:
5477
5478iASL: Disallow a method call as argument to the ObjectType ASL operator.
5479This change tracks an errata to the ACPI 5.0 document. The AML grammar
5480will not allow the interpreter to differentiate between a method and a
5481method invocation when these are used as an argument to the ObjectType
5482operator. The ACPI specification change is to disallow a method
5483invocation
5484(UserTerm) for the ObjectType operator.
5485
5486Finish support for the TPM2 and CSRT tables in the headers, table
5487compiler, and disassembler.
5488
5489Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
5490always expires immediately if the semaphore is not available. The
5491original
5492code was using a relative-time timeout, but sem_timedwait requires the
5493use
5494of an absolute time.
5495
5496iASL: Added a remark if the Timer() operator is used within a 32-bit
5497table. This operator returns a 64-bit time value that will be truncated
5498within a 32-bit table.
5499
5500iASL Source code restructuring: Cleanup to improve modularity. The
5501following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
5502aslmethod.c, and aslfileio.c. Associated makefiles and project files have
5503been updated.
5504
5505
5506----------------------------------------
550714 November 2012. Summary of changes for version 20121114:
5508
55091) ACPICA Kernel-resident Subsystem:
5510
5511Implemented a performance enhancement for ACPI/AML Package objects. This
5512change greatly increases the performance of Package objects within the
5513interpreter. It changes the processing of reference counts for packages
5514by
5515optimizing for the most common case where the package sub-objects are
5516either Integers, Strings, or Buffers. Increases the overall performance
5517of
5518the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
55192X.)
5520Chao Guan. ACPICA BZ 943.
5521
5522Implemented and deployed common macros to extract flag bits from resource
5523descriptors. Improves readability and maintainability of the code. Fixes
5524a
5525problem with the UART serial bus descriptor for the number of data bits
5526flags (was incorrectly 2 bits, should be 3).
5527
5528Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
5529of the macros and changed the SETx macros to the style of (destination,
5530source). Also added ACPI_CASTx companion macros. Lv Zheng.
5531
5532Example Code and Data Size: These are the sizes for the OS-independent
5533acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5534debug version of the code includes the debug output trace mechanism and
5535has a much larger code and data size.
5536
5537  Previous Release:
5538    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
5539    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5540  Current Release:
5541    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
5542    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5543
5544
55452) iASL Compiler/Disassembler and Tools:
5546
5547Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
5548adds the ShareAndWake and ExclusiveAndWake flags which were added to the
5549Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
5550
5551Disassembler: Fixed a problem with external declaration generation. Fixes
5552a problem where an incorrect pathname could be generated for an external
5553declaration if the original reference to the object includes leading
5554carats (^). ACPICA BZ 984.
5555
5556Debugger: Completed a major update for the Disassemble<method> command.
5557This command was out-of-date and did not properly disassemble control
5558methods that had any reasonable complexity. This fix brings the command
5559up
5560to the same level as the rest of the disassembler. Adds one new file,
5561dmdeferred.c, which is existing code that is now common with the main
5562disassembler and the debugger disassemble command. ACPICA MZ 978.
5563
5564iASL: Moved the parser entry prototype to avoid a duplicate declaration.
5565Newer versions of Bison emit this prototype, so moved the prototype out
5566of
5567the iASL header to where it is actually used in order to avoid a
5568duplicate
5569declaration.
5570
5571iASL/Tools: Standardized use of the stream I/O functions:
5572  1) Ensure check for I/O error after every fopen/fread/fwrite
5573  2) Ensure proper order of size/count arguments for fread/fwrite
5574  3) Use test of (Actual != Requested) after all fwrite, and most fread
5575  4) Standardize I/O error messages
5576Improves reliability and maintainability of the code. Bob Moore, Lv
5577Zheng.
5578ACPICA BZ 981.
5579
5580Disassembler: Prevent duplicate External() statements. During generation
5581of external statements, detect similar pathnames that are actually
5582duplicates such as these:
5583  External (\ABCD)
5584  External (ABCD)
5585Remove all leading '\' characters from pathnames during the external
5586statement generation so that duplicates will be detected and tossed.
5587ACPICA BZ 985.
5588
5589Tools: Replace low-level I/O with stream I/O functions. Replace
5590open/read/write/close with the stream I/O equivalents
5591fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
5592Moore.
5593
5594AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
5595name header so that AcpiXtract recognizes the output file/table.
5596
5597iASL: Remove obsolete -2 option flag. Originally intended to force the
5598compiler/disassembler into an ACPI 2.0 mode, this was never implemented
5599and the entire concept is now obsolete.
5600
5601----------------------------------------
560218 October 2012. Summary of changes for version 20121018:
5603
5604
56051) ACPICA Kernel-resident Subsystem:
5606
5607Updated support for the ACPI 5.0 MPST table. Fixes some problems
5608introduced by late changes to the table as it was added to the ACPI 5.0
5609specification. Includes header, disassembler, and data table compiler
5610support as well as a new version of the MPST template.
5611
5612AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
56135.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
5614methods: _HID, _CID, and _UID.
5615
5616Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
5617ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
5618name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
5619names for their various drivers. Affects the AcpiGetObjectInfo external
5620interface, and other internal interfaces as well.
5621
5622Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
5623This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
5624on machines that support non-aligned transfers. Optimizes for this case
5625rather than using a strncpy. With assistance from Zheng Lv.
5626
5627Resource Manager: Small fix for buffer size calculation. Fixed a one byte
5628error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
5629
5630Added a new debug print message for AML mutex objects that are force-
5631released. At control method termination, any currently acquired mutex
5632objects are force-released. Adds a new debug-only message for each one
5633that is released.
5634
5635Audited/updated all ACPICA return macros and the function debug depth
5636counter: 1) Ensure that all functions that use the various TRACE macros
5637also use the appropriate ACPICA return macros. 2) Ensure that all normal
5638return statements surround the return expression (value) with parens to
5639ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
5640Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
5641
5642Global source code changes/maintenance: All extra lines at the start and
5643end of each source file have been removed for consistency. Also, within
5644comments, all new sentences start with a single space instead of a double
5645space, again for consistency across the code base.
5646
5647Example Code and Data Size: These are the sizes for the OS-independent
5648acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5649debug version of the code includes the debug output trace mechanism and
5650has a much larger code and data size.
5651
5652  Previous Release:
5653    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
5654    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
5655  Current Release:
5656    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
5657    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5658
5659
56602) iASL Compiler/Disassembler and Tools:
5661
5662AcpiExec: Improved the algorithm used for memory leak/corruption
5663detection. Added some intelligence to the code that maintains the global
5664list of allocated memory. The list is now ordered by allocated memory
5665address, significantly improving performance. When running AcpiExec on
5666the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
5667on the platform and/or the environment. Note, this performance
5668enhancement affects the AcpiExec utility only, not the kernel-resident
5669ACPICA code.
5670
5671Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
5672the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
5673incorrect table offset reported for invalid opcodes. Report the original
567432-bit value for bad ACPI_NAMEs (as well as the repaired name.)
5675
5676Disassembler: Enhanced the -vt option to emit the binary table data in
5677hex format to assist with debugging.
5678
5679Fixed a potential filename buffer overflow in osunixdir.c. Increased the
5680size of file structure. Colin Ian King.
5681
5682----------------------------------------
568313 September 2012. Summary of changes for version 20120913:
5684
5685
56861) ACPICA Kernel-resident Subsystem:
5687
5688ACPI 5.0: Added two new notify types for the Hardware Error Notification
5689Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
5690and
5691MCE(6).
5692
5693Table Manager: Merged/removed duplicate code in the root table resize
5694functions. One function is external, the other is internal. Lv Zheng,
5695ACPICA
5696BZ 846.
5697
5698Makefiles: Completely removed the obsolete "Linux" makefiles under
5699acpica/generate/linux. These makefiles are obsolete and have been
5700replaced
5701by
5702the generic unix makefiles under acpica/generate/unix.
5703
5704Makefiles: Ensure that binary files always copied properly. Minor rule
5705change
5706to ensure that the final binary output files are always copied up to the
5707appropriate binary directory (bin32 or bin64.)
5708
5709Example Code and Data Size: These are the sizes for the OS-independent
5710acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5711debug
5712version of the code includes the debug output trace mechanism and has a
5713much
5714larger code and data size.
5715
5716  Previous Release:
5717    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
5718    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
5719  Current Release:
5720    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
5721    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
5722
5723
57242) iASL Compiler/Disassembler and Tools:
5725
5726Disassembler: Fixed a possible fault during the disassembly of resource
5727descriptors when a second parse is required because of the invocation of
5728external control methods within the table. With assistance from
5729adq@lidskialf.net. ACPICA BZ 976.
5730
5731iASL: Fixed a namepath optimization problem. An error can occur if the
5732parse
5733node that contains the namepath to be optimized does not have a parent
5734node
5735that is a named object. This change fixes the problem.
5736
5737iASL: Fixed a regression where the AML file is not deleted on errors. The
5738AML
5739output file should be deleted if there are any errors during the
5740compiler.
5741The
5742only exception is if the -f (force output) option is used. ACPICA BZ 974.
5743
5744iASL: Added a feature to automatically increase internal line buffer
5745sizes.
5746Via realloc(), automatically increase the internal line buffer sizes as
5747necessary to support very long source code lines. The current version of
5748the
5749preprocessor requires a buffer long enough to contain full source code
5750lines.
5751This change increases the line buffer(s) if the input lines go beyond the
5752current buffer size. This eliminates errors that occurred when a source
5753code
5754line was longer than the buffer.
5755
5756iASL: Fixed a problem with constant folding in method declarations. The
5757SyncLevel term is a ByteConstExpr, and incorrect code would be generated
5758if a
5759Type3 opcode was used.
5760
5761Debugger: Improved command help support. For incorrect argument count,
5762display
5763full help for the command. For help command itself, allow an argument to
5764specify a command.
5765
5766Test Suites: Several bug fixes for the ASLTS suite reduces the number of
5767errors during execution of the suite. Guan Chao.
5768
5769----------------------------------------
577016 August 2012. Summary of changes for version 20120816:
5771
5772
57731) ACPICA Kernel-resident Subsystem:
5774
5775Removed all use of the deprecated _GTS and _BFS predefined methods. The
5776_GTS
5777(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
5778deprecated and will probably be removed from the ACPI specification.
5779Windows
5780does not invoke them, and reportedly never will. The final nail in the
5781coffin
5782is that the ACPI specification states that these methods must be run with
5783interrupts off, which is not going to happen in a kernel interpreter.
5784Note:
5785Linux has removed all use of the methods also. It was discovered that
5786invoking these functions caused failures on some machines, probably
5787because
5788they were never tested since Windows does not call them. Affects two
5789external
5790interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
5791ACPICA BZ 969.
5792
5793Implemented support for complex bit-packed buffers returned from the _PLD
5794(Physical Location of Device) predefined method. Adds a new external
5795interface, AcpiDecodePldBuffer that parses the buffer into a more usable
5796C
5797structure. Note: C Bitfields cannot be used for this type of predefined
5798structure since the memory layout of individual bitfields is not defined
5799by
5800the C language. In addition, there are endian concerns where a compiler
5801will
5802change the bitfield ordering based on the machine type. The new ACPICA
5803interface eliminates these issues, and should be called after _PLD is
5804executed. ACPICA BZ 954.
5805
5806Implemented a change to allow a scope change to root (via "Scope (\)")
5807during
5808execution of module-level ASL code (code that is executed at table load
5809time.) Lin Ming.
5810
5811Added the Windows8/Server2012 string for the _OSI method. This change
5812adds
5813a
5814new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
58152012.
5816
5817Added header support for the new ACPI tables DBG2 (Debug Port Table Type
58182)
5819and CSRT (Core System Resource Table).
5820
5821Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
5822names. This simplifies access to the buffers returned by these predefined
5823names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
5824
5825GPE support: Removed an extraneous parameter from the various low-level
5826internal GPE functions. Tang Feng.
5827
5828Removed the linux makefiles from the unix packages. The generate/linux
5829makefiles are obsolete and have been removed from the unix tarball
5830release
5831packages. The replacement makefiles are under generate/unix, and there is
5832a
5833top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
5834
5835Updates for Unix makefiles:
58361) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
58372) Update linker flags (move to end of command line) for AcpiExec
5838utility.
5839Guan Chao.
5840
5841Split ACPICA initialization functions to new file, utxfinit.c. Split from
5842utxface.c to improve modularity and reduce file size.
5843
5844Example Code and Data Size: These are the sizes for the OS-independent
5845acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5846debug version of the code includes the debug output trace mechanism and
5847has a
5848much larger code and data size.
5849
5850  Previous Release:
5851    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
5852    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
5853  Current Release:
5854    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
5855    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
5856
5857
58582) iASL Compiler/Disassembler and Tools:
5859
5860iASL: Fixed a problem with constant folding for fixed-length constant
5861expressions. The constant-folding code was not being invoked for constant
5862expressions that allow the use of type 3/4/5 opcodes to generate
5863constants
5864for expressions such as ByteConstExpr, WordConstExpr, etc. This could
5865result
5866in the generation of invalid AML bytecode. ACPICA BZ 970.
5867
5868iASL: Fixed a generation issue on newer versions of Bison. Newer versions
5869apparently automatically emit some of the necessary externals. This
5870change
5871handles these versions in order to eliminate generation warnings.
5872
5873Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
5874
5875Disassembler: Add support to decode _PLD buffers. The decoded buffer
5876appears
5877within comments in the output file.
5878
5879Debugger: Fixed a regression with the "Threads" command where
5880AE_BAD_PARAMETER was always returned.
5881
5882----------------------------------------
588311 July 2012. Summary of changes for version 20120711:
5884
58851) ACPICA Kernel-resident Subsystem:
5886
5887Fixed a possible fault in the return package object repair code. Fixes a
5888problem that can occur when a lone package object is wrapped with an
5889outer
5890package object in order to force conformance to the ACPI specification.
5891Can
5892affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
5893_DLM,
5894_CSD, _PSD, _TSD.
5895
5896Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
5897PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
5898ARB_DIS bit must be implemented in the host-dependent C3 processor power
5899state
5900support. Note, ARB_DIS is obsolete and only applies to older chipsets,
5901both
5902Intel and other vendors. (for Intel: ICH4-M and earlier)
5903
5904This change removes the code to disable/enable bus master arbitration
5905during
5906suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
5907causes
5908resume problems on some machines. The change has been in use for over
5909seven
5910years within Linux.
5911
5912Implemented two new external interfaces to support host-directed dynamic
5913ACPI
5914table load and unload. They are intended to simplify the host
5915implementation
5916of hot-plug support:
5917  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
5918  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
5919table.
5920See the ACPICA reference for additional details. Adds one new file,
5921components/tables/tbxfload.c
5922
5923Implemented and deployed two new interfaces for errors and warnings that
5924are
5925known to be caused by BIOS/firmware issues:
5926  AcpiBiosError: Prints "ACPI Firmware Error" message.
5927  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
5928Deployed these new interfaces in the ACPICA Table Manager code for ACPI
5929table
5930and FADT errors. Additional deployment to be completed as appropriate in
5931the
5932future. The associated conditional macros are ACPI_BIOS_ERROR and
5933ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
5934ACPICA
5935BZ
5936843.
5937
5938Implicit notify support: ensure that no memory allocation occurs within a
5939critical region. This fix moves a memory allocation outside of the time
5940that a
5941spinlock is held. Fixes issues on systems that do not allow this
5942behavior.
5943Jung-uk Kim.
5944
5945Split exception code utilities and tables into a new file,
5946utilities/utexcep.c
5947
5948Example Code and Data Size: These are the sizes for the OS-independent
5949acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5950debug
5951version of the code includes the debug output trace mechanism and has a
5952much
5953larger code and data size.
5954
5955  Previous Release:
5956    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
5957    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
5958  Current Release:
5959    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
5960    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
5961
5962
59632) iASL Compiler/Disassembler and Tools:
5964
5965iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
5966of
59670. Jung-uk Kim.
5968
5969Debugger: Enhanced the "tables" command to emit additional information
5970about
5971the current set of ACPI tables, including the owner ID and flags decode.
5972
5973Debugger: Reimplemented the "unload" command to use the new
5974AcpiUnloadParentTable external interface. This command was disable
5975previously
5976due to need for an unload interface.
5977
5978AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
5979option
5980will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
5981
5982----------------------------------------
598320 June 2012. Summary of changes for version 20120620:
5984
5985
59861) ACPICA Kernel-resident Subsystem:
5987
5988Implemented support to expand the "implicit notify" feature to allow
5989multiple
5990devices to be notified by a single GPE. This feature automatically
5991generates a
5992runtime device notification in the absence of a BIOS-provided GPE control
5993method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
5994notify is
5995provided by ACPICA for Windows compatibility, and is a workaround for
5996BIOS
5997AML
5998code errors. See the description of the AcpiSetupGpeForWake interface in
5999the
6000APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
6001
6002Changed some comments and internal function names to simplify and ensure
6003correctness of the Linux code translation. No functional changes.
6004
6005Example Code and Data Size: These are the sizes for the OS-independent
6006acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6007debug
6008version of the code includes the debug output trace mechanism and has a
6009much
6010larger code and data size.
6011
6012  Previous Release:
6013    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
6014    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
6015  Current Release:
6016    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
6017    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
6018
6019
60202) iASL Compiler/Disassembler and Tools:
6021
6022Disassembler: Added support to emit short, commented descriptions for the
6023ACPI
6024predefined names in order to improve the readability of the disassembled
6025output. ACPICA BZ 959. Changes include:
6026  1) Emit descriptions for all standard predefined names (_INI, _STA,
6027_PRW,
6028etc.)
6029  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
6030  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
6031etc.)
6032
6033AcpiSrc: Fixed several long-standing Linux code translation issues.
6034Argument
6035descriptions in function headers are now translated properly to lower
6036case
6037and
6038underscores. ACPICA BZ 961. Also fixes translation problems such as
6039these:
6040(old -> new)
6041  i_aSL -> iASL
6042  00-7_f -> 00-7F
6043  16_k -> 16K
6044  local_fADT -> local_FADT
6045  execute_oSI -> execute_OSI
6046
6047iASL: Fixed a problem where null bytes were inadvertently emitted into
6048some
6049listing files.
6050
6051iASL: Added the existing debug options to the standard help screen. There
6052are
6053no longer two different help screens. ACPICA BZ 957.
6054
6055AcpiHelp: Fixed some typos in the various predefined name descriptions.
6056Also
6057expand some of the descriptions where appropriate.
6058
6059iASL: Fixed the -ot option (display compile times/statistics). Was not
6060working
6061properly for standard output; only worked for the debug file case.
6062
6063----------------------------------------
606418 May 2012. Summary of changes for version 20120518:
6065
6066
60671) ACPICA Core Subsystem:
6068
6069Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
6070defined
6071to block until asynchronous events such as notifies and GPEs have
6072completed.
6073Within ACPICA, it is only called before a notify or GPE handler is
6074removed/uninstalled. It also may be useful for the host OS within related
6075drivers such as the Embedded Controller driver. See the ACPICA reference
6076for
6077additional information. ACPICA BZ 868.
6078
6079ACPI Tables: Added a new error message for a possible overflow failure
6080during
6081the conversion of FADT 32-bit legacy register addresses to internal
6082common
608364-
6084bit GAS structure representation. The GAS has a one-byte "bit length"
6085field,
6086thus limiting the register length to 255 bits. ACPICA BZ 953.
6087
6088Example Code and Data Size: These are the sizes for the OS-independent
6089acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6090debug
6091version of the code includes the debug output trace mechanism and has a
6092much
6093larger code and data size.
6094
6095  Previous Release:
6096    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6097    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
6098  Current Release:
6099    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
6100    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
6101
6102
61032) iASL Compiler/Disassembler and Tools:
6104
6105iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
6106macro.
6107This keyword was added late in the ACPI 5.0 release cycle and was not
6108implemented until now.
6109
6110Disassembler: Added support for Operation Region externals. Adds missing
6111support for operation regions that are defined in another table, and
6112referenced locally via a Field or BankField ASL operator. Now generates
6113the
6114correct External statement.
6115
6116Disassembler: Several additional fixes for the External() statement
6117generation
6118related to some ASL operators. Also, order the External() statements
6119alphabetically in the disassembler output. Fixes the External()
6120generation
6121for
6122the Create* field, Alias, and Scope operators:
6123 1) Create* buffer field operators - fix type mismatch warning on
6124disassembly
6125 2) Alias - implement missing External support
6126 3) Scope - fix to make sure all necessary externals are emitted.
6127
6128iASL: Improved pathname support. For include files, merge the prefix
6129pathname
6130with the file pathname and eliminate unnecessary components. Convert
6131backslashes in all pathnames to forward slashes, for readability. Include
6132file
6133pathname changes affect both #include and Include() type operators.
6134
6135iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
6136end
6137of a valid line by inserting a newline and then returning the EOF during
6138the
6139next call to GetNextLine. Prevents the line from being ignored due to EOF
6140condition.
6141
6142iASL: Implemented some changes to enhance the IDE support (-vi option.)
6143Error
6144and Warning messages are now correctly recognized for both the source
6145code
6146browser and the global error and warning counts.
6147
6148----------------------------------------
614920 April 2012. Summary of changes for version 20120420:
6150
6151
61521) ACPICA Core Subsystem:
6153
6154Implemented support for multiple notify handlers. This change adds
6155support
6156to
6157allow multiple system and device notify handlers on Device, Thermal Zone,
6158and
6159Processor objects. This can simplify the host OS notification
6160implementation.
6161Also re-worked and restructured the entire notify support code to
6162simplify
6163handler installation, handler removal, notify event queuing, and notify
6164dispatch to handler(s). Note: there can still only be two global notify
6165handlers - one for system notifies and one for device notifies. There are
6166no
6167changes to the existing handler install/remove interfaces. Lin Ming, Bob
6168Moore, Rafael Wysocki.
6169
6170Fixed a regression in the package repair code where the object reference
6171count was calculated incorrectly. Regression was introduced in the commit
6172"Support to add Package wrappers".
6173
6174Fixed a couple possible memory leaks in the AML parser, in the error
6175recovery
6176path. Jesper Juhl, Lin Ming.
6177
6178Example Code and Data Size: These are the sizes for the OS-independent
6179acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6180debug version of the code includes the debug output trace mechanism and
6181has a
6182much larger code and data size.
6183
6184  Previous Release:
6185    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6186    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6187  Current Release:
6188    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6189    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
6190
6191
61922) iASL Compiler/Disassembler and Tools:
6193
6194iASL: Fixed a problem with the resource descriptor support where the
6195length
6196of the StartDependentFn and StartDependentFnNoPrio descriptors were not
6197included in cumulative descriptor offset, resulting in incorrect values
6198for
6199resource tags within resource descriptors appearing after a
6200StartDependent*
6201descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
6202
6203iASL and Preprocessor: Implemented full support for the #line directive
6204to
6205correctly track original source file line numbers through the .i
6206preprocessor
6207output file - for error and warning messages.
6208
6209iASL: Expand the allowable byte constants for address space IDs.
6210Previously,
6211the allowable range was 0x80-0xFF (user-defined spaces), now the range is
62120x0A-0xFF to allow for custom and new IDs without changing the compiler.
6213
6214iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
6215
6216iASL: Add option to completely disable the preprocessor (-Pn).
6217
6218iASL: Now emit all error/warning messages to standard error (stderr) by
6219default (instead of the previous stdout).
6220
6221ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
6222Update
6223for resource descriptor offset fix above. Update/cleanup error output
6224routines. Enable and send iASL errors/warnings to an error logfile
6225(error.txt). Send all other iASL output to a logfile (compiler.txt).
6226Fixed
6227several extraneous "unrecognized operator" messages.
6228
6229----------------------------------------
623020 March 2012. Summary of changes for version 20120320:
6231
6232
62331) ACPICA Core Subsystem:
6234
6235Enhanced the sleep/wake interfaces to optionally execute the _GTS method
6236(Going To Sleep) and the _BFS method (Back From Sleep). Windows
6237apparently
6238does not execute these methods, and therefore these methods are often
6239untested. It has been seen on some systems where the execution of these
6240methods causes errors and also prevents the machine from entering S5. It
6241is
6242therefore suggested that host operating systems do not execute these
6243methods
6244by default. In the future, perhaps these methods can be optionally
6245executed
6246based on the age of the system and/or what is the newest version of
6247Windows
6248that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
6249and
6250AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
6251Ming.
6252
6253Fixed a problem where the length of the local/common FADT was set too
6254early.
6255The local FADT table length cannot be set to the common length until the
6256original length has been examined. There is code that checks the table
6257length
6258and sets various fields appropriately. This can affect older machines
6259with
6260early FADT versions. For example, this can cause inadvertent writes to
6261the
6262CST_CNT register. Julian Anastasov.
6263
6264Fixed a mapping issue related to a physical table override. Use the
6265deferred
6266mapping mechanism for tables loaded via the physical override OSL
6267interface.
6268This allows for early mapping before the virtual memory manager is
6269available.
6270Thomas Renninger, Bob Moore.
6271
6272Enhanced the automatic return-object repair code: Repair a common problem
6273with
6274predefined methods that are defined to return a variable-length Package
6275of
6276sub-objects. If there is only one sub-object, some BIOS ASL code
6277mistakenly
6278simply returns the single object instead of a Package with one sub-
6279object.
6280This new support will repair this error by wrapping a Package object
6281around
6282the original object, creating the correct and expected Package with one
6283sub-
6284object. Names that can be repaired in this manner include: _ALR, _CSD,
6285_HPX,
6286_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
6287939.
6288
6289Changed the exception code returned for invalid ACPI paths passed as
6290parameters to external interfaces such as AcpiEvaluateObject. Was
6291AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
6292
6293Example Code and Data Size: These are the sizes for the OS-independent
6294acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6295debug
6296version of the code includes the debug output trace mechanism and has a
6297much
6298larger code and data size.
6299
6300  Previous Release:
6301    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
6302    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6303  Current Release:
6304    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6305    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6306
6307
63082) iASL Compiler/Disassembler and Tools:
6309
6310iASL: Added the infrastructure and initial implementation of a integrated
6311C-
6312like preprocessor. This will simplify BIOS development process by
6313eliminating
6314the need for a separate preprocessing step during builds. On Windows, it
6315also
6316eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
6317features including full #define() macro support are still under
6318development.
6319These preprocessor directives are supported:
6320    #define
6321    #elif
6322    #else
6323    #endif
6324    #error
6325    #if
6326    #ifdef
6327    #ifndef
6328    #include
6329    #pragma message
6330    #undef
6331    #warning
6332In addition, these new command line options are supported:
6333    -D <symbol> Define symbol for preprocessor use
6334    -li         Create preprocessed output file (*.i)
6335    -P          Preprocess only and create preprocessor output file (*.i)
6336
6337Table Compiler: Fixed a problem where the equals operator within an
6338expression
6339did not work properly.
6340
6341Updated iASL to use the current versions of Bison/Flex. Updated the
6342Windows
6343project file to invoke these tools from the standard location. ACPICA BZ
6344904.
6345Versions supported:
6346    Flex for Windows:  V2.5.4
6347    Bison for Windows: V2.4.1
6348
6349----------------------------------------
635015 February 2012. Summary of changes for version 20120215:
6351
6352
63531) ACPICA Core Subsystem:
6354
6355There have been some major changes to the sleep/wake support code, as
6356described below (a - e).
6357
6358a) The AcpiLeaveSleepState has been split into two interfaces, similar to
6359AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
6360AcpiLeaveSleepStatePrep. This allows the host to perform actions between
6361the
6362time the _BFS method is called and the _WAK method is called. NOTE: all
6363hosts
6364must update their wake/resume code or else sleep/wake will not work
6365properly.
6366Rafael Wysocki.
6367
6368b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
6369_WAK
6370method. Some machines require that the GPEs are enabled before the _WAK
6371method
6372is executed. Thomas Renninger.
6373
6374c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
6375bit.
6376Some BIOS code assumes that WAK_STS will be cleared on resume and use it
6377to
6378determine whether the system is rebooting or resuming. Matthew Garrett.
6379
6380d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
6381Sleep) to
6382match the ACPI specification requirement. Rafael Wysocki.
6383
6384e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
6385registers within the V5 FADT. This support adds two new files:
6386hardware/hwesleep.c implements the support for the new registers. Moved
6387all
6388sleep/wake external interfaces to hardware/hwxfsleep.c.
6389
6390
6391Added a new OSL interface for ACPI table overrides,
6392AcpiOsPhysicalTableOverride. This interface allows the host to override a
6393table via a physical address, instead of the logical address required by
6394AcpiOsTableOverride. This simplifies the host implementation. Initial
6395implementation by Thomas Renninger. The ACPICA implementation creates a
6396single
6397shared function for table overrides that attempts both a logical and a
6398physical override.
6399
6400Expanded the OSL memory read/write interfaces to 64-bit data
6401(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
6402transfer support for GAS register structures passed to AcpiRead and
6403AcpiWrite.
6404
6405Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
6406custom
6407build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
6408model.
6409See the ACPICA reference for details. ACPICA BZ 942. This option removes
6410about
641110% of the code and 5% of the static data, and the following hardware
6412ACPI
6413features become unavailable:
6414    PM Event and Control registers
6415    SCI interrupt (and handler)
6416    Fixed Events
6417    General Purpose Events (GPEs)
6418    Global Lock
6419    ACPI PM timer
6420    FACS table (Waking vectors and Global Lock)
6421
6422Updated the unix tarball directory structure to match the ACPICA git
6423source
6424tree. This ensures that the generic unix makefiles work properly (in
6425generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
6426867.
6427
6428Updated the return value of the _REV predefined method to integer value 5
6429to
6430reflect ACPI 5.0 support.
6431
6432Moved the external ACPI PM timer interface prototypes to the public
6433acpixf.h
6434file where they belong.
6435
6436Example Code and Data Size: These are the sizes for the OS-independent
6437acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6438debug
6439version of the code includes the debug output trace mechanism and has a
6440much
6441larger code and data size.
6442
6443  Previous Release:
6444    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
6445    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
6446  Current Release:
6447    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
6448    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6449
6450
64512) iASL Compiler/Disassembler and Tools:
6452
6453Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
6454descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
6455incorrectly displayed.
6456
6457AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
6458specification.
6459
6460----------------------------------------
646111 January 2012. Summary of changes for version 20120111:
6462
6463
64641) ACPICA Core Subsystem:
6465
6466Implemented a new mechanism to allow host device drivers to check for
6467address
6468range conflicts with ACPI Operation Regions. Both SystemMemory and
6469SystemIO
6470address spaces are supported. A new external interface,
6471AcpiCheckAddressRange,
6472allows drivers to check an address range against the ACPI namespace. See
6473the
6474ACPICA reference for additional details. Adds one new file,
6475utilities/utaddress.c. Lin Ming, Bob Moore.
6476
6477Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
6478Control
6479and
6480Status registers, update the ACPI 5.0 flags, and update internal data
6481structures to handle an FADT larger than 256 bytes. The size of the ACPI
64825.0
6483FADT is 268 bytes.
6484
6485Updated all ACPICA copyrights and signons to 2012. Added the 2012
6486copyright to
6487all module headers and signons, including the standard Linux header. This
6488affects virtually every file in the ACPICA core subsystem, iASL compiler,
6489and
6490all ACPICA utilities.
6491
6492Example Code and Data Size: These are the sizes for the OS-independent
6493acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6494debug
6495version of the code includes the debug output trace mechanism and has a
6496much
6497larger code and data size.
6498
6499  Previous Release:
6500    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
6501    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
6502  Current Release:
6503    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
6504    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
6505
6506
65072) iASL Compiler/Disassembler and Tools:
6508
6509Disassembler: fixed a problem with the automatic resource tag generation
6510support. Fixes a problem where the resource tags are inadvertently not
6511constructed if the table being disassembled contains external references
6512to
6513control methods. Moved the actual construction of the tags to after the
6514final
6515namespace is constructed (after 2nd parse is invoked due to external
6516control
6517method references.) ACPICA BZ 941.
6518
6519Table Compiler: Make all "generic" operators caseless. These are the
6520operators
6521like UINT8, String, etc. Making these caseless improves ease-of-use.
6522ACPICA BZ
6523934.
6524
6525----------------------------------------
652623 November 2011. Summary of changes for version 20111123:
6527
65280) ACPI 5.0 Support:
6529
6530This release contains full support for the ACPI 5.0 specification, as
6531summarized below.
6532
6533Reduced Hardware Support:
6534-------------------------
6535
6536This support allows for ACPI systems without the usual ACPI hardware.
6537This
6538support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
6539will
6540not attempt to initialize or use any of the usual ACPI hardware. Note,
6541when
6542this flag is set, all of the following ACPI hardware is assumed to be not
6543present and is not initialized or accessed:
6544
6545    General Purpose Events (GPEs)
6546    Fixed Events (PM1a/PM1b and PM Control)
6547    Power Management Timer and Console Buttons (power/sleep)
6548    Real-time Clock Alarm
6549    Global Lock
6550    System Control Interrupt (SCI)
6551    The FACS is assumed to be non-existent
6552
6553ACPI Tables:
6554------------
6555
6556All new tables and updates to existing tables are fully supported in the
6557ACPICA headers (for use by device drivers), the disassembler, and the
6558iASL
6559Data Table Compiler. ACPI 5.0 defines these new tables:
6560
6561    BGRT        /* Boot Graphics Resource Table */
6562    DRTM        /* Dynamic Root of Trust for Measurement table */
6563    FPDT        /* Firmware Performance Data Table */
6564    GTDT        /* Generic Timer Description Table */
6565    MPST        /* Memory Power State Table */
6566    PCCT        /* Platform Communications Channel Table */
6567    PMTT        /* Platform Memory Topology Table */
6568    RASF        /* RAS Feature table */
6569
6570Operation Regions/SpaceIDs:
6571---------------------------
6572
6573All new operation regions are fully supported by the iASL compiler, the
6574disassembler, and the ACPICA runtime code (for dispatch to region
6575handlers.)
6576The new operation region Space IDs are:
6577
6578    GeneralPurposeIo
6579    GenericSerialBus
6580
6581Resource Descriptors:
6582---------------------
6583
6584All new ASL resource descriptors are fully supported by the iASL
6585compiler,
6586the
6587ASL/AML disassembler, and the ACPICA runtime Resource Manager code
6588(including
6589all new predefined resource tags). New descriptors are:
6590
6591    FixedDma
6592    GpioIo
6593    GpioInt
6594    I2cSerialBus
6595    SpiSerialBus
6596    UartSerialBus
6597
6598ASL/AML Operators, New and Modified:
6599------------------------------------
6600
6601One new operator is added, the Connection operator, which is used to
6602associate
6603a GeneralPurposeIo or GenericSerialBus resource descriptor with
6604individual
6605field objects within an operation region. Several new protocols are
6606associated
6607with the AccessAs operator. All are fully supported by the iASL compiler,
6608disassembler, and runtime ACPICA AML interpreter:
6609
6610    Connection                      // Declare Field Connection
6611attributes
6612    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
6613    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
6614Protocol
6615    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
6616    RawDataBuffer                       // Data type for Vendor Data
6617fields
6618
6619Predefined ASL/AML Objects:
6620---------------------------
6621
6622All new predefined objects/control-methods are supported by the iASL
6623compiler
6624and the ACPICA runtime validation/repair (arguments and return values.)
6625New
6626predefined names include the following:
6627
6628Standard Predefined Names (Objects or Control Methods):
6629    _AEI, _CLS, _CPC, _CWS, _DEP,
6630    _DLM, _EVT, _GCP, _CRT, _GWS,
6631    _HRV, _PRE, _PSE, _SRT, _SUB.
6632
6633Resource Tags (Names used to access individual fields within resource
6634descriptors):
6635    _DBT, _DPL, _DRS, _END, _FLC,
6636    _IOR, _LIN, _MOD, _PAR, _PHA,
6637    _PIN, _PPI, _POL, _RXL, _SLV,
6638    _SPE, _STB, _TXL, _VEN.
6639
6640ACPICA External Interfaces:
6641---------------------------
6642
6643Several new interfaces have been defined for use by ACPI-related device
6644drivers and other host OS services:
6645
6646AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
6647to
6648acquire and release AML mutexes that are defined in the DSDT/SSDT tables
6649provided by the BIOS. They are intended to be used in conjunction with
6650the
6651ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
6652mutual exclusion with the AML code/interpreter.
6653
6654AcpiGetEventResources: Returns the (formatted) resource descriptors as
6655defined
6656by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
6657provides
6658resource descriptors associated with hardware-reduced platform events,
6659similar
6660to the AcpiGetCurrentResources interface.
6661
6662Operation Region Handlers: For General Purpose IO and Generic Serial Bus
6663operation regions, information about the Connection() object and any
6664optional
6665length information is passed to the region handler within the Context
6666parameter.
6667
6668AcpiBufferToResource: This interface converts a raw AML buffer containing
6669a
6670resource template or resource descriptor to the ACPI_RESOURCE internal
6671format
6672suitable for use by device drivers. Can be used by an operation region
6673handler
6674to convert the Connection() buffer object into a ACPI_RESOURCE.
6675
6676Miscellaneous/Tools/TestSuites:
6677-------------------------------
6678
6679Support for extended _HID names (Four alpha characters instead of three).
6680Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
6681Support for ACPI 5.0 features in the ASLTS test suite.
6682Fully updated documentation (ACPICA and iASL reference documents.)
6683
6684ACPI Table Definition Language:
6685-------------------------------
6686
6687Support for this language was implemented and released as a subsystem of
6688the
6689iASL compiler in 2010. (See the iASL compiler User Guide.)
6690
6691
6692Non-ACPI 5.0 changes for this release:
6693--------------------------------------
6694
66951) ACPICA Core Subsystem:
6696
6697Fix a problem with operation region declarations where a failure can
6698occur
6699if
6700the region name and an argument that evaluates to an object (such as the
6701region address) are in different namespace scopes. Lin Ming, ACPICA BZ
6702937.
6703
6704Do not abort an ACPI table load if an invalid space ID is found within.
6705This
6706will be caught later if the offending method is executed. ACPICA BZ 925.
6707
6708Fixed an issue with the FFixedHW space ID where the ID was not always
6709recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
6710
6711Fixed a problem with the 32-bit generation of the unix-specific OSL
6712(osunixxf.c). Lin Ming, ACPICA BZ 936.
6713
6714Several changes made to enable generation with the GCC 4.6 compiler.
6715ACPICA BZ
6716935.
6717
6718New error messages: Unsupported I/O requests (not 8/16/32 bit), and
6719Index/Bank
6720field registers out-of-range.
6721
67222) iASL Compiler/Disassembler and Tools:
6723
6724iASL: Implemented the __PATH__ operator, which returns the full pathname
6725of
6726the current source file.
6727
6728AcpiHelp: Automatically display expanded keyword information for all ASL
6729operators.
6730
6731Debugger: Add "Template" command to disassemble/dump resource template
6732buffers.
6733
6734Added a new master script to generate and execute the ASLTS test suite.
6735Automatically handles 32- and 64-bit generation. See tests/aslts.sh
6736
6737iASL: Fix problem with listing generation during processing of the
6738Switch()
6739operator where AML listing was disabled until the entire Switch block was
6740completed.
6741
6742iASL: Improve support for semicolon statement terminators. Fix "invalid
6743character" message for some cases when the semicolon is used. Semicolons
6744are
6745now allowed after every <Term> grammar element. ACPICA BZ 927.
6746
6747iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
6748923.
6749
6750Disassembler: Fix problem with disassembly of the DataTableRegion
6751operator
6752where an inadvertent "Unhandled deferred opcode" message could be
6753generated.
6754
67553) Example Code and Data Size
6756
6757These are the sizes for the OS-independent acpica.lib produced by the
6758Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6759includes the debug output trace mechanism and has a much larger code and
6760data
6761size.
6762
6763  Previous Release:
6764    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6765    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6766  Current Release:
6767    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
6768    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
6769
6770----------------------------------------
677122 September 2011. Summary of changes for version 20110922:
6772
67730) ACPI 5.0 News:
6774
6775Support for ACPI 5.0 in ACPICA has been underway for several months and
6776will
6777be released at the same time that ACPI 5.0 is officially released.
6778
6779The ACPI 5.0 specification is on track for release in the next few
6780months.
6781
67821) ACPICA Core Subsystem:
6783
6784Fixed a problem where the maximum sleep time for the Sleep() operator was
6785intended to be limited to two seconds, but was inadvertently limited to
678620
6787seconds instead.
6788
6789Linux and Unix makefiles: Added header file dependencies to ensure
6790correct
6791generation of ACPICA core code and utilities. Also simplified the
6792makefiles
6793considerably through the use of the vpath variable to specify search
6794paths.
6795ACPICA BZ 924.
6796
67972) iASL Compiler/Disassembler and Tools:
6798
6799iASL: Implemented support to check the access length for all fields
6800created to
6801access named Resource Descriptor fields. For example, if a resource field
6802is
6803defined to be two bits, a warning is issued if a CreateXxxxField() is
6804used
6805with an incorrect bit length. This is implemented for all current
6806resource
6807descriptor names. ACPICA BZ 930.
6808
6809Disassembler: Fixed a byte ordering problem with the output of 24-bit and
681056-
6811bit integers.
6812
6813iASL: Fixed a couple of issues associated with variable-length package
6814objects. 1) properly handle constants like One, Ones, Zero -- do not make
6815a
6816VAR_PACKAGE when these are used as a package length. 2) Allow the
6817VAR_PACKAGE
6818opcode (in addition to PACKAGE) when validating object types for
6819predefined
6820names.
6821
6822iASL: Emit statistics for all output files (instead of just the ASL input
6823and
6824AML output). Includes listings, hex files, etc.
6825
6826iASL: Added -G option to the table compiler to allow the compilation of
6827custom
6828ACPI tables. The only part of a table that is required is the standard
682936-
6830byte
6831ACPI header.
6832
6833AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
6834headers),
6835which also adds correct 64-bit support. Also, now all output filenames
6836are
6837completely lower case.
6838
6839AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
6840loading table files. A warning is issued for any such tables. The only
6841exception is an FADT. This also fixes a possible fault when attempting to
6842load
6843non-AML tables. ACPICA BZ 932.
6844
6845AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
6846a
6847missing table terminator could cause a fault when using the -p option.
6848
6849AcpiSrc: Fixed a possible divide-by-zero fault when generating file
6850statistics.
6851
68523) Example Code and Data Size
6853
6854These are the sizes for the OS-independent acpica.lib produced by the
6855Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6856includes the debug output trace mechanism and has a much larger code and
6857data
6858size.
6859
6860  Previous Release (VC 9.0):
6861    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6862    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6863  Current Release (VC 9.0):
6864    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6865    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6866
6867
6868----------------------------------------
686923 June 2011. Summary of changes for version 20110623:
6870
68711) ACPI CA Core Subsystem:
6872
6873Updated the predefined name repair mechanism to not attempt repair of a
6874_TSS
6875return object if a _PSS object is present. We can only sort the _TSS
6876return
6877package if there is no _PSS within the same scope. This is because if
6878_PSS
6879is
6880present, the ACPI specification dictates that the _TSS Power Dissipation
6881field
6882is to be ignored, and therefore some BIOSs leave garbage values in the
6883_TSS
6884Power field(s). In this case, it is best to just return the _TSS package
6885as-
6886is. Reported by, and fixed with assistance from Fenghua Yu.
6887
6888Added an option to globally disable the control method return value
6889validation
6890and repair. This runtime option can be used to disable return value
6891repair
6892if
6893this is causing a problem on a particular machine. Also added an option
6894to
6895AcpiExec (-dr) to set this disable flag.
6896
6897All makefiles and project files: Major changes to improve generation of
6898ACPICA
6899tools. ACPICA BZ 912:
6900    Reduce default optimization levels to improve compatibility
6901    For Linux, add strict-aliasing=0 for gcc 4
6902    Cleanup and simplify use of command line defines
6903    Cleanup multithread library support
6904    Improve usage messages
6905
6906Linux-specific header: update handling of THREAD_ID and pthread. For the
690732-
6908bit case, improve casting to eliminate possible warnings, especially with
6909the
6910acpica tools.
6911
6912Example Code and Data Size: These are the sizes for the OS-independent
6913acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6914debug
6915version of the code includes the debug output trace mechanism and has a
6916much
6917larger code and data size.
6918
6919  Previous Release (VC 9.0):
6920    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
6921    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6922  Current Release (VC 9.0):
6923    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6924    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6925
69262) iASL Compiler/Disassembler and Tools:
6927
6928With this release, a new utility named "acpihelp" has been added to the
6929ACPICA
6930package. This utility summarizes the ACPI specification chapters for the
6931ASL
6932and AML languages. It generates under Linux/Unix as well as Windows, and
6933provides the following functionality:
6934    Find/display ASL operator(s) -- with description and syntax.
6935    Find/display ASL keyword(s) -- with exact spelling and descriptions.
6936    Find/display ACPI predefined name(s) -- with description, number
6937        of arguments, and the return value data type.
6938    Find/display AML opcode name(s) -- with opcode, arguments, and
6939grammar.
6940    Decode/display AML opcode -- with opcode name, arguments, and
6941grammar.
6942
6943Service Layers: Make multi-thread support configurable. Conditionally
6944compile
6945the multi-thread support so that threading libraries will not be linked
6946if
6947not
6948necessary. The only tool that requires multi-thread support is AcpiExec.
6949
6950iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
6951of
6952Bison appear to want the interface to yyerror to be a const char * (or at
6953least this is a problem when generating iASL on some systems.) ACPICA BZ
6954923
6955Pierre Lejeune.
6956
6957Tools: Fix for systems where O_BINARY is not defined. Only used for
6958Windows
6959versions of the tools.
6960
6961----------------------------------------
696227 May 2011. Summary of changes for version 20110527:
6963
69641) ACPI CA Core Subsystem:
6965
6966ASL Load() operator: Reinstate most restrictions on the incoming ACPI
6967table
6968signature. Now, only allow SSDT, OEMx, and a null signature. History:
6969    1) Originally, we checked the table signature for "SSDT" or "PSDT".
6970       (PSDT is now obsolete.)
6971    2) We added support for OEMx tables, signature "OEM" plus a fourth
6972       "don't care" character.
6973    3) Valid tables were encountered with a null signature, so we just
6974       gave up on validating the signature, (05/2008).
6975    4) We encountered non-AML tables such as the MADT, which caused
6976       interpreter errors and kernel faults. So now, we once again allow
6977       only SSDT, OEMx, and now, also a null signature. (05/2011).
6978
6979Added the missing _TDL predefined name to the global name list in order
6980to
6981enable validation. Affects both the core ACPICA code and the iASL
6982compiler.
6983
6984Example Code and Data Size: These are the sizes for the OS-independent
6985acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6986debug
6987version of the code includes the debug output trace mechanism and has a
6988much
6989larger code and data size.
6990
6991  Previous Release (VC 9.0):
6992    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
6993    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
6994  Current Release (VC 9.0):
6995    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
6996    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6997
69982) iASL Compiler/Disassembler and Tools:
6999
7000Debugger/AcpiExec: Implemented support for "complex" method arguments on
7001the
7002debugger command line. This adds support beyond simple integers --
7003including
7004Strings, Buffers, and Packages. Includes support for nested packages.
7005Increased the default command line buffer size to accommodate these
7006arguments.
7007See the ACPICA reference for details and syntax. ACPICA BZ 917.
7008
7009Debugger/AcpiExec: Implemented support for "default" method arguments for
7010the
7011Execute/Debug command. Now, the debugger will always invoke a control
7012method
7013with the required number of arguments -- even if the command line
7014specifies
7015none or insufficient arguments. It uses default integer values for any
7016missing
7017arguments. Also fixes a bug where only six method arguments maximum were
7018supported instead of the required seven.
7019
7020Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
7021and
7022also return status in order to prevent buffer overruns. See the ACPICA
7023reference for details and syntax. ACPICA BZ 921
7024
7025iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
7026makefiles to simplify support for the two different but similar parser
7027generators, bison and yacc.
7028
7029Updated the generic unix makefile for gcc 4. The default gcc version is
7030now
7031expected to be 4 or greater, since options specific to gcc 4 are used.
7032
7033----------------------------------------
703413 April 2011. Summary of changes for version 20110413:
7035
70361) ACPI CA Core Subsystem:
7037
7038Implemented support to execute a so-called "orphan" _REG method under the
7039EC
7040device. This change will force the execution of a _REG method underneath
7041the
7042EC
7043device even if there is no corresponding operation region of type
7044EmbeddedControl. Fixes a problem seen on some machines and apparently is
7045compatible with Windows behavior. ACPICA BZ 875.
7046
7047Added more predefined methods that are eligible for automatic NULL
7048package
7049element removal. This change adds another group of predefined names to
7050the
7051list
7052of names that can be repaired by having NULL package elements dynamically
7053removed. This group are those methods that return a single variable-
7054length
7055package containing simple data types such as integers, buffers, strings.
7056This
7057includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
7058_PSL,
7059_Sx,
7060and _TZD. ACPICA BZ 914.
7061
7062Split and segregated all internal global lock functions to a new file,
7063evglock.c.
7064
7065Updated internal address SpaceID for DataTable regions. Moved this
7066internal
7067space
7068id in preparation for ACPI 5.0 changes that will include some new space
7069IDs.
7070This
7071change should not affect user/host code.
7072
7073Example Code and Data Size: These are the sizes for the OS-independent
7074acpica.lib
7075produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
7076version of
7077the code includes the debug output trace mechanism and has a much larger
7078code
7079and
7080data size.
7081
7082  Previous Release (VC 9.0):
7083    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
7084    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
7085  Current Release (VC 9.0):
7086    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
7087    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
7088
70892) iASL Compiler/Disassembler and Tools:
7090
7091iASL/DTC: Major update for new grammar features. Allow generic data types
7092in
7093custom ACPI tables. Field names are now optional. Any line can be split
7094to
7095multiple lines using the continuation char (\). Large buffers now use
7096line-
7097continuation character(s) and no colon on the continuation lines. See the
7098grammar
7099update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
7100Moore.
7101
7102iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
7103statements.
7104Since the parser stuffs a "zero" as the return value for these statements
7105(due
7106to
7107the underlying AML grammar), they were seen as "return with value" by the
7108iASL
7109semantic checking. They are now seen correctly as "null" return
7110statements.
7111
7112iASL: Check if a_REG declaration has a corresponding Operation Region.
7113Adds a
7114check for each _REG to ensure that there is in fact a corresponding
7115operation
7116region declaration in the same scope. If not, the _REG method is not very
7117useful
7118since it probably won't be executed. ACPICA BZ 915.
7119
7120iASL/DTC: Finish support for expression evaluation. Added a new
7121expression
7122parser
7123that implements c-style operator precedence and parenthesization. ACPICA
7124bugzilla
7125908.
7126
7127Disassembler/DTC: Remove support for () and <> style comments in data
7128tables.
7129Now
7130that DTC has full expression support, we don't want to have comment
7131strings
7132that
7133start with a parentheses or a less-than symbol. Now, only the standard /*
7134and
7135//
7136comments are supported, as well as the bracket [] comments.
7137
7138AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
7139"unusual"
7140headers in the acpidump file. Update the header validation to support
7141these
7142tables. Problem introduced in previous AcpiXtract version in the change
7143to
7144support "wrong checksum" error messages emitted by acpidump utility.
7145
7146iASL: Add a * option to generate all template files (as a synonym for
7147ALL)
7148as
7149in
7150"iasl -T *" or "iasl -T ALL".
7151
7152iASL/DTC: Do not abort compiler on fatal errors. We do not want to
7153completely
7154abort the compiler on "fatal" errors, simply should abort the current
7155compile.
7156This allows multiple compiles with a single (possibly wildcard) compiler
7157invocation.
7158
7159----------------------------------------
716016 March 2011. Summary of changes for version 20110316:
7161
71621) ACPI CA Core Subsystem:
7163
7164Fixed a problem caused by a _PRW method appearing at the namespace root
7165scope
7166during the setup of wake GPEs. A fault could occur if a _PRW directly
7167under
7168the
7169root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
7170
7171Implemented support for "spurious" Global Lock interrupts. On some
7172systems, a
7173global lock interrupt can occur without the pending flag being set. Upon
7174a
7175GL
7176interrupt, we now ensure that a thread is actually waiting for the lock
7177before
7178signaling GL availability. Rafael Wysocki, Bob Moore.
7179
7180Example Code and Data Size: These are the sizes for the OS-independent
7181acpica.lib
7182produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
7183version of
7184the code includes the debug output trace mechanism and has a much larger
7185code
7186and
7187data size.
7188
7189  Previous Release (VC 9.0):
7190    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7191    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7192  Current Release (VC 9.0):
7193    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
7194    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
7195
71962) iASL Compiler/Disassembler and Tools:
7197
7198Implemented full support for the "SLIC" ACPI table. Includes support in
7199the
7200header files, disassembler, table compiler, and template generator. Bob
7201Moore,
7202Lin Ming.
7203
7204AcpiXtract: Correctly handle embedded comments and messages from
7205AcpiDump.
7206Apparently some or all versions of acpidump will occasionally emit a
7207comment
7208like
7209"Wrong checksum", etc., into the dump file. This was causing problems for
7210AcpiXtract. ACPICA BZ 905.
7211
7212iASL: Fix the Linux makefile by removing an inadvertent double file
7213inclusion.
7214ACPICA BZ 913.
7215
7216AcpiExec: Update installation of operation region handlers. Install one
7217handler
7218for a user-defined address space. This is used by the ASL test suite
7219(ASLTS).
7220
7221----------------------------------------
722211 February 2011. Summary of changes for version 20110211:
7223
72241) ACPI CA Core Subsystem:
7225
7226Added a mechanism to defer _REG methods for some early-installed
7227handlers.
7228Most user handlers should be installed before call to
7229AcpiEnableSubsystem.
7230However, Event handlers and region handlers should be installed after
7231AcpiInitializeObjects. Override handlers for the "default" regions should
7232be
7233installed early, however. This change executes all _REG methods for the
7234default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
7235chicken/egg issues between them. ACPICA BZ 848.
7236
7237Implemented an optimization for GPE detection. This optimization will
7238simply
7239ignore GPE registers that contain no enabled GPEs -- there is no need to
7240read the register since this information is available internally. This
7241becomes more important on machines with a large GPE space. ACPICA
7242bugzilla
7243884. Lin Ming. Suggestion from Joe Liu.
7244
7245Removed all use of the highly unreliable FADT revision field. The
7246revision
7247number in the FADT has been found to be completely unreliable and cannot
7248be
7249trusted. Only the actual table length can be used to infer the version.
7250This
7251change updates the ACPICA core and the disassembler so that both no
7252longer
7253even look at the FADT version and instead depend solely upon the FADT
7254length.
7255
7256Fix an unresolved name issue for the no-debug and no-error-message source
7257generation cases. The _AcpiModuleName was left undefined in these cases,
7258but
7259it is actually needed as a parameter to some interfaces. Define
7260_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
7261
7262Split several large files (makefiles and project files updated)
7263  utglobal.c   -> utdecode.c
7264  dbcomds.c    -> dbmethod.c dbnames.c
7265  dsopcode.c   -> dsargs.c dscontrol.c
7266  dsload.c     -> dsload2.c
7267  aslanalyze.c -> aslbtypes.c aslwalks.c
7268
7269Example Code and Data Size: These are the sizes for the OS-independent
7270acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7271debug version of the code includes the debug output trace mechanism and
7272has
7273a much larger code and data size.
7274
7275  Previous Release (VC 9.0):
7276    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7277    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7278  Current Release (VC 9.0):
7279    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7280    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7281
72822) iASL Compiler/Disassembler and Tools:
7283
7284iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
7285These are useful C-style macros with the standard definitions. ACPICA
7286bugzilla 898.
7287
7288iASL/DTC: Added support for integer expressions and labels. Support for
7289full
7290expressions for all integer fields in all ACPI tables. Support for labels
7291in
7292"generic" portions of tables such as UEFI. See the iASL reference manual.
7293
7294Debugger: Added a command to display the status of global handlers. The
7295"handlers" command will display op region, fixed event, and miscellaneous
7296global handlers. installation status -- and for op regions, whether
7297default
7298or user-installed handler will be used.
7299
7300iASL: Warn if reserved method incorrectly returns a value. Many
7301predefined
7302names are defined such that they do not return a value. If implemented as
7303a
7304method, issue a warning if such a name explicitly returns a value. ACPICA
7305Bugzilla 855.
7306
7307iASL: Added detection of GPE method name conflicts. Detects a conflict
7308where
7309there are two GPE methods of the form _Lxy and _Exy in the same scope.
7310(For
7311example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
7312
7313iASL/DTC: Fixed a couple input scanner issues with comments and line
7314numbers. Comment remover could get confused and miss a comment ending.
7315Fixed
7316a problem with line counter maintenance.
7317
7318iASL/DTC: Reduced the severity of some errors from fatal to error. There
7319is
7320no need to abort on simple errors within a field definition.
7321
7322Debugger: Simplified the output of the help command. All help output now
7323in
7324a single screen, instead of help subcommands. ACPICA Bugzilla 897.
7325
7326----------------------------------------
732712 January 2011. Summary of changes for version 20110112:
7328
73291) ACPI CA Core Subsystem:
7330
7331Fixed a race condition between method execution and namespace walks that
7332can
7333possibly cause a fault. The problem was apparently introduced in version
733420100528 as a result of a performance optimization that reduces the
7335number
7336of
7337namespace walks upon method exit by using the delete_namespace_subtree
7338function instead of the delete_namespace_by_owner function used
7339previously.
7340Bug is a missing namespace lock in the delete_namespace_subtree function.
7341dana.myers@oracle.com
7342
7343Fixed several issues and a possible fault with the automatic "serialized"
7344method support. History: This support changes a method to "serialized" on
7345the
7346fly if the method generates an AE_ALREADY_EXISTS error, indicating the
7347possibility that it cannot handle reentrancy. This fix repairs a couple
7348of
7349issues seen in the field, especially on machines with many cores:
7350
7351    1) Delete method children only upon the exit of the last thread,
7352       so as to not delete objects out from under other running threads
7353      (and possibly causing a fault.)
7354    2) Set the "serialized" bit for the method only upon the exit of the
7355       Last thread, so as to not cause deadlock when running threads
7356       attempt to exit.
7357    3) Cleanup the use of the AML "MethodFlags" and internal method flags
7358       so that there is no longer any confusion between the two.
7359
7360    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
7361
7362Debugger: Now lock the namespace for duration of a namespace dump.
7363Prevents
7364issues if the namespace is changing dynamically underneath the debugger.
7365Especially affects temporary namespace nodes, since the debugger displays
7366these also.
7367
7368Updated the ordering of include files. The ACPICA headers should appear
7369before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
7370set
7371any necessary compiler-specific defines, etc. Affects the ACPI-related
7372tools
7373and utilities.
7374
7375Updated all ACPICA copyrights and signons to 2011. Added the 2011
7376copyright
7377to all module headers and signons, including the Linux header. This
7378affects
7379virtually every file in the ACPICA core subsystem, iASL compiler, and all
7380utilities.
7381
7382Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
7383project files for VC++ 6.0 are now obsolete. New project files can be
7384found
7385under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
7386details.
7387
7388Example Code and Data Size: These are the sizes for the OS-independent
7389acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7390debug version of the code includes the debug output trace mechanism and
7391has a
7392much larger code and data size.
7393
7394  Previous Release (VC 6.0):
7395    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
7396    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
7397  Current Release (VC 9.0):
7398    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7399    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7400
74012) iASL Compiler/Disassembler and Tools:
7402
7403iASL: Added generic data types to the Data Table compiler. Add "generic"
7404data
7405types such as UINT32, String, Unicode, etc., to simplify the generation
7406of
7407platform-defined tables such as UEFI. Lin Ming.
7408
7409iASL: Added listing support for the Data Table Compiler. Adds listing
7410support
7411(-l) to display actual binary output for each line of input code.
7412
7413----------------------------------------
741409 December 2010. Summary of changes for version 20101209:
7415
74161) ACPI CA Core Subsystem:
7417
7418Completed the major overhaul of the GPE support code that was begun in
7419July
74202010. Major features include: removal of _PRW execution in ACPICA (host
7421executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
7422changes to existing interfaces, simplification of GPE handler operation,
7423and
7424a handful of new interfaces:
7425
7426    AcpiUpdateAllGpes
7427    AcpiFinishGpe
7428    AcpiSetupGpeForWake
7429    AcpiSetGpeWakeMask
7430    One new file, evxfgpe.c to consolidate all external GPE interfaces.
7431
7432See the ACPICA Programmer Reference for full details and programming
7433information. See the new section 4.4 "General Purpose Event (GPE)
7434Support"
7435for a full overview, and section 8.7 "ACPI General Purpose Event
7436Management"
7437for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
7438Ming,
7439Bob Moore, Rafael Wysocki.
7440
7441Implemented a new GPE feature for Windows compatibility, the "Implicit
7442Wake
7443GPE Notify". This feature will automatically issue a Notify(2) on a
7444device
7445when a Wake GPE is received if there is no corresponding GPE method or
7446handler. ACPICA BZ 870.
7447
7448Fixed a problem with the Scope() operator during table parse and load
7449phase.
7450During load phase (table load or method execution), the scope operator
7451should
7452not enter the target into the namespace. Instead, it should open a new
7453scope
7454at the target location. Linux BZ 19462, ACPICA BZ 882.
7455
7456Example Code and Data Size: These are the sizes for the OS-independent
7457acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7458debug version of the code includes the debug output trace mechanism and
7459has a
7460much larger code and data size.
7461
7462  Previous Release:
7463    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
7464    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
7465  Current Release:
7466    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7467    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7468
74692) iASL Compiler/Disassembler and Tools:
7470
7471iASL: Relax the alphanumeric restriction on _CID strings. These strings
7472are
7473"bus-specific" per the ACPI specification, and therefore any characters
7474are
7475acceptable. The only checks that can be performed are for a null string
7476and
7477perhaps for a leading asterisk. ACPICA BZ 886.
7478
7479iASL: Fixed a problem where a syntax error that caused a premature EOF
7480condition on the source file emitted a very confusing error message. The
7481premature EOF is now detected correctly. ACPICA BZ 891.
7482
7483Disassembler: Decode the AccessSize within a Generic Address Structure
7484(byte
7485access, word access, etc.) Note, this field does not allow arbitrary bit
7486access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
7487
7488New: AcpiNames utility - Example namespace dump utility. Shows an example
7489of
7490ACPICA configuration for a minimal namespace dump utility. Uses table and
7491namespace managers, but no AML interpreter. Does not add any
7492functionality
7493over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
7494partition and configure ACPICA. ACPICA BZ 883.
7495
7496AML Debugger: Increased the debugger buffer size for method return
7497objects.
7498Was 4K, increased to 16K. Also enhanced error messages for debugger
7499method
7500execution, including the buffer overflow case.
7501
7502----------------------------------------
750313 October 2010. Summary of changes for version 20101013:
7504
75051) ACPI CA Core Subsystem:
7506
7507Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
7508now
7509clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
7510HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
7511
7512Changed the type of the predefined namespace object _TZ from ThermalZone
7513to
7514Device. This was found to be confusing to the host software that
7515processes
7516the various thermal zones, since _TZ is not really a ThermalZone.
7517However,
7518a
7519Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
7520Zhang.
7521
7522Added Windows Vista SP2 to the list of supported _OSI strings. The actual
7523string is "Windows 2006 SP2".
7524
7525Eliminated duplicate code in AcpiUtExecute* functions. Now that the
7526nsrepair
7527code automatically repairs _HID-related strings, this type of code is no
7528longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
7529878.
7530
7531Example Code and Data Size: These are the sizes for the OS-independent
7532acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7533debug version of the code includes the debug output trace mechanism and
7534has a
7535much larger code and data size.
7536
7537  Previous Release:
7538    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7539    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7540  Current Release:
7541    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7542    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7543
75442) iASL Compiler/Disassembler and Tools:
7545
7546iASL: Implemented additional compile-time validation for _HID strings.
7547The
7548non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
7549length
7550of
7551the string must be exactly seven or eight characters. For both _HID and
7552_CID
7553strings, all characters must be alphanumeric. ACPICA BZ 874.
7554
7555iASL: Allow certain "null" resource descriptors. Some BIOS code creates
7556descriptors that are mostly or all zeros, with the expectation that they
7557will
7558be filled in at runtime. iASL now allows this as long as there is a
7559"resource
7560tag" (name) associated with the descriptor, which gives the ASL a handle
7561needed to modify the descriptor. ACPICA BZ 873.
7562
7563Added single-thread support to the generic Unix application OSL.
7564Primarily
7565for iASL support, this change removes the use of semaphores in the
7566single-
7567threaded ACPICA tools/applications - increasing performance. The
7568_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
7569option. ACPICA BZ 879.
7570
7571AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
7572support
7573for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
7574
7575iASL: Moved all compiler messages to a new file, aslmessages.h.
7576
7577----------------------------------------
757815 September 2010. Summary of changes for version 20100915:
7579
75801) ACPI CA Core Subsystem:
7581
7582Removed the AcpiOsDerivePciId OSL interface. The various host
7583implementations
7584of this function were not OS-dependent and are now obsolete and can be
7585removed from all host OSLs. This function has been replaced by
7586AcpiHwDerivePciId, which is now part of the ACPICA core code.
7587AcpiHwDerivePciId has been implemented without recursion. Adds one new
7588module, hwpci.c. ACPICA BZ 857.
7589
7590Implemented a dynamic repair for _HID and _CID strings. The following
7591problems are now repaired at runtime: 1) Remove a leading asterisk in the
7592string, and 2) the entire string is uppercased. Both repairs are in
7593accordance with the ACPI specification and will simplify host driver
7594code.
7595ACPICA BZ 871.
7596
7597The ACPI_THREAD_ID type is no longer configurable, internally it is now
7598always UINT64. This simplifies the ACPICA code, especially any printf
7599output.
7600UINT64 is the only common data type for all thread_id types across all
7601operating systems. It is now up to the host OSL to cast the native
7602thread_id
7603type to UINT64 before returning the value to ACPICA (via
7604AcpiOsGetThreadId).
7605Lin Ming, Bob Moore.
7606
7607Added the ACPI_INLINE type to enhance the ACPICA configuration. The
7608"inline"
7609keyword is not standard across compilers, and this type allows inline to
7610be
7611configured on a per-compiler basis. Lin Ming.
7612
7613Made the system global AcpiGbl_SystemAwakeAndRunning publicly
7614available.
7615Added an extern for this boolean in acpixf.h. Some hosts utilize this
7616value
7617during suspend/restore operations. ACPICA BZ 869.
7618
7619All code that implements error/warning messages with the "ACPI:" prefix
7620has
7621been moved to a new module, utxferror.c.
7622
7623The UINT64_OVERLAY was moved to utmath.c, which is the only module where
7624it
7625is used. ACPICA BZ 829. Lin Ming, Bob Moore.
7626
7627Example Code and Data Size: These are the sizes for the OS-independent
7628acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7629debug version of the code includes the debug output trace mechanism and
7630has a
7631much larger code and data size.
7632
7633  Previous Release:
7634    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
7635    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
7636  Current Release:
7637    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7638    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7639
76402) iASL Compiler/Disassembler and Tools:
7641
7642iASL/Disassembler: Write ACPI errors to stderr instead of the output
7643file.
7644This keeps the output files free of random error messages that may
7645originate
7646from within the namespace/interpreter code. Used this opportunity to
7647merge
7648all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
7649866. Lin Ming, Bob Moore.
7650
7651Tools: update some printfs for ansi warnings on size_t. Handle width
7652change
7653of size_t on 32-bit versus 64-bit generations. Lin Ming.
7654
7655----------------------------------------
765606 August 2010. Summary of changes for version 20100806:
7657
76581) ACPI CA Core Subsystem:
7659
7660Designed and implemented a new host interface to the _OSI support code.
7661This
7662will allow the host to dynamically add or remove multiple _OSI strings,
7663as
7664well as install an optional handler that is called for each _OSI
7665invocation.
7666Also added a new AML debugger command, 'osi' to display and modify the
7667global
7668_OSI string table, and test support in the AcpiExec utility. See the
7669ACPICA
7670reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
7671New Functions:
7672    AcpiInstallInterface - Add an _OSI string.
7673    AcpiRemoveInterface - Delete an _OSI string.
7674    AcpiInstallInterfaceHandler - Install optional _OSI handler.
7675Obsolete Functions:
7676    AcpiOsValidateInterface - no longer used.
7677New Files:
7678    source/components/utilities/utosi.c
7679
7680Re-introduced the support to enable multi-byte transfers for Embedded
7681Controller (EC) operation regions. A reported problem was found to be a
7682bug
7683in the host OS, not in the multi-byte support. Previously, the maximum
7684data
7685size passed to the EC operation region handler was a single byte. There
7686are
7687often EC Fields larger than one byte that need to be transferred, and it
7688is
7689useful for the EC driver to lock these as a single transaction. This
7690change
7691enables single transfers larger than 8 bits. This effectively changes the
7692access to the EC space from ByteAcc to AnyAcc, and will probably require
7693changes to the host OS Embedded Controller driver to enable 16/32/64/256-
7694bit
7695transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
7696
7697Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
7698prototype in acpiosxf.h had the output value pointer as a (void *).
7699It should be a (UINT64 *). This may affect some host OSL code.
7700
7701Fixed a couple problems with the recently modified Linux makefiles for
7702iASL
7703and AcpiExec. These new makefiles place the generated object files in the
7704local directory so that there can be no collisions between the files that
7705are
7706shared between them that are compiled with different options.
7707
7708Example Code and Data Size: These are the sizes for the OS-independent
7709acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7710debug version of the code includes the debug output trace mechanism and
7711has a
7712much larger code and data size.
7713
7714  Previous Release:
7715    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7716    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
7717  Current Release:
7718    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
7719    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
7720
77212) iASL Compiler/Disassembler and Tools:
7722
7723iASL/Disassembler: Added a new option (-da, "disassemble all") to load
7724the
7725namespace from and disassemble an entire group of AML files. Useful for
7726loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
7727and
7728disassembling with one simple command. ACPICA BZ 865. Lin Ming.
7729
7730iASL: Allow multiple invocations of -e option. This change allows
7731multiple
7732uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
7733834.
7734Lin Ming.
7735
7736----------------------------------------
773702 July 2010. Summary of changes for version 20100702:
7738
77391) ACPI CA Core Subsystem:
7740
7741Implemented several updates to the recently added GPE reference count
7742support. The model for "wake" GPEs is changing to give the host OS
7743complete
7744control of these GPEs. Eventually, the ACPICA core will not execute any
7745_PRW
7746methods, since the host already must execute them. Also, additional
7747changes
7748were made to help ensure that the reference counts are kept in proper
7749synchronization with reality. Rafael J. Wysocki.
7750
77511) Ensure that GPEs are not enabled twice during initialization.
77522) Ensure that GPE enable masks stay in sync with the reference count.
77533) Do not inadvertently enable GPEs when writing GPE registers.
77544) Remove the internal wake reference counter and add new AcpiGpeWakeup
7755interface. This interface will set or clear individual GPEs for wakeup.
77565) Remove GpeType argument from AcpiEnable and AcpiDisable. These
7757interfaces
7758are now used for "runtime" GPEs only.
7759
7760Changed the behavior of the GPE install/remove handler interfaces. The
7761GPE
7762is
7763no longer disabled during this process, as it was found to cause problems
7764on
7765some machines. Rafael J. Wysocki.
7766
7767Reverted a change introduced in version 20100528 to enable Embedded
7768Controller multi-byte transfers. This change was found to cause problems
7769with
7770Index Fields and possibly Bank Fields. It will be reintroduced when these
7771problems have been resolved.
7772
7773Fixed a problem with references to Alias objects within Package Objects.
7774A
7775reference to an Alias within the definition of a Package was not always
7776resolved properly. Aliases to objects like Processors, Thermal zones,
7777etc.
7778were resolved to the actual object instead of a reference to the object
7779as
7780it
7781should be. Package objects are only allowed to contain integer, string,
7782buffer, package, and reference objects. Redhat bugzilla 608648.
7783
7784Example Code and Data Size: These are the sizes for the OS-independent
7785acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7786debug version of the code includes the debug output trace mechanism and
7787has a
7788much larger code and data size.
7789
7790  Previous Release:
7791    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7792    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
7793  Current Release:
7794    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7795    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
7796
77972) iASL Compiler/Disassembler and Tools:
7798
7799iASL: Implemented a new compiler subsystem to allow definition and
7800compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
7801These
7802are called "ACPI Data Tables", and the new compiler is the "Data Table
7803Compiler". This compiler is intended to simplify the existing error-prone
7804process of creating these tables for the BIOS, as well as allowing the
7805disassembly, modification, recompilation, and override of existing ACPI
7806data
7807tables. See the iASL User Guide for detailed information.
7808
7809iASL: Implemented a new Template Generator option in support of the new
7810Data
7811Table Compiler. This option will create examples of all known ACPI tables
7812that can be used as the basis for table development. See the iASL
7813documentation and the -T option.
7814
7815Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
7816Descriptor Table).
7817
7818Updated the Linux makefiles for iASL and AcpiExec to place the generated
7819object files in the local directory so that there can be no collisions
7820between the shared files between them that are generated with different
7821options.
7822
7823Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
7824Use
7825the #define __APPLE__ to enable this support.
7826
7827----------------------------------------
782828 May 2010. Summary of changes for version 20100528:
7829
7830Note: The ACPI 4.0a specification was released on April 5, 2010 and is
7831available at www.acpi.info. This is primarily an errata release.
7832
78331) ACPI CA Core Subsystem:
7834
7835Undefined ACPI tables: We are looking for the definitions for the
7836following
7837ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
7838
7839Implemented support to enable multi-byte transfers for Embedded
7840Controller
7841(EC) operation regions. Previously, the maximum data size passed to the
7842EC
7843operation region handler was a single byte. There are often EC Fields
7844larger
7845than one byte that need to be transferred, and it is useful for the EC
7846driver
7847to lock these as a single transaction. This change enables single
7848transfers
7849larger than 8 bits. This effectively changes the access to the EC space
7850from
7851ByteAcc to AnyAcc, and will probably require changes to the host OS
7852Embedded
7853Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
7854bit
7855transfers. Alexey Starikovskiy, Lin Ming
7856
7857Implemented a performance enhancement for namespace search and access.
7858This
7859change enhances the performance of namespace searches and walks by adding
7860a
7861backpointer to the parent in each namespace node. On large namespaces,
7862this
7863change can improve overall ACPI performance by up to 9X. Adding a pointer
7864to
7865each namespace node increases the overall size of the internal namespace
7866by
7867about 5%, since each namespace entry usually consists of both a namespace
7868node and an ACPI operand object. However, this is the first growth of the
7869namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
7870
7871Implemented a performance optimization that reduces the number of
7872namespace
7873walks. On control method exit, only walk the namespace if the method is
7874known
7875to have created namespace objects outside of its local scope. Previously,
7876the
7877entire namespace was traversed on each control method exit. This change
7878can
7879improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
7880Moore.
7881
7882Added support to truncate I/O addresses to 16 bits for Windows
7883compatibility.
7884Some ASL code has been seen in the field that inadvertently has bits set
7885above bit 15. This feature is optional and is enabled if the BIOS
7886requests
7887any Windows OSI strings. It can also be enabled by the host OS. Matthew
7888Garrett, Bob Moore.
7889
7890Added support to limit the maximum time for the ASL Sleep() operator. To
7891prevent accidental deep sleeps, limit the maximum time that Sleep() will
7892actually sleep. Configurable, the default maximum is two seconds. ACPICA
7893bugzilla 854.
7894
7895Added run-time validation support for the _WDG and_WED Microsoft
7896predefined
7897methods. These objects are defined by "Windows Instrumentation", and are
7898not
7899part of the ACPI spec. ACPICA BZ 860.
7900
7901Expanded all statistic counters used during namespace and device
7902initialization from 16 to 32 bits in order to support very large
7903namespaces.
7904
7905Replaced all instances of %d in printf format specifiers with %u since
7906nearly
7907all integers in ACPICA are unsigned.
7908
7909Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
7910returned
7911as AE_NO_HANDLER.
7912
7913Example Code and Data Size: These are the sizes for the OS-independent
7914acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7915debug version of the code includes the debug output trace mechanism and
7916has a
7917much larger code and data size.
7918
7919  Previous Release:
7920    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
7921    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
7922  Current Release:
7923    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7924    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
7925
79262) iASL Compiler/Disassembler and Tools:
7927
7928iASL: Added compiler support for the _WDG and_WED Microsoft predefined
7929methods. These objects are defined by "Windows Instrumentation", and are
7930not
7931part of the ACPI spec. ACPICA BZ 860.
7932
7933AcpiExec: added option to disable the memory tracking mechanism. The -dt
7934option will disable the tracking mechanism, which improves performance
7935considerably.
7936
7937AcpiExec: Restructured the command line options into -d (disable) and -e
7938(enable) options.
7939
7940----------------------------------------
794128 April 2010. Summary of changes for version 20100428:
7942
79431) ACPI CA Core Subsystem:
7944
7945Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
7946including FADT-based and GPE Block Devices, execute any _PRW methods in
7947the
7948new table, and process any _Lxx/_Exx GPE methods in the new table. Any
7949runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
7950immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
7951Devices. Provides compatibility with other ACPI implementations. Two new
7952files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
7953Moore.
7954
7955Fixed a regression introduced in version 20100331 within the table
7956manager
7957where initial table loading could fail. This was introduced in the fix
7958for
7959AcpiReallocateRootTable. Also, renamed some of fields in the table
7960manager
7961data structures to clarify their meaning and use.
7962
7963Fixed a possible allocation overrun during internal object copy in
7964AcpiUtCopySimpleObject. The original code did not correctly handle the
7965case
7966where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
7967847.
7968
7969Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
7970possible access beyond end-of-allocation. Also, now fully validate
7971descriptor
7972(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
7973
7974Example Code and Data Size: These are the sizes for the OS-independent
7975acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7976debug version of the code includes the debug output trace mechanism and
7977has a
7978much larger code and data size.
7979
7980  Previous Release:
7981    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
7982    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
7983  Current Release:
7984    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
7985    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
7986
79872) iASL Compiler/Disassembler and Tools:
7988
7989iASL: Implemented Min/Max/Len/Gran validation for address resource
7990descriptors. This change implements validation for the address fields
7991that
7992are common to all address-type resource descriptors. These checks are
7993implemented: Checks for valid Min/Max, length within the Min/Max window,
7994valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
7995per
7996table 6-40 in the ACPI 4.0a specification. Also split the large
7997aslrestype1.c
7998and aslrestype2.c files into five new files. ACPICA BZ 840.
7999
8000iASL: Added support for the _Wxx predefined names. This support was
8001missing
8002and these names were not recognized by the compiler as valid predefined
8003names. ACPICA BZ 851.
8004
8005iASL: Added an error for all predefined names that are defined to return
8006no
8007value and thus must be implemented as Control Methods. These include all
8008of
8009the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
8010names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
8011
8012iASL: Implemented the -ts option to emit hex AML data in ASL format, as
8013an
8014ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
8015be
8016dynamically loaded via the Load() operator. Also cleaned up output for
8017the
8018-
8019ta and -tc options. ACPICA BZ 853.
8020
8021Tests: Added a new file with examples of extended iASL error checking.
8022Demonstrates the advanced error checking ability of the iASL compiler.
8023Available at tests/misc/badcode.asl.
8024
8025----------------------------------------
802631 March 2010. Summary of changes for version 20100331:
8027
80281) ACPI CA Core Subsystem:
8029
8030Completed a major update for the GPE support in order to improve support
8031for
8032shared GPEs and to simplify both host OS and ACPICA code. Added a
8033reference
8034count mechanism to support shared GPEs that require multiple device
8035drivers.
8036Several external interfaces have changed. One external interface has been
8037removed. One new external interface was added. Most of the GPE external
8038interfaces now use the GPE spinlock instead of the events mutex (and the
8039Flags parameter for many GPE interfaces has been removed.) See the
8040updated
8041ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
8042Rafael
8043Wysocki. ACPICA BZ 831.
8044
8045Changed:
8046    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
8047Removed:
8048    AcpiSetGpeType
8049New:
8050    AcpiSetGpe
8051
8052Implemented write support for DataTable operation regions. These regions
8053are
8054defined via the DataTableRegion() operator. Previously, only read support
8055was
8056implemented. The ACPI specification allows DataTableRegions to be
8057read/write,
8058however.
8059
8060Implemented a new subsystem option to force a copy of the DSDT to local
8061memory. Optionally copy the entire DSDT to local memory (instead of
8062simply
8063mapping it.) There are some (albeit very rare) BIOSs that corrupt or
8064replace
8065the original DSDT, creating the need for this option. Default is FALSE,
8066do
8067not copy the DSDT.
8068
8069Implemented detection of a corrupted or replaced DSDT. This change adds
8070support to detect a DSDT that has been corrupted and/or replaced from
8071outside
8072the OS (by firmware). This is typically catastrophic for the system, but
8073has
8074been seen on some machines. Once this problem has been detected, the DSDT
8075copy option can be enabled via system configuration. Lin Ming, Bob Moore.
8076
8077Fixed two problems with AcpiReallocateRootTable during the root table
8078copy.
8079When copying the root table to the new allocation, the length used was
8080incorrect. The new size was used instead of the current table size,
8081meaning
8082too much data was copied. Also, the count of available slots for ACPI
8083tables
8084was not set correctly. Alexey Starikovskiy, Bob Moore.
8085
8086Example Code and Data Size: These are the sizes for the OS-independent
8087acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8088debug version of the code includes the debug output trace mechanism and
8089has a
8090much larger code and data size.
8091
8092  Previous Release:
8093    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
8094    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
8095  Current Release:
8096    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
8097    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
8098
80992) iASL Compiler/Disassembler and Tools:
8100
8101iASL: Implement limited typechecking for values returned from predefined
8102control methods. The type of any returned static (unnamed) object is now
8103validated. For example, Return(1). ACPICA BZ 786.
8104
8105iASL: Fixed a predefined name object verification regression. Fixes a
8106problem
8107introduced in version 20100304. An error is incorrectly generated if a
8108predefined name is declared as a static named object with a value defined
8109using the keywords "Zero", "One", or "Ones". Lin Ming.
8110
8111iASL: Added Windows 7 support for the -g option (get local ACPI tables)
8112by
8113reducing the requested registry access rights. ACPICA BZ 842.
8114
8115Disassembler: fixed a possible fault when generating External()
8116statements.
8117Introduced in commit ae7d6fd: Properly handle externals with parent-
8118prefix
8119(carat). Fixes a string length allocation calculation. Lin Ming.
8120
8121----------------------------------------
812204 March 2010. Summary of changes for version 20100304:
8123
81241) ACPI CA Core Subsystem:
8125
8126Fixed a possible problem with the AML Mutex handling function
8127AcpiExReleaseMutex where the function could fault under the very rare
8128condition when the interpreter has blocked, the interpreter lock is
8129released,
8130the interpreter is then reentered via the same thread, and attempts to
8131acquire an AML mutex that was previously acquired. FreeBSD report 140979.
8132Lin
8133Ming.
8134
8135Implemented additional configuration support for the AML "Debug Object".
8136Output from the debug object can now be enabled via a global variable,
8137AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
8138debugging.
8139This debug output is now available in the release version of ACPICA
8140instead
8141of just the debug version. Also, the entire debug output module can now
8142be
8143configured out of the ACPICA build if desired. One new file added,
8144executer/exdebug.c. Lin Ming, Bob Moore.
8145
8146Added header support for the ACPI MCHI table (Management Controller Host
8147Interface Table). This table was added in ACPI 4.0, but the defining
8148document
8149has only recently become available.
8150
8151Standardized output of integer values for ACPICA warnings/errors. Always
8152use
81530x prefix for hex output, always use %u for unsigned integer decimal
8154output.
8155Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
8156400
8157invocations.) These invocations were converted from the original
8158ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
8159
8160Example Code and Data Size: These are the sizes for the OS-independent
8161acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8162debug version of the code includes the debug output trace mechanism and
8163has a
8164much larger code and data size.
8165
8166  Previous Release:
8167    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
8168    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
8169  Current Release:
8170    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
8171    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
8172
81732) iASL Compiler/Disassembler and Tools:
8174
8175iASL: Implemented typechecking support for static (non-control method)
8176predefined named objects that are declared with the Name() operator. For
8177example, the type of this object is now validated to be of type Integer:
8178Name(_BBN, 1). This change migrates the compiler to using the core
8179predefined
8180name table instead of maintaining a local version. Added a new file,
8181aslpredef.c. ACPICA BZ 832.
8182
8183Disassembler: Added support for the ACPI 4.0 MCHI table.
8184
8185----------------------------------------
818621 January 2010. Summary of changes for version 20100121:
8187
81881) ACPI CA Core Subsystem:
8189
8190Added the 2010 copyright to all module headers and signons. This affects
8191virtually every file in the ACPICA core subsystem, the iASL compiler, the
8192tools/utilities, and the test suites.
8193
8194Implemented a change to the AcpiGetDevices interface to eliminate
8195unnecessary
8196invocations of the _STA method. In the case where a specific _HID is
8197requested, do not run _STA until a _HID match is found. This eliminates
8198potentially dozens of _STA calls during a search for a particular
8199device/HID,
8200which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
8201
8202Implemented an additional repair for predefined method return values.
8203Attempt
8204to repair unexpected NULL elements within returned Package objects.
8205Create
8206an
8207Integer of value zero, a NULL String, or a zero-length Buffer as
8208appropriate.
8209ACPICA BZ 818. Lin Ming, Bob Moore.
8210
8211Removed the obsolete ACPI_INTEGER data type. This type was introduced as
8212the
8213code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
8214(with
821564-bit AML integers). It is now obsolete and this change removes it from
8216the
8217ACPICA code base, replaced by UINT64. The original typedef has been
8218retained
8219for now for compatibility with existing device driver code. ACPICA BZ
8220824.
8221
8222Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
8223in
8224the parse tree object.
8225
8226Added additional warning options for the gcc-4 generation. Updated the
8227source
8228accordingly. This includes some code restructuring to eliminate
8229unreachable
8230code, elimination of some gotos, elimination of unused return values,
8231some
8232additional casting, and removal of redundant declarations.
8233
8234Example Code and Data Size: These are the sizes for the OS-independent
8235acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8236debug version of the code includes the debug output trace mechanism and
8237has a
8238much larger code and data size.
8239
8240  Previous Release:
8241    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
8242    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
8243  Current Release:
8244    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
8245    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
8246
82472) iASL Compiler/Disassembler and Tools:
8248
8249No functional changes for this release.
8250
8251----------------------------------------
825214 December 2009. Summary of changes for version 20091214:
8253
82541) ACPI CA Core Subsystem:
8255
8256Enhanced automatic data type conversions for predefined name repairs.
8257This
8258change expands the automatic repairs/conversions for predefined name
8259return
8260values to make Integers, Strings, and Buffers fully interchangeable.
8261Also,
8262a
8263Buffer can be converted to a Package of Integers if necessary. The
8264nsrepair.c
8265module was completely restructured. Lin Ming, Bob Moore.
8266
8267Implemented automatic removal of null package elements during predefined
8268name
8269repairs. This change will automatically remove embedded and trailing NULL
8270package elements from returned package objects that are defined to
8271contain
8272a
8273variable number of sub-packages. The driver is then presented with a
8274package
8275with no null elements to deal with. ACPICA BZ 819.
8276
8277Implemented a repair for the predefined _FDE and _GTM names. The expected
8278return value for both names is a Buffer of 5 DWORDs. This repair fixes
8279two
8280possible problems (both seen in the field), where a package of integers
8281is
8282returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
8283Kim.
8284
8285Implemented additional module-level code support. This change will
8286properly
8287execute module-level code that is not at the root of the namespace (under
8288a
8289Device object, etc.). Now executes the code within the current scope
8290instead
8291of the root. ACPICA BZ 762. Lin Ming.
8292
8293Fixed possible mutex acquisition errors when running _REG methods. Fixes
8294a
8295problem where mutex errors can occur when running a _REG method that is
8296in
8297the same scope as a method-defined operation region or an operation
8298region
8299under a module-level IF block. This type of code is rare, so the problem
8300has
8301not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
8302
8303Fixed a possible memory leak during module-level code execution. An
8304object
8305could be leaked for each block of executed module-level code if the
8306interpreter slack mode is enabled This change deletes any implicitly
8307returned
8308object from the module-level code block. Lin Ming.
8309
8310Removed messages for successful predefined repair(s). The repair
8311mechanism
8312was considered too wordy. Now, messages are only unconditionally emitted
8313if
8314the return object cannot be repaired. Existing messages for successful
8315repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
8316827.
8317
8318Example Code and Data Size: These are the sizes for the OS-independent
8319acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8320debug version of the code includes the debug output trace mechanism and
8321has a
8322much larger code and data size.
8323
8324  Previous Release:
8325    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
8326    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
8327  Current Release:
8328    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
8329    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
8330
83312) iASL Compiler/Disassembler and Tools:
8332
8333iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
8334files
8335were no longer automatically removed at the termination of the compile.
8336
8337acpiexec: Implemented the -f option to specify default region fill value.
8338This option specifies the value used to initialize buffers that simulate
8339operation regions. Default value is zero. Useful for debugging problems
8340that
8341depend on a specific initial value for a region or field.
8342
8343----------------------------------------
834412 November 2009. Summary of changes for version 20091112:
8345
83461) ACPI CA Core Subsystem:
8347
8348Implemented a post-order callback to AcpiWalkNamespace. The existing
8349interface only has a pre-order callback. This change adds an additional
8350parameter for a post-order callback which will be more useful for bus
8351scans.
8352ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
8353
8354Modified the behavior of the operation region memory mapping cache for
8355SystemMemory. Ensure that the memory mappings created for operation
8356regions
8357do not cross 4K page boundaries. Crossing a page boundary while mapping
8358regions can cause kernel warnings on some hosts if the pages have
8359different
8360attributes. Such regions are probably BIOS bugs, and this is the
8361workaround.
8362Linux BZ 14445. Lin Ming.
8363
8364Implemented an automatic repair for predefined methods that must return
8365sorted lists. This change will repair (by sorting) packages returned by
8366_ALR,
8367_PSS, and _TSS. Drivers can now assume that the packages are correctly
8368sorted
8369and do not contain NULL package elements. Adds one new file,
8370namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
8371
8372Fixed a possible fault during predefined name validation if a return
8373Package
8374object contains NULL elements. Also adds a warning if a NULL element is
8375followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
8376may
8377include repair or removal of all such NULL elements where possible.
8378
8379Implemented additional module-level executable AML code support. This
8380change
8381will execute module-level code that is not at the root of the namespace
8382(under a Device object, etc.) at table load time. Module-level executable
8383AML
8384code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
8385
8386Implemented a new internal function to create Integer objects. This
8387function
8388simplifies miscellaneous object creation code. ACPICA BZ 823.
8389
8390Reduced the severity of predefined repair messages, Warning to Info.
8391Since
8392the object was successfully repaired, a warning is too severe. Reduced to
8393an
8394info message for now. These messages may eventually be changed to debug-
8395only.
8396ACPICA BZ 812.
8397
8398Example Code and Data Size: These are the sizes for the OS-independent
8399acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8400debug version of the code includes the debug output trace mechanism and
8401has a
8402much larger code and data size.
8403
8404  Previous Release:
8405    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
8406    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
8407  Current Release:
8408    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
8409    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
8410
84112) iASL Compiler/Disassembler and Tools:
8412
8413iASL: Implemented Switch() with While(1) so that Break works correctly.
8414This
8415change correctly implements the Switch operator with a surrounding
8416While(1)
8417so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
8418
8419iASL: Added a message if a package initializer list is shorter than
8420package
8421length. Adds a new remark for a Package() declaration if an initializer
8422list
8423exists, but is shorter than the declared length of the package. Although
8424technically legal, this is probably a coding error and it is seen in the
8425field. ACPICA BZ 815. Lin Ming, Bob Moore.
8426
8427iASL: Fixed a problem where the compiler could fault after the maximum
8428number
8429of errors was reached (200).
8430
8431acpixtract: Fixed a possible warning for pointer cast if the compiler
8432warning
8433level set very high.
8434
8435----------------------------------------
843613 October 2009. Summary of changes for version 20091013:
8437
84381) ACPI CA Core Subsystem:
8439
8440Fixed a problem where an Operation Region _REG method could be executed
8441more
8442than once. If a custom address space handler is installed by the host
8443before
8444the "initialize operation regions" phase of the ACPICA initialization,
8445any
8446_REG methods for that address space could be executed twice. This change
8447fixes the problem. ACPICA BZ 427. Lin Ming.
8448
8449Fixed a possible memory leak for the Scope() ASL operator. When the exact
8450invocation of "Scope(\)" is executed (change scope to root), one internal
8451operand object was leaked. Lin Ming.
8452
8453Implemented a run-time repair for the _MAT predefined method. If the _MAT
8454return value is defined as a Field object in the AML, and the field
8455size is less than or equal to the default width of an integer (32 or
845664),_MAT
8457can incorrectly return an Integer instead of a Buffer. ACPICA now
8458automatically repairs this problem. ACPICA BZ 810.
8459
8460Implemented a run-time repair for the _BIF and _BIX predefined methods.
8461The
8462"OEM Information" field is often incorrectly returned as an Integer with
8463value zero if the field is not supported by the platform. This is due to
8464an
8465ambiguity in the ACPI specification. The field should always be a string.
8466ACPICA now automatically repairs this problem by returning a NULL string
8467within the returned Package. ACPICA BZ 807.
8468
8469Example Code and Data Size: These are the sizes for the OS-independent
8470acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8471debug version of the code includes the debug output trace mechanism and
8472has a
8473much larger code and data size.
8474
8475  Previous Release:
8476    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
8477    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
8478  Current Release:
8479    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
8480    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
8481
84822) iASL Compiler/Disassembler and Tools:
8483
8484Disassembler: Fixed a problem where references to external symbols that
8485contained one or more parent-prefixes (carats) were not handled
8486correctly,
8487possibly causing a fault. ACPICA BZ 806. Lin Ming.
8488
8489Disassembler: Restructured the code so that all functions that handle
8490external symbols are in a single module. One new file is added,
8491common/dmextern.c.
8492
8493AML Debugger: Added a max count argument for the Batch command (which
8494executes multiple predefined methods within the namespace.)
8495
8496iASL: Updated the compiler documentation (User Reference.) Available at
8497http://www.acpica.org/documentation/. ACPICA BZ 750.
8498
8499AcpiXtract: Updated for Lint and other formatting changes. Close all open
8500files.
8501
8502----------------------------------------
850303 September 2009. Summary of changes for version 20090903:
8504
85051) ACPI CA Core Subsystem:
8506
8507For Windows Vista compatibility, added the automatic execution of an _INI
8508method located at the namespace root (\_INI). This method is executed at
8509table load time. This support is in addition to the automatic execution
8510of
8511\_SB._INI. Lin Ming.
8512
8513Fixed a possible memory leak in the interpreter for AML package objects
8514if
8515the package initializer list is longer than the defined size of the
8516package.
8517This apparently can only happen if the BIOS changes the package size on
8518the
8519fly (seen in a _PSS object), as ASL compilers do not allow this. The
8520interpreter will truncate the package to the defined size (and issue an
8521error
8522message), but previously could leave the extra objects undeleted if they
8523were
8524pre-created during the argument processing (such is the case if the
8525package
8526consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
8527
8528Fixed a problem seen when a Buffer or String is stored to itself via ASL.
8529This has been reported in the field. Previously, ACPICA would zero out
8530the
8531buffer/string. Now, the operation is treated as a noop. Provides Windows
8532compatibility. ACPICA BZ 803. Lin Ming.
8533
8534Removed an extraneous error message for ASL constructs of the form
8535Store(LocalX,LocalX) when LocalX is uninitialized. These curious
8536statements
8537are seen in many BIOSs and are once again treated as NOOPs and no error
8538is
8539emitted when they are encountered. ACPICA BZ 785.
8540
8541Fixed an extraneous warning message if a _DSM reserved method returns a
8542Package object. _DSM can return any type of object, so validation on the
8543return type cannot be performed. ACPICA BZ 802.
8544
8545Example Code and Data Size: These are the sizes for the OS-independent
8546acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8547debug version of the code includes the debug output trace mechanism and
8548has a
8549much larger code and data size.
8550
8551  Previous Release:
8552    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
8553    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
8554  Current Release:
8555    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
8556    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
8557
85582) iASL Compiler/Disassembler and Tools:
8559
8560iASL: Fixed a problem with the use of the Alias operator and Resource
8561Templates. The correct alias is now constructed and no error is emitted.
8562ACPICA BZ 738.
8563
8564iASL: Implemented the -I option to specify additional search directories
8565for
8566include files. Allows multiple additional search paths for include files.
8567Directories are searched in the order specified on the command line
8568(after
8569the local directory is searched.) ACPICA BZ 800.
8570
8571iASL: Fixed a problem where the full pathname for include files was not
8572emitted for warnings/errors. This caused the IDE support to not work
8573properly. ACPICA BZ 765.
8574
8575iASL: Implemented the -@ option to specify a Windows-style response file
8576containing additional command line options. ACPICA BZ 801.
8577
8578AcpiExec: Added support to load multiple AML files simultaneously (such
8579as
8580a
8581DSDT and multiple SSDTs). Also added support for wildcards within the AML
8582pathname. These features allow all machine tables to be easily loaded and
8583debugged together. ACPICA BZ 804.
8584
8585Disassembler: Added missing support for disassembly of HEST table Error
8586Bank
8587subtables.
8588
8589----------------------------------------
859030 July 2009. Summary of changes for version 20090730:
8591
8592The ACPI 4.0 implementation for ACPICA is complete with this release.
8593
85941) ACPI CA Core Subsystem:
8595
8596ACPI 4.0: Added header file support for all new and changed ACPI tables.
8597Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
8598new
8599for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
8600BERT,
8601EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
8602There
8603have been some ACPI 4.0 changes to other existing tables. Split the large
8604actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
8605
8606ACPI 4.0: Implemented predefined name validation for all new names. There
8607are
860831 new names in ACPI 4.0. The predefined validation module was split into
8609two
8610files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
8611
8612Implemented support for so-called "module-level executable code". This is
8613executable AML code that exists outside of any control method and is
8614intended
8615to be executed at table load time. Although illegal since ACPI 2.0, this
8616type
8617of code still exists and is apparently still being created. Blocks of
8618this
8619code are now detected and executed as intended. Currently, the code
8620blocks
8621must exist under either an If, Else, or While construct; these are the
8622typical cases seen in the field. ACPICA BZ 762. Lin Ming.
8623
8624Implemented an automatic dynamic repair for predefined names that return
8625nested Package objects. This applies to predefined names that are defined
8626to
8627return a variable-length Package of sub-packages. If the number of sub-
8628packages is one, BIOS code is occasionally seen that creates a simple
8629single
8630package with no sub-packages. This code attempts to fix the problem by
8631wrapping a new package object around the existing package. These methods
8632can
8633be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
8634BZ
8635790.
8636
8637Fixed a regression introduced in 20090625 for the AcpiGetDevices
8638interface.
8639The _HID/_CID matching was broken and no longer matched IDs correctly.
8640ACPICA
8641BZ 793.
8642
8643Fixed a problem with AcpiReset where the reset would silently fail if the
8644register was one of the protected I/O ports. AcpiReset now bypasses the
8645port
8646validation mechanism. This may eventually be driven into the
8647AcpiRead/Write
8648interfaces.
8649
8650Fixed a regression related to the recent update of the AcpiRead/Write
8651interfaces. A sleep/suspend could fail if the optional PM2 Control
8652register
8653does not exist during an attempt to write the Bus Master Arbitration bit.
8654(However, some hosts already delete the code that writes this bit, and
8655the
8656code may in fact be obsolete at this date.) ACPICA BZ 799.
8657
8658Fixed a problem where AcpiTerminate could fault if inadvertently called
8659twice
8660in succession. ACPICA BZ 795.
8661
8662Example Code and Data Size: These are the sizes for the OS-independent
8663acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8664debug version of the code includes the debug output trace mechanism and
8665has a
8666much larger code and data size.
8667
8668  Previous Release:
8669    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
8670    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
8671  Current Release:
8672    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
8673    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
8674
86752) iASL Compiler/Disassembler and Tools:
8676
8677ACPI 4.0: Implemented disassembler support for all new ACPI tables and
8678changes to existing tables. ACPICA BZ 775.
8679
8680----------------------------------------
868125 June 2009. Summary of changes for version 20090625:
8682
8683The ACPI 4.0 Specification was released on June 16 and is available at
8684www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
8685continue for the next few releases.
8686
86871) ACPI CA Core Subsystem:
8688
8689ACPI 4.0: Implemented interpreter support for the IPMI operation region
8690address space. Includes support for bi-directional data buffers and an
8691IPMI
8692address space handler (to be installed by an IPMI device driver.) ACPICA
8693BZ
8694773. Lin Ming.
8695
8696ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
8697Includes
8698support in both the header files and the disassembler.
8699
8700Completed a major update for the AcpiGetObjectInfo external interface.
8701Changes include:
8702 - Support for variable, unlimited length HID, UID, and CID strings.
8703 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
8704etc.)
8705 - Call the _SxW power methods on behalf of a device object.
8706 - Determine if a device is a PCI root bridge.
8707 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
8708These changes will require an update to all callers of this interface.
8709See
8710the updated ACPICA Programmer Reference for details. One new source file
8711has
8712been added - utilities/utids.c. ACPICA BZ 368, 780.
8713
8714Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
8715transfers. The Value parameter has been extended from 32 bits to 64 bits
8716in
8717order to support new ACPI 4.0 tables. These changes will require an
8718update
8719to
8720all callers of these interfaces. See the ACPICA Programmer Reference for
8721details. ACPICA BZ 768.
8722
8723Fixed several problems with AcpiAttachData. The handler was not invoked
8724when
8725the host node was deleted. The data sub-object was not automatically
8726deleted
8727when the host node was deleted. The interface to the handler had an
8728unused
8729parameter, this was removed. ACPICA BZ 778.
8730
8731Enhanced the function that dumps ACPI table headers. All non-printable
8732characters in the string fields are now replaced with '?' (Signature,
8733OemId,
8734OemTableId, and CompilerId.) ACPI tables with non-printable characters in
8735these fields are occasionally seen in the field. ACPICA BZ 788.
8736
8737Fixed a problem with predefined method repair code where the code that
8738attempts to repair/convert an object of incorrect type is only executed
8739on
8740the first time the predefined method is called. The mechanism that
8741disables
8742warnings on subsequent calls was interfering with the repair mechanism.
8743ACPICA BZ 781.
8744
8745Fixed a possible memory leak in the predefined validation/repair code
8746when
8747a
8748buffer is automatically converted to an expected string object.
8749
8750Removed obsolete 16-bit files from the distribution and from the current
8751git
8752tree head. ACPICA BZ 776.
8753
8754Example Code and Data Size: These are the sizes for the OS-independent
8755acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8756debug version of the code includes the debug output trace mechanism and
8757has a
8758much larger code and data size.
8759
8760  Previous Release:
8761    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
8762    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
8763  Current Release:
8764    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
8765    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
8766
87672) iASL Compiler/Disassembler and Tools:
8768
8769ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
8770operation region keyword. ACPICA BZ 771, 772. Lin Ming.
8771
8772ACPI 4.0: iASL - implemented compile-time validation support for all new
8773predefined names and control methods (31 total). ACPICA BZ 769.
8774
8775----------------------------------------
877621 May 2009. Summary of changes for version 20090521:
8777
87781) ACPI CA Core Subsystem:
8779
8780Disabled the preservation of the SCI enable bit in the PM1 control
8781register.
8782The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
8783to
8784be
8785a "preserved" bit - "OSPM always preserves this bit position", section
87864.7.3.2.1. However, some machines fail if this bit is in fact preserved
8787because the bit needs to be explicitly set by the OS as a workaround. No
8788machines fail if the bit is not preserved. Therefore, ACPICA no longer
8789attempts to preserve this bit.
8790
8791Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
8792incorrectly formed _PRT package could cause a fault. Added validation to
8793ensure that each package element is actually a sub-package.
8794
8795Implemented a new interface to install or override a single control
8796method,
8797AcpiInstallMethod. This interface is useful when debugging in order to
8798repair
8799an existing method or to install a missing method without having to
8800override
8801the entire ACPI table. See the ACPICA Programmer Reference for use and
8802examples. Lin Ming, Bob Moore.
8803
8804Fixed several reference count issues with the DdbHandle object that is
8805created from a Load or LoadTable operator. Prevent premature deletion of
8806the
8807object. Also, mark the object as invalid once the table has been
8808unloaded.
8809This is needed because the handle itself may not be deleted after the
8810table
8811unload, depending on whether it has been stored in a named object by the
8812caller. Lin Ming.
8813
8814Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
8815mutexes of the same sync level are acquired but then not released in
8816strict
8817opposite order, the internally maintained Current Sync Level becomes
8818confused
8819and can cause subsequent execution errors. ACPICA BZ 471.
8820
8821Changed the allowable release order for ASL mutex objects. The ACPI 4.0
8822specification has been changed to make the SyncLevel for mutex objects
8823more
8824useful. When releasing a mutex, the SyncLevel of the mutex must now be
8825the
8826same as the current sync level. This makes more sense than the previous
8827rule
8828(SyncLevel less than or equal). This change updates the code to match the
8829specification.
8830
8831Fixed a problem with the local version of the AcpiOsPurgeCache function.
8832The
8833(local) cache must be locked during all cache object deletions. Andrew
8834Baumann.
8835
8836Updated the Load operator to use operation region interfaces. This
8837replaces
8838direct memory mapping with region access calls. Now, all region accesses
8839go
8840through the installed region handler as they should.
8841
8842Simplified and optimized the NsGetNextNode function. Reduced parameter
8843count
8844and reduced code for this frequently used function.
8845
8846Example Code and Data Size: These are the sizes for the OS-independent
8847acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8848debug version of the code includes the debug output trace mechanism and
8849has a
8850much larger code and data size.
8851
8852  Previous Release:
8853    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
8854    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
8855  Current Release:
8856    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
8857    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
8858
88592) iASL Compiler/Disassembler and Tools:
8860
8861Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
8862problems
8863with sub-table disassembly and handling invalid sub-tables. Attempt
8864recovery
8865after an invalid sub-table ID.
8866
8867----------------------------------------
886822 April 2009. Summary of changes for version 20090422:
8869
88701) ACPI CA Core Subsystem:
8871
8872Fixed a compatibility issue with the recently released I/O port
8873protection
8874mechanism. For windows compatibility, 1) On a port protection violation,
8875simply ignore the request and do not return an exception (allow the
8876control
8877method to continue execution.) 2) If only part of the request overlaps a
8878protected port, read/write the individual ports that are not protected.
8879Linux
8880BZ 13036. Lin Ming
8881
8882Enhanced the execution of the ASL/AML BreakPoint operator so that it
8883actually
8884breaks into the AML debugger if the debugger is present. This matches the
8885ACPI-defined behavior.
8886
8887Fixed several possible warnings related to the use of the configurable
8888ACPI_THREAD_ID. This type can now be configured as either an integer or a
8889pointer with no warnings. Also fixes several warnings in printf-like
8890statements for the 64-bit build when the type is configured as a pointer.
8891ACPICA BZ 766, 767.
8892
8893Fixed a number of possible warnings when compiling with gcc 4+ (depending
8894on
8895warning options.) Examples include printf formats, aliasing, unused
8896globals,
8897missing prototypes, missing switch default statements, use of non-ANSI
8898library functions, use of non-ANSI constructs. See generate/unix/Makefile
8899for
8900a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
8901
8902Example Code and Data Size: These are the sizes for the OS-independent
8903acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8904debug version of the code includes the debug output trace mechanism and
8905has a
8906much larger code and data size.
8907
8908  Previous Release:
8909    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
8910    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
8911  Current Release:
8912    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
8913    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
8914
89152) iASL Compiler/Disassembler and Tools:
8916
8917iASL: Fixed a generation warning from Bison 2.3 and fixed several
8918warnings
8919on
8920the 64-bit build.
8921
8922iASL: Fixed a problem where the Unix/Linux versions of the compiler could
8923not
8924correctly digest Windows/DOS formatted files (with CR/LF).
8925
8926iASL: Added a new option for "quiet mode" (-va) that produces only the
8927compilation summary, not individual errors and warnings. Useful for large
8928batch compilations.
8929
8930AcpiExec: Implemented a new option (-z) to enable a forced
8931semaphore/mutex
8932timeout that can be used to detect hang conditions during execution of
8933AML
8934code (includes both internal semaphores and AML-defined mutexes and
8935events.)
8936
8937Added new makefiles for the generation of acpica in a generic unix-like
8938environment. These makefiles are intended to generate the acpica tools
8939and
8940utilities from the original acpica git source tree structure.
8941
8942Test Suites: Updated and cleaned up the documentation files. Updated the
8943copyrights to 2009, affecting all source files. Use the new version of
8944iASL
8945with quiet mode. Increased the number of available semaphores in the
8946Windows
8947OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
8948added
8949an alternate implementation of the semaphore timeout to allow aslts to
8950execute fully on Cygwin.
8951
8952----------------------------------------
895320 March 2009. Summary of changes for version 20090320:
8954
89551) ACPI CA Core Subsystem:
8956
8957Fixed a possible race condition between AcpiWalkNamespace and dynamic
8958table
8959unloads. Added a reader/writer locking mechanism to allow multiple
8960concurrent
8961namespace walks (readers), but block a dynamic table unload until it can
8962gain
8963exclusive write access to the namespace. This fixes a problem where a
8964table
8965unload could (possibly catastrophically) delete the portion of the
8966namespace
8967that is currently being examined by a walk. Adds a new file, utlock.c,
8968that
8969implements the reader/writer lock mechanism. ACPICA BZ 749.
8970
8971Fixed a regression introduced in version 20090220 where a change to the
8972FADT
8973handling could cause the ACPICA subsystem to access non-existent I/O
8974ports.
8975
8976Modified the handling of FADT register and table (FACS/DSDT) addresses.
8977The
8978FADT can contain both 32-bit and 64-bit versions of these addresses.
8979Previously, the 64-bit versions were favored, meaning that if both 32 and
898064
8981versions were valid, but not equal, the 64-bit version was used. This was
8982found to cause some machines to fail. Now, in this case, the 32-bit
8983version
8984is used instead. This now matches the Windows behavior.
8985
8986Implemented a new mechanism to protect certain I/O ports. Provides
8987Microsoft
8988compatibility and protects the standard PC I/O ports from access via AML
8989code. Adds a new file, hwvalid.c
8990
8991Fixed a possible extraneous warning message from the FADT support. The
8992message warns of a 32/64 length mismatch between the legacy and GAS
8993definitions for a register.
8994
8995Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
8996is
8997made obsolete by the port protection mechanism above. It was previously
8998used
8999to validate the entire address range of an operation region, which could
9000be
9001incorrect if the range included illegal ports, but fields within the
9002operation region did not actually access those ports. Validation is now
9003performed on a per-field basis instead of the entire region.
9004
9005Modified the handling of the PM1 Status Register ignored bit (bit 11.)
9006Ignored bits must be "preserved" according to the ACPI spec. Usually,
9007this
9008means a read/modify/write when writing to the register. However, for
9009status
9010registers, writing a one means clear the event. Writing a zero means
9011preserve
9012the event (do not clear.) This behavior is clarified in the ACPI 4.0
9013spec,
9014and the ACPICA code now simply always writes a zero to the ignored bit.
9015
9016Modified the handling of ignored bits for the PM1 A/B Control Registers.
9017As
9018per the ACPI specification, for the control registers, preserve
9019(read/modify/write) all bits that are defined as either reserved or
9020ignored.
9021
9022Updated the handling of write-only bits in the PM1 A/B Control Registers.
9023When reading the register, zero the write-only bits as per the ACPI spec.
9024ACPICA BZ 443. Lin Ming.
9025
9026Removed "Linux" from the list of supported _OSI strings. Linux no longer
9027wants to reply true to this request. The Windows strings are the only
9028paths
9029through the AML that are tested and known to work properly.
9030
9031  Previous Release:
9032    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
9033    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
9034  Current Release:
9035    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
9036    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
9037
90382) iASL Compiler/Disassembler and Tools:
9039
9040Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
9041and
9042aetables.c
9043
9044----------------------------------------
904520 February 2009. Summary of changes for version 20090220:
9046
90471) ACPI CA Core Subsystem:
9048
9049Optimized the ACPI register locking. Removed locking for reads from the
9050ACPI
9051bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
9052is
9053not required when reading the single-bit registers. The
9054AcpiGetRegisterUnlocked function is no longer needed and has been
9055removed.
9056This will improve performance for reads on these registers. ACPICA BZ
9057760.
9058
9059Fixed the parameter validation for AcpiRead/Write. Now return
9060AE_BAD_PARAMETER if the input register pointer is null, and
9061AE_BAD_ADDRESS
9062if
9063the register has an address of zero. Previously, these cases simply
9064returned
9065AE_OK. For optional registers such as PM1B status/enable/control, the
9066caller
9067should check for a valid register address before calling. ACPICA BZ 748.
9068
9069Renamed the external ACPI bit register access functions. Renamed
9070AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
9071functions. The new names are AcpiReadBitRegister and
9072AcpiWriteBitRegister.
9073Also, restructured the code for these functions by simplifying the code
9074path
9075and condensing duplicate code to reduce code size.
9076
9077Added new functions to transparently handle the possibly split PM1 A/B
9078registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
9079functions
9080now handle the split registers for PM1 Status, Enable, and Control.
9081ACPICA
9082BZ
9083746.
9084
9085Added a function to handle the PM1 control registers,
9086AcpiHwWritePm1Control.
9087This function writes both of the PM1 control registers (A/B). These
9088registers
9089are different than the PM1 A/B status and enable registers in that
9090different
9091values can be written to the A/B registers. Most notably, the SLP_TYP
9092bits
9093can be different, as per the values returned from the _Sx predefined
9094methods.
9095
9096Removed an extra register write within AcpiHwClearAcpiStatus. This
9097function
9098was writing an optional PM1B status register twice. The existing call to
9099the
9100low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
9101A/B
9102register. ACPICA BZ 751.
9103
9104Split out the PM1 Status registers from the FADT. Added new globals for
9105these
9106registers (A/B), similar to the way the PM1 Enable registers are handled.
9107Instead of overloading the FADT Event Register blocks. This makes the
9108code
9109clearer and less prone to error.
9110
9111Fixed the warning message for when the platform contains too many ACPI
9112tables
9113for the default size of the global root table data structure. The
9114calculation
9115for the truncation value was incorrect.
9116
9117Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
9118obsolete macro, since it is now a simple reference to ->common.type.
9119There
9120were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
9121
9122Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
9123TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
9124simply SLEEP_TYPE. ACPICA BZ 754.
9125
9126Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
9127function is only needed on 64-bit host operating systems and is thus not
9128included for 32-bit hosts.
9129
9130Debug output: print the input and result for invocations of the _OSI
9131reserved
9132control method via the ACPI_LV_INFO debug level. Also, reduced some of
9133the
9134verbosity of this debug level. Len Brown.
9135
9136Example Code and Data Size: These are the sizes for the OS-independent
9137acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9138debug version of the code includes the debug output trace mechanism and
9139has a
9140much larger code and data size.
9141
9142  Previous Release:
9143    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
9144    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
9145  Current Release:
9146    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
9147    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
9148
91492) iASL Compiler/Disassembler and Tools:
9150
9151Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
9152various legal performance profiles.
9153
9154----------------------------------------
915523 January 2009. Summary of changes for version 20090123:
9156
91571) ACPI CA Core Subsystem:
9158
9159Added the 2009 copyright to all module headers and signons. This affects
9160virtually every file in the ACPICA core subsystem, the iASL compiler, and
9161the tools/utilities.
9162
9163Implemented a change to allow the host to override any ACPI table,
9164including
9165dynamically loaded tables. Previously, only the DSDT could be replaced by
9166the
9167host. With this change, the AcpiOsTableOverride interface is called for
9168each
9169table found in the RSDT/XSDT during ACPICA initialization, and also
9170whenever
9171a table is dynamically loaded via the AML Load operator.
9172
9173Updated FADT flag definitions, especially the Boot Architecture flags.
9174
9175Debugger: For the Find command, automatically pad the input ACPI name
9176with
9177underscores if the name is shorter than 4 characters. This enables a
9178match
9179with the actual namespace entry which is itself padded with underscores.
9180
9181Example Code and Data Size: These are the sizes for the OS-independent
9182acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9183debug version of the code includes the debug output trace mechanism and
9184has a
9185much larger code and data size.
9186
9187  Previous Release:
9188    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
9189    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
9190  Current Release:
9191    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
9192    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
9193
91942) iASL Compiler/Disassembler and Tools:
9195
9196Fix build error under Bison-2.4.
9197
9198Disassembler: Enhanced FADT support. Added decoding of the Boot
9199Architecture
9200flags. Now decode all flags, regardless of the FADT version. Flag output
9201includes the FADT version which first defined each flag.
9202
9203The iASL -g option now dumps the RSDT to a file (in addition to the FADT
9204and
9205DSDT). Windows only.
9206
9207----------------------------------------
920804 December 2008. Summary of changes for version 20081204:
9209
92101) ACPI CA Core Subsystem:
9211
9212The ACPICA Programmer Reference has been completely updated and revamped
9213for
9214this release. This includes updates to the external interfaces, OSL
9215interfaces, the overview sections, and the debugger reference.
9216
9217Several new ACPICA interfaces have been implemented and documented in the
9218programmer reference:
9219AcpiReset - Writes the reset value to the FADT-defined reset register.
9220AcpiDisableAllGpes - Disable all available GPEs.
9221AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
9222AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
9223AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
9224AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
9225AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
9226
9227Most of the public ACPI hardware-related interfaces have been moved to a
9228new
9229file, components/hardware/hwxface.c
9230
9231Enhanced the FADT parsing and low-level ACPI register access: The ACPI
9232register lengths within the FADT are now used, and the low level ACPI
9233register access no longer hardcodes the ACPI register lengths. Given that
9234there may be some risk in actually trusting the FADT register lengths, a
9235run-
9236time option was added to fall back to the default hardcoded lengths if
9237the
9238FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
9239option is set to true for now, and a warning is issued if a suspicious
9240FADT
9241register length is overridden with the default value.
9242
9243Fixed a reference count issue in NsRepairObject. This problem was
9244introduced
9245in version 20081031 as part of a fix to repair Buffer objects within
9246Packages. Lin Ming.
9247
9248Added semaphore support to the Linux/Unix application OS-services layer
9249(OSL). ACPICA BZ 448. Lin Ming.
9250
9251Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
9252will
9253be implemented in the OSL, or will binary semaphores be used instead.
9254
9255Example Code and Data Size: These are the sizes for the OS-independent
9256acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9257debug version of the code includes the debug output trace mechanism and
9258has a
9259much larger code and data size.
9260
9261  Previous Release:
9262    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
9263    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
9264  Current Release:
9265    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
9266    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
9267
92682) iASL Compiler/Disassembler and Tools:
9269
9270iASL: Completed the '-e' option to include additional ACPI tables in
9271order
9272to
9273aid with disassembly and External statement generation. ACPICA BZ 742.
9274Lin
9275Ming.
9276
9277iASL: Removed the "named object in while loop" error. The compiler cannot
9278determine how many times a loop will execute. ACPICA BZ 730.
9279
9280Disassembler: Implemented support for FADT revision 2 (MS extension).
9281ACPICA
9282BZ 743.
9283
9284Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
9285MCFG).
9286
9287----------------------------------------
928831 October 2008. Summary of changes for version 20081031:
9289
92901) ACPI CA Core Subsystem:
9291
9292Restructured the ACPICA header files into public/private. acpi.h now
9293includes
9294only the "public" acpica headers. All other acpica headers are "private"
9295and
9296should not be included by acpica users. One new file, accommon.h is used
9297to
9298include the commonly used private headers for acpica code generation.
9299Future
9300plans include moving all private headers to a new subdirectory.
9301
9302Implemented an automatic Buffer->String return value conversion for
9303predefined ACPI methods. For these methods (such as _BIF), added
9304automatic
9305conversion for return objects that are required to be a String, but a
9306Buffer
9307was found instead. This can happen when reading string battery data from
9308an
9309operation region, because it used to be difficult to convert the data
9310from
9311buffer to string from within the ASL. Ensures that the host OS is
9312provided
9313with a valid null-terminated string. Linux BZ 11822.
9314
9315Updated the FACS waking vector interfaces. Split
9316AcpiSetFirmwareWakingVector
9317into two: one for the 32-bit vector, another for the 64-bit vector. This
9318is
9319required because the host OS must setup the wake much differently for
9320each
9321vector (real vs. protected mode, etc.) and the interface itself should
9322not
9323be
9324deciding which vector to use. Also, eliminated the
9325GetFirmwareWakingVector
9326interface, as it served no purpose (only the firmware reads the vector,
9327OS
9328only writes the vector.) ACPICA BZ 731.
9329
9330Implemented a mechanism to escape infinite AML While() loops. Added a
9331loop
9332counter to force exit from AML While loops if the count becomes too
9333large.
9334This can occur in poorly written AML when the hardware does not respond
9335within a while loop and the loop does not implement a timeout. The
9336maximum
9337loop count is configurable. A new exception code is returned when a loop
9338is
9339broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
9340
9341Optimized the execution of AML While loops. Previously, a control state
9342object was allocated and freed for each execution of the loop. The
9343optimization is to simply reuse the control state for each iteration.
9344This
9345speeds up the raw loop execution time by about 5%.
9346
9347Enhanced the implicit return mechanism. For Windows compatibility, return
9348an
9349implicit integer of value zero for methods that contain no executable
9350code.
9351Such methods are seen in the field as stubs (presumably), and can cause
9352drivers to fail if they expect a return value. Lin Ming.
9353
9354Allow multiple backslashes as root prefixes in namepaths. In a fully
9355qualified namepath, allow multiple backslash prefixes. This can happen
9356(and
9357is seen in the field) because of the use of a double-backslash in strings
9358(since backslash is the escape character) causing confusion. ACPICA BZ
9359739
9360Lin Ming.
9361
9362Emit a warning if two different FACS or DSDT tables are discovered in the
9363FADT. Checks if there are two valid but different addresses for the FACS
9364and
9365DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
9366
9367Consolidated the method argument count validation code. Merged the code
9368that
9369validates control method argument counts into the predefined validation
9370module. Eliminates possible multiple warnings for incorrect argument
9371counts.
9372
9373Implemented ACPICA example code. Includes code for ACPICA initialization,
9374handler installation, and calling a control method. Available at
9375source/tools/examples.
9376
9377Added a global pointer for FACS table to simplify internal FACS access.
9378Use
9379the global pointer instead of using AcpiGetTableByIndex for each FACS
9380access.
9381This simplifies the code for the Global Lock and the Firmware Waking
9382Vector(s).
9383
9384Example Code and Data Size: These are the sizes for the OS-independent
9385acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9386debug version of the code includes the debug output trace mechanism and
9387has a
9388much larger code and data size.
9389
9390  Previous Release:
9391    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
9392    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
9393  Current Release:
9394    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
9395    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
9396
93972) iASL Compiler/Disassembler and Tools:
9398
9399iASL: Improved disassembly of external method calls. Added the -e option
9400to
9401allow the inclusion of additional ACPI tables to help with the
9402disassembly
9403of
9404method invocations and the generation of external declarations during the
9405disassembly. Certain external method invocations cannot be disassembled
9406properly without the actual declaration of the method. Use the -e option
9407to
9408include the table where the external method(s) are actually declared.
9409Most
9410useful for disassembling SSDTs that make method calls back to the master
9411DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
9412-d
9413-e dsdt.aml ssdt1.aml
9414
9415iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
9416problem where the use of an alias within a namepath would result in a not
9417found error or cause the compiler to fault. Also now allows forward
9418references from the Alias operator itself. ACPICA BZ 738.
9419
9420----------------------------------------
942126 September 2008. Summary of changes for version 20080926:
9422
94231) ACPI CA Core Subsystem:
9424
9425Designed and implemented a mechanism to validate predefined ACPI methods
9426and
9427objects. This code validates the predefined ACPI objects (objects whose
9428names
9429start with underscore) that appear in the namespace, at the time they are
9430evaluated. The argument count and the type of the returned object are
9431validated against the ACPI specification. The purpose of this validation
9432is
9433to detect problems with the BIOS-implemented predefined ACPI objects
9434before
9435the results are returned to the ACPI-related drivers. Future enhancements
9436may
9437include actual repair of incorrect return objects where possible. Two new
9438files are nspredef.c and acpredef.h.
9439
9440Fixed a fault in the AML parser if a memory allocation fails during the
9441Op
9442completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
9443
9444Fixed an issue with implicit return compatibility. This change improves
9445the
9446implicit return mechanism to be more compatible with the MS interpreter.
9447Lin
9448Ming, ACPICA BZ 349.
9449
9450Implemented support for zero-length buffer-to-string conversions. Allow
9451zero
9452length strings during interpreter buffer-to-string conversions. For
9453example,
9454during the ToDecimalString and ToHexString operators, as well as implicit
9455conversions. Fiodor Suietov, ACPICA BZ 585.
9456
9457Fixed two possible memory leaks in the error exit paths of
9458AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
9459are
9460similar in that they use a stack of state objects in order to eliminate
9461recursion. The stack must be fully unwound and deallocated if an error
9462occurs. Lin Ming. ACPICA BZ 383.
9463
9464Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
9465global
9466ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
9467Moore ACPICA BZ 442.
9468
9469Removed the obsolete version number in module headers. Removed the
9470"$Revision" number that appeared in each module header. This version
9471number
9472was useful under SourceSafe and CVS, but has no meaning under git. It is
9473not
9474only incorrect, it could also be misleading.
9475
9476Example Code and Data Size: These are the sizes for the OS-independent
9477acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9478debug version of the code includes the debug output trace mechanism and
9479has a
9480much larger code and data size.
9481
9482  Previous Release:
9483    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9484    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
9485  Current Release:
9486    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
9487    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
9488
9489----------------------------------------
949029 August 2008. Summary of changes for version 20080829:
9491
94921) ACPI CA Core Subsystem:
9493
9494Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
9495Reference. Changes include the elimination of cheating on the Object
9496field
9497for the DdbHandle subtype, addition of a reference class field to
9498differentiate the various reference types (instead of an AML opcode), and
9499the
9500cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
9501
9502Reduce an error to a warning for an incorrect method argument count.
9503Previously aborted with an error if too few arguments were passed to a
9504control method via the external ACPICA interface. Now issue a warning
9505instead
9506and continue. Handles the case where the method inadvertently declares
9507too
9508many arguments, but does not actually use the extra ones. Applies mainly
9509to
9510the predefined methods. Lin Ming. Linux BZ 11032.
9511
9512Disallow the evaluation of named object types with no intrinsic value.
9513Return
9514AE_TYPE for objects that have no value and therefore evaluation is
9515undefined:
9516Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
9517of
9518these types were allowed, but an exception would be generated at some
9519point
9520during the evaluation. Now, the error is generated up front.
9521
9522Fixed a possible memory leak in the AcpiNsGetExternalPathname function
9523(nsnames.c). Fixes a leak in the error exit path.
9524
9525Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
9526debug
9527levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
9528ACPI_EXCEPTION
9529interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
9530ACPI_LV_EVENTS.
9531
9532Removed obsolete and/or unused exception codes from the acexcep.h header.
9533There is the possibility that certain device drivers may be affected if
9534they
9535use any of these exceptions.
9536
9537The ACPICA documentation has been added to the public git source tree,
9538under
9539acpica/documents. Included are the ACPICA programmer reference, the iASL
9540compiler reference, and the changes.txt release logfile.
9541
9542Example Code and Data Size: These are the sizes for the OS-independent
9543acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9544debug version of the code includes the debug output trace mechanism and
9545has a
9546much larger code and data size.
9547
9548  Previous Release:
9549    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9550    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
9551  Current Release:
9552    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9553    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
9554
95552) iASL Compiler/Disassembler and Tools:
9556
9557Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
9558defines _SCP with 3 arguments. Previous versions defined it with only 1
9559argument. iASL now allows both definitions.
9560
9561iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
9562zero-
9563length subtables when disassembling ACPI tables. Also fixed a couple of
9564errors where a full 16-bit table type field was not extracted from the
9565input
9566properly.
9567
9568acpisrc: Improve comment counting mechanism for generating source code
9569statistics. Count first and last lines of multi-line comments as
9570whitespace,
9571not comment lines. Handle Linux legal header in addition to standard
9572acpica
9573header.
9574
9575----------------------------------------
9576
957729 July 2008. Summary of changes for version 20080729:
9578
95791) ACPI CA Core Subsystem:
9580
9581Fix a possible deadlock in the GPE dispatch. Remove call to
9582AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
9583attempt
9584to acquire the GPE lock but can deadlock since the GPE lock is already
9585held
9586at dispatch time. This code was introduced in version 20060831 as a
9587response
9588to Linux BZ 6881 and has since been removed from Linux.
9589
9590Add a function to dereference returned reference objects. Examines the
9591return
9592object from a call to AcpiEvaluateObject. Any Index or RefOf references
9593are
9594automatically dereferenced in an attempt to return something useful
9595(these
9596reference types cannot be converted into an external ACPI_OBJECT.)
9597Provides
9598MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
9599
9600x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
9601subtables for the MADT and one new subtable for the SRAT. Includes
9602disassembler and AcpiSrc support. Data from the Intel 64 Architecture
9603x2APIC
9604Specification, June 2008.
9605
9606Additional error checking for pathname utilities. Add error check after
9607all
9608calls to AcpiNsGetPathnameLength. Add status return from
9609AcpiNsBuildExternalPath and check after all calls. Add parameter
9610validation
9611to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
9612
9613Return status from the global init function AcpiUtGlobalInitialize. This
9614is
9615used by both the kernel subsystem and the utilities such as iASL
9616compiler.
9617The function could possibly fail when the caches are initialized. Yang
9618Yi.
9619
9620Add a function to decode reference object types to strings. Created for
9621improved error messages.
9622
9623Improve object conversion error messages. Better error messages during
9624object
9625conversion from internal to the external ACPI_OBJECT. Used for external
9626calls
9627to AcpiEvaluateObject.
9628
9629Example Code and Data Size: These are the sizes for the OS-independent
9630acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9631debug version of the code includes the debug output trace mechanism and
9632has a
9633much larger code and data size.
9634
9635  Previous Release:
9636    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
9637    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
9638  Current Release:
9639    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9640    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
9641
96422) iASL Compiler/Disassembler and Tools:
9643
9644Debugger: fix a possible hang when evaluating non-methods. Fixes a
9645problem
9646introduced in version 20080701. If the object being evaluated (via
9647execute
9648command) is not a method, the debugger can hang while trying to obtain
9649non-
9650existent parameters.
9651
9652iASL: relax error for using reserved "_T_x" identifiers. These names can
9653appear in a disassembled ASL file if they were emitted by the original
9654compiler. Instead of issuing an error or warning and forcing the user to
9655manually change these names, issue a remark instead.
9656
9657iASL: error if named object created in while loop. Emit an error if any
9658named
9659object is created within a While loop. If allowed, this code will
9660generate
9661a
9662run-time error on the second iteration of the loop when an attempt is
9663made
9664to
9665create the same named object twice. ACPICA bugzilla 730.
9666
9667iASL: Support absolute pathnames for include files. Add support for
9668absolute
9669pathnames within the Include operator. previously, only relative
9670pathnames
9671were supported.
9672
9673iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
9674Descriptor.
9675The ACPI spec requires one interrupt minimum. BZ 423
9676
9677iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
9678Handles the case for the Interrupt Resource Descriptor where
9679the ResourceSource argument is omitted but ResourceSourceIndex
9680is present. Now leave room for the Index. BZ 426
9681
9682iASL: Prevent error message if CondRefOf target does not exist. Fixes
9683cases
9684where an error message is emitted if the target does not exist. BZ 516
9685
9686iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
9687(get ACPI tables on Windows). This was apparently broken in version
968820070919.
9689
9690AcpiXtract: Handle EOF while extracting data. Correctly handle the case
9691where
9692the EOF happens immediately after the last table in the input file. Print
9693completion message. Previously, no message was displayed in this case.
9694
9695----------------------------------------
969601 July 2008. Summary of changes for version 20080701:
9697
96980) Git source tree / acpica.org
9699
9700Fixed a problem where a git-clone from http would not transfer the entire
9701source tree.
9702
97031) ACPI CA Core Subsystem:
9704
9705Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
9706enable bit. Now performs a read-change-write of the enable register
9707instead
9708of simply writing out the cached enable mask. This will prevent
9709inadvertent
9710enabling of GPEs if a rogue GPE is received during initialization (before
9711GPE
9712handlers are installed.)
9713
9714Implemented a copy for dynamically loaded tables. Previously, dynamically
9715loaded tables were simply mapped - but on some machines this memory is
9716corrupted after suspend. Now copy the table to a local buffer. For the
9717OpRegion case, added checksum verify. Use the table length from the table
9718header, not the region length. For the Buffer case, use the table length
9719also. Dennis Noordsij, Bob Moore. BZ 10734
9720
9721Fixed a problem where the same ACPI table could not be dynamically loaded
9722and
9723unloaded more than once. Without this change, a table cannot be loaded
9724again
9725once it has been loaded/unloaded one time. The current mechanism does not
9726unregister a table upon an unload. During a load, if the same table is
9727found,
9728this no longer returns an exception. BZ 722
9729
9730Fixed a problem where the wrong descriptor length was calculated for the
9731EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
9732EndTag
9733are calculated as 12 bytes long, but the actual length in the internal
9734descriptor is 16 because of the round-up to 8 on the 64-bit build.
9735Reported
9736by Linn Crosetto. BZ 728
9737
9738Fixed a possible memory leak in the Unload operator. The DdbHandle
9739returned
9740by Load() did not have its reference count decremented during unload,
9741leading
9742to a memory leak. Lin Ming. BZ 727
9743
9744Fixed a possible memory leak when deleting thermal/processor objects. Any
9745associated notify handlers (and objects) were not being deleted. Fiodor
9746Suietov. BZ 506
9747
9748Fixed the ordering of the ASCII names in the global mutex table to match
9749the
9750actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
9751only.
9752Vegard Nossum. BZ 726
9753
9754Enhanced the AcpiGetObjectInfo interface to return the number of required
9755arguments if the object is a control method. Added this call to the
9756debugger
9757so the proper number of default arguments are passed to a method. This
9758prevents a warning when executing methods from AcpiExec.
9759
9760Added a check for an invalid handle in AcpiGetObjectInfo. Return
9761AE_BAD_PARAMETER if input handle is invalid. BZ 474
9762
9763Fixed an extraneous warning from exconfig.c on the 64-bit build.
9764
9765Example Code and Data Size: These are the sizes for the OS-independent
9766acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9767debug version of the code includes the debug output trace mechanism and
9768has a
9769much larger code and data size.
9770
9771  Previous Release:
9772    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
9773    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
9774  Current Release:
9775    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
9776    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
9777
97782) iASL Compiler/Disassembler and Tools:
9779
9780iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
9781resource descriptor names.
9782
9783iASL: Detect invalid ASCII characters in input (windows version). Removed
9784the
9785"-CF" flag from the flex compile, enables correct detection of non-ASCII
9786characters in the input. BZ 441
9787
9788iASL: Eliminate warning when result of LoadTable is not used. Eliminate
9789the
9790"result of operation not used" warning when the DDB handle returned from
9791LoadTable is not used. The warning is not needed. BZ 590
9792
9793AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
9794method
9795to
9796pass address of table to the AML. Added option to disable OpRegion
9797simulation
9798to allow creation of an OpRegion with a real address that was passed to
9799_CFG.
9800All of this allows testing of the Load and Unload operators from
9801AcpiExec.
9802
9803Debugger: update tables command for unloaded tables. Handle unloaded
9804tables
9805and use the standard table header output routine.
9806
9807----------------------------------------
980809 June 2008. Summary of changes for version 20080609:
9809
98101) ACPI CA Core Subsystem:
9811
9812Implemented a workaround for reversed _PRT entries. A significant number
9813of
9814BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
9815change dynamically detects and repairs this problem. Provides
9816compatibility
9817with MS ACPI. BZ 6859
9818
9819Simplified the internal ACPI hardware interfaces to eliminate the locking
9820flag parameter from Register Read/Write. Added a new external interface,
9821AcpiGetRegisterUnlocked.
9822
9823Fixed a problem where the invocation of a GPE control method could hang.
9824This
9825was a regression introduced in 20080514. The new method argument count
9826validation mechanism can enter an infinite loop when a GPE method is
9827dispatched. Problem fixed by removing the obsolete code that passed GPE
9828block
9829information to the notify handler via the control method parameter
9830pointer.
9831
9832Fixed a problem where the _SST execution status was incorrectly returned
9833to
9834the caller of AcpiEnterSleepStatePrep. This was a regression introduced
9835in
983620080514. _SST is optional and a NOT_FOUND exception should never be
9837returned. BZ 716
9838
9839Fixed a problem where a deleted object could be accessed from within the
9840AML
9841parser. This was a regression introduced in version 20080123 as a fix for
9842the
9843Unload operator. Lin Ming. BZ 10669
9844
9845Cleaned up the debug operand dump mechanism. Eliminated unnecessary
9846operands
9847and eliminated the use of a negative index in a loop. Operands are now
9848displayed in the correct order, not backwards. This also fixes a
9849regression
9850introduced in 20080514 on 64-bit systems where the elimination of
9851ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
9852715
9853
9854Fixed a possible memory leak in EvPciConfigRegionSetup where the error
9855exit
9856path did not delete a locally allocated structure.
9857
9858Updated definitions for the DMAR and SRAT tables to synchronize with the
9859current specifications. Includes disassembler support.
9860
9861Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
9862loop termination value was used. Loop terminated on iteration early,
9863missing
9864one mutex. Linn Crosetto
9865
9866Example Code and Data Size: These are the sizes for the OS-independent
9867acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9868debug version of the code includes the debug output trace mechanism and
9869has a
9870much larger code and data size.
9871
9872  Previous Release:
9873    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
9874    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
9875  Current Release:
9876    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
9877    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
9878
98792) iASL Compiler/Disassembler and Tools:
9880
9881Disassembler: Implemented support for EisaId() within _CID objects. Now
9882disassemble integer _CID objects back to EisaId invocations, including
9883multiple integers within _CID packages. Includes single-step support for
9884debugger also.
9885
9886Disassembler: Added support for DMAR and SRAT table definition changes.
9887
9888----------------------------------------
988914 May 2008. Summary of changes for version 20080514:
9890
98911) ACPI CA Core Subsystem:
9892
9893Fixed a problem where GPEs were enabled too early during the ACPICA
9894initialization. This could lead to "handler not installed" errors on some
9895machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
9896This
9897ensures that all operation regions and devices throughout the namespace
9898have
9899been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
9900
9901Implemented a change to the enter sleep code. Moved execution of the _GTS
9902method to just before setting sleep enable bit. The execution was moved
9903from
9904AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
9905immediately before the SLP_EN bit is set, as per the ACPI specification.
9906Luming Yu, BZ 1653.
9907
9908Implemented a fix to disable unknown GPEs (2nd version). Now always
9909disable
9910the GPE, even if ACPICA thinks that that it is already disabled. It is
9911possible that the AML or some other code has enabled the GPE unbeknownst
9912to
9913the ACPICA code.
9914
9915Fixed a problem with the Field operator where zero-length fields would
9916return
9917an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
9918ASL
9919field declarations in Field(), BankField(), and IndexField(). BZ 10606.
9920
9921Implemented a fix for the Load operator, now load the table at the
9922namespace
9923root. This reverts a change introduced in version 20071019. The table is
9924now
9925loaded at the namespace root even though this goes against the ACPI
9926specification. This provides compatibility with other ACPI
9927implementations.
9928The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
9929Ming.
9930
9931Fixed a problem where ACPICA would not Load() tables with unusual
9932signatures.
9933Now ignore ACPI table signature for Load() operator. Only "SSDT" is
9934acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
9935Therefore, signature validation is worthless. Apparently MS ACPI accepts
9936such
9937signatures, ACPICA must be compatible. BZ 10454.
9938
9939Fixed a possible negative array index in AcpiUtValidateException. Added
9940NULL
9941fields to the exception string arrays to eliminate a -1 subtraction on
9942the
9943SubStatus field.
9944
9945Updated the debug tracking macros to reduce overall code and data size.
9946Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
9947instead of pointers to static strings. Jan Beulich and Bob Moore.
9948
9949Implemented argument count checking in control method invocation via
9950AcpiEvaluateObject. Now emit an error if too few arguments, warning if
9951too
9952many. This applies only to extern programmatic control method execution,
9953not
9954method-to-method calls within the AML. Lin Ming.
9955
9956Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
9957no
9958longer needed, especially with the removal of 16-bit support. It was
9959replaced
9960mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
9961bit
9962on
996332/64-bit platforms is required.
9964
9965Added the C const qualifier for appropriate string constants -- mostly
9966MODULE_NAME and printf format strings. Jan Beulich.
9967
9968Example Code and Data Size: These are the sizes for the OS-independent
9969acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9970debug version of the code includes the debug output trace mechanism and
9971has a
9972much larger code and data size.
9973
9974  Previous Release:
9975    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
9976    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
9977  Current Release:
9978    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
9979    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
9980
99812) iASL Compiler/Disassembler and Tools:
9982
9983Implemented ACPI table revision ID validation in the disassembler. Zero
9984is
9985always invalid. For DSDTs, the ID controls the interpreter integer width.
99861
9987means 32-bit and this is unusual. 2 or greater is 64-bit.
9988
9989----------------------------------------
999021 March 2008. Summary of changes for version 20080321:
9991
99921) ACPI CA Core Subsystem:
9993
9994Implemented an additional change to the GPE support in order to suppress
9995spurious or stray GPEs. The AcpiEvDisableGpe function will now
9996permanently
9997disable incoming GPEs that are neither enabled nor disabled -- meaning
9998that
9999the GPE is unknown to the system. This should prevent future interrupt
10000floods
10001from that GPE. BZ 6217 (Zhang Rui)
10002
10003Fixed a problem where NULL package elements were not returned to the
10004AcpiEvaluateObject interface correctly. The element was simply ignored
10005instead of returning a NULL ACPI_OBJECT package element, potentially
10006causing
10007a buffer overflow and/or confusing the caller who expected a fixed number
10008of
10009elements. BZ 10132 (Lin Ming, Bob Moore)
10010
10011Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
10012Dword,
10013Qword), Field, BankField, and IndexField operators when invoked from
10014inside
10015an executing control method. In this case, these operators created
10016namespace
10017nodes that were incorrectly left marked as permanent nodes instead of
10018temporary nodes. This could cause a problem if there is race condition
10019between an exiting control method and a running namespace walk. (Reported
10020by
10021Linn Crosetto)
10022
10023Fixed a problem where the CreateField and CreateXXXField operators would
10024incorrectly allow duplicate names (the name of the field) with no
10025exception
10026generated.
10027
10028Implemented several changes for Notify handling. Added support for new
10029Notify
10030values (ACPI 2.0+) and improved the Notify debug output. Notify on
10031PowerResource objects is no longer allowed, as per the ACPI
10032specification.
10033(Bob Moore, Zhang Rui)
10034
10035All Reference Objects returned via the AcpiEvaluateObject interface are
10036now
10037marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
10038for
10039NULL objects - either NULL package elements or unresolved named
10040references.
10041
10042Fixed a problem where an extraneous debug message was produced for
10043package
10044objects (when debugging enabled). The message "Package List length larger
10045than NumElements count" is now produced in the correct case, and is now
10046an
10047error message rather than a debug message. Added a debug message for the
10048opposite case, where NumElements is larger than the Package List (the
10049package
10050will be padded out with NULL elements as per the ACPI spec.)
10051
10052Implemented several improvements for the output of the ASL "Debug" object
10053to
10054clarify and keep all data for a given object on one output line.
10055
10056Fixed two size calculation issues with the variable-length Start
10057Dependent
10058resource descriptor.
10059
10060Example Code and Data Size: These are the sizes for the OS-independent
10061acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10062debug version of the code includes the debug output trace mechanism and
10063has
10064a much larger code and data size.
10065
10066  Previous Release:
10067    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
10068    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
10069  Current Release:
10070    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
10071    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
10072
100732) iASL Compiler/Disassembler and Tools:
10074
10075Fixed a problem with the use of the Switch operator where execution of
10076the
10077containing method by multiple concurrent threads could cause an
10078AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
10079actual Switch opcode, it must be simulated with local named temporary
10080variables and if/else pairs. The solution chosen was to mark any method
10081that
10082uses Switch as Serialized, thus preventing multiple thread entries. BZ
10083469.
10084
10085----------------------------------------
1008613 February 2008. Summary of changes for version 20080213:
10087
100881) ACPI CA Core Subsystem:
10089
10090Implemented another MS compatibility design change for GPE/Notify
10091handling.
10092GPEs are now cleared/enabled asynchronously to allow all pending notifies
10093to
10094complete first. It is expected that the OSL will queue the enable request
10095behind all pending notify requests (may require changes to the local host
10096OSL
10097in AcpiOsExecute). Alexey Starikovskiy.
10098
10099Fixed a problem where buffer and package objects passed as arguments to a
10100control method via the external AcpiEvaluateObject interface could cause
10101an
10102AE_AML_INTERNAL exception depending on the order and type of operators
10103executed by the target control method.
10104
10105Fixed a problem where resource descriptor size optimization could cause a
10106problem when a _CRS resource template is passed to a _SRS method. The
10107_SRS
10108resource template must use the same descriptors (with the same size) as
10109returned from _CRS. This change affects the following resource
10110descriptors:
10111IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
101129487)
10113
10114Fixed a problem where a CopyObject to RegionField, BankField, and
10115IndexField
10116objects did not perform an implicit conversion as it should. These types
10117must
10118retain their initial type permanently as per the ACPI specification.
10119However,
10120a CopyObject to all other object types should not perform an implicit
10121conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
10122
10123Fixed a problem with the AcpiGetDevices interface where the mechanism to
10124match device CIDs did not examine the entire list of available CIDs, but
10125instead aborted on the first non-matching CID. Andrew Patterson.
10126
10127Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
10128was
10129inadvertently changed to return a 16-bit value instead of a 32-bit value,
10130truncating the upper dword of a 64-bit value. This macro is only used to
10131display debug output, so no incorrect calculations were made. Also,
10132reimplemented the macro so that a 64-bit shift is not performed by
10133inefficient compilers.
10134
10135Added missing va_end statements that should correspond with each va_start
10136statement.
10137
10138Example Code and Data Size: These are the sizes for the OS-independent
10139acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10140debug version of the code includes the debug output trace mechanism and
10141has
10142a much larger code and data size.
10143
10144  Previous Release:
10145    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
10146    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
10147  Current Release:
10148    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
10149    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
10150
101512) iASL Compiler/Disassembler and Tools:
10152
10153Implemented full disassembler support for the following new ACPI tables:
10154BERT, EINJ, and ERST. Implemented partial disassembler support for the
10155complicated HEST table. These tables support the Windows Hardware Error
10156Architecture (WHEA).
10157
10158----------------------------------------
1015923 January 2008. Summary of changes for version 20080123:
10160
101611) ACPI CA Core Subsystem:
10162
10163Added the 2008 copyright to all module headers and signons. This affects
10164virtually every file in the ACPICA core subsystem, the iASL compiler, and
10165the tools/utilities.
10166
10167Fixed a problem with the SizeOf operator when used with Package and
10168Buffer
10169objects. These objects have deferred execution for some arguments, and
10170the
10171execution is now completed before the SizeOf is executed. This problem
10172caused
10173unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
10174BZ
101759558
10176
10177Implemented an enhancement to the interpreter "slack mode". In the
10178absence
10179of
10180an explicit return or an implicitly returned object from the last
10181executed
10182opcode, a control method will now implicitly return an integer of value 0
10183for
10184Microsoft compatibility. (Lin Ming) BZ 392
10185
10186Fixed a problem with the Load operator where an exception was not
10187returned
10188in
10189the case where the table is already loaded. (Lin Ming) BZ 463
10190
10191Implemented support for the use of DDBHandles as an Indexed Reference, as
10192per
10193the ACPI spec. (Lin Ming) BZ 486
10194
10195Implemented support for UserTerm (Method invocation) for the Unload
10196operator
10197as per the ACPI spec. (Lin Ming) BZ 580
10198
10199Fixed a problem with the LoadTable operator where the OemId and
10200OemTableId
10201input strings could cause unexpected failures if they were shorter than
10202the
10203maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
10204
10205Implemented support for UserTerm (Method invocation) for the Unload
10206operator
10207as per the ACPI spec. (Lin Ming) BZ 580
10208
10209Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
10210HEST,
10211IBFT, UEFI, WDAT. Disassembler support is forthcoming.
10212
10213Example Code and Data Size: These are the sizes for the OS-independent
10214acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10215debug version of the code includes the debug output trace mechanism and
10216has
10217a much larger code and data size.
10218
10219  Previous Release:
10220    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
10221    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
10222  Current Release:
10223    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
10224    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
10225
102262) iASL Compiler/Disassembler and Tools:
10227
10228Implemented support in the disassembler for checksum validation on
10229incoming
10230binary DSDTs and SSDTs. If incorrect, a message is displayed within the
10231table
10232header dump at the start of the disassembly.
10233
10234Implemented additional debugging information in the namespace listing
10235file
10236created during compilation. In addition to the namespace hierarchy, the
10237full
10238pathname to each namespace object is displayed.
10239
10240Fixed a problem with the disassembler where invalid ACPI tables could
10241cause
10242faults or infinite loops.
10243
10244Fixed an unexpected parse error when using the optional "parameter types"
10245list in a control method declaration. (Lin Ming) BZ 397
10246
10247Fixed a problem where two External declarations with the same name did
10248not
10249cause an error (Lin Ming) BZ 509
10250
10251Implemented support for full TermArgs (adding Argx, Localx and method
10252invocation) for the ParameterData parameter to the LoadTable operator.
10253(Lin
10254Ming) BZ 583,587
10255
10256----------------------------------------
1025719 December 2007. Summary of changes for version 20071219:
10258
102591) ACPI CA Core Subsystem:
10260
10261Implemented full support for deferred execution for the TermArg string
10262arguments for DataTableRegion. This enables forward references and full
10263operand resolution for the three string arguments. Similar to
10264OperationRegion
10265deferred argument execution.) Lin Ming. BZ 430
10266
10267Implemented full argument resolution support for the BankValue argument
10268to
10269BankField. Previously, only constants were supported, now any TermArg may
10270be
10271used. Lin Ming BZ 387, 393
10272
10273Fixed a problem with AcpiGetDevices where the search of a branch of the
10274device tree could be terminated prematurely. In accordance with the ACPI
10275specification, the search down the current branch is terminated if a
10276device
10277is both not present and not functional (instead of just not present.)
10278Yakui
10279Zhao.
10280
10281Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
10282if
10283the underlying AML code changed the GPE enable registers. Now, any
10284unknown
10285incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
10286disabled
10287instead of simply ignored. Rui Zhang.
10288
10289Fixed a problem with Index Fields where the Index register was
10290incorrectly
10291limited to a maximum of 32 bits. Now any size may be used.
10292
10293Fixed a couple memory leaks associated with "implicit return" objects
10294when
10295the AML Interpreter slack mode is enabled. Lin Ming BZ 349
10296
10297Example Code and Data Size: These are the sizes for the OS-independent
10298acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10299debug version of the code includes the debug output trace mechanism and
10300has
10301a much larger code and data size.
10302
10303  Previous Release:
10304    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
10305    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
10306  Current Release:
10307    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
10308    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
10309
10310----------------------------------------
1031114 November 2007. Summary of changes for version 20071114:
10312
103131) ACPI CA Core Subsystem:
10314
10315Implemented event counters for each of the Fixed Events, the ACPI SCI
10316(interrupt) itself, and control methods executed. Named
10317AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
10318These
10319should be useful for debugging and statistics.
10320
10321Implemented a new external interface, AcpiGetStatistics, to retrieve the
10322contents of the various event counters. Returns the current values for
10323AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
10324AcpiMethodCount. The interface can be expanded in the future if new
10325counters
10326are added. Device drivers should use this interface rather than access
10327the
10328counters directly.
10329
10330Fixed a problem with the FromBCD and ToBCD operators. With some
10331compilers,
10332the ShortDivide function worked incorrectly, causing problems with the
10333BCD
10334functions with large input values. A truncation from 64-bit to 32-bit
10335inadvertently occurred. Internal BZ 435. Lin Ming
10336
10337Fixed a problem with Index references passed as method arguments.
10338References
10339passed as arguments to control methods were dereferenced immediately
10340(before
10341control was passed to the called method). The references are now
10342correctly
10343passed directly to the called method. BZ 5389. Lin Ming
10344
10345Fixed a problem with CopyObject used in conjunction with the Index
10346operator.
10347The reference was incorrectly dereferenced before the copy. The reference
10348is
10349now correctly copied. BZ 5391. Lin Ming
10350
10351Fixed a problem with Control Method references within Package objects.
10352These
10353references are now correctly generated. This completes the package
10354construction overhaul that began in version 20071019.
10355
10356Example Code and Data Size: These are the sizes for the OS-independent
10357acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10358debug version of the code includes the debug output trace mechanism and
10359has
10360a much larger code and data size.
10361
10362  Previous Release:
10363    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
10364    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
10365  Current Release:
10366    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
10367    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
10368
10369
103702) iASL Compiler/Disassembler and Tools:
10371
10372The AcpiExec utility now installs handlers for all of the predefined
10373Operation Region types. New types supported are: PCI_Config, CMOS, and
10374PCIBARTarget.
10375
10376Fixed a problem with the 64-bit version of AcpiExec where the extended
10377(64-
10378bit) address fields for the DSDT and FACS within the FADT were not being
10379used, causing truncation of the upper 32-bits of these addresses. Lin
10380Ming
10381and Bob Moore
10382
10383----------------------------------------
1038419 October 2007. Summary of changes for version 20071019:
10385
103861) ACPI CA Core Subsystem:
10387
10388Fixed a problem with the Alias operator when the target of the alias is a
10389named ASL operator that opens a new scope -- Scope, Device,
10390PowerResource,
10391Processor, and ThermalZone. In these cases, any children of the original
10392operator could not be accessed via the alias, potentially causing
10393unexpected
10394AE_NOT_FOUND exceptions. (BZ 9067)
10395
10396Fixed a problem with the Package operator where all named references were
10397created as object references and left otherwise unresolved. According to
10398the
10399ACPI specification, a Package can only contain Data Objects or references
10400to
10401control methods. The implication is that named references to Data Objects
10402(Integer, Buffer, String, Package, BufferField, Field) should be resolved
10403immediately upon package creation. This is the approach taken with this
10404change. References to all other named objects (Methods, Devices, Scopes,
10405etc.) are all now properly created as reference objects. (BZ 5328)
10406
10407Reverted a change to Notify handling that was introduced in version
1040820070508. This version changed the Notify handling from asynchronous to
10409fully synchronous (Device driver Notify handling with respect to the
10410Notify
10411ASL operator). It was found that this change caused more problems than it
10412solved and was removed by most users.
10413
10414Fixed a problem with the Increment and Decrement operators where the type
10415of
10416the target object could be unexpectedly and incorrectly changed. (BZ 353)
10417Lin Ming.
10418
10419Fixed a problem with the Load and LoadTable operators where the table
10420location within the namespace was ignored. Instead, the table was always
10421loaded into the root or current scope. Lin Ming.
10422
10423Fixed a problem with the Load operator when loading a table from a buffer
10424object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
10425
10426Fixed a problem with the Debug object where a store of a DdbHandle
10427reference
10428object to the Debug object could cause a fault.
10429
10430Added a table checksum verification for the Load operator, in the case
10431where
10432the load is from a buffer. (BZ 578).
10433
10434Implemented additional parameter validation for the LoadTable operator.
10435The
10436length of the input strings SignatureString, OemIdString, and OemTableId
10437are
10438now checked for maximum lengths. (BZ 582) Lin Ming.
10439
10440Example Code and Data Size: These are the sizes for the OS-independent
10441acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10442debug version of the code includes the debug output trace mechanism and
10443has
10444a much larger code and data size.
10445
10446  Previous Release:
10447    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
10448    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
10449  Current Release:
10450    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
10451    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
10452
10453
104542) iASL Compiler/Disassembler:
10455
10456Fixed a problem where if a single file was specified and the file did not
10457exist, no error message was emitted. (Introduced with wildcard support in
10458version 20070917.)
10459
10460----------------------------------------
1046119 September 2007. Summary of changes for version 20070919:
10462
104631) ACPI CA Core Subsystem:
10464
10465Designed and implemented new external interfaces to install and remove
10466handlers for ACPI table-related events. Current events that are defined
10467are
10468LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
10469they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
10470AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
10471
10472Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
10473(acpi_serialized option on Linux) could cause some systems to hang during
10474initialization. (Bob Moore) BZ 8171
10475
10476Fixed a problem where objects of certain types (Device, ThermalZone,
10477Processor, PowerResource) can be not found if they are declared and
10478referenced from within the same control method (Lin Ming) BZ 341
10479
10480Example Code and Data Size: These are the sizes for the OS-independent
10481acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10482debug version of the code includes the debug output trace mechanism and
10483has
10484a much larger code and data size.
10485
10486  Previous Release:
10487    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
10488    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
10489  Current Release:
10490    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
10491    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
10492
10493
104942) iASL Compiler/Disassembler:
10495
10496Implemented support to allow multiple files to be compiled/disassembled
10497in
10498a
10499single invocation. This includes command line wildcard support for both
10500the
10501Windows and Unix versions of the compiler. This feature simplifies the
10502disassembly and compilation of multiple ACPI tables in a single
10503directory.
10504
10505----------------------------------------
1050608 May 2007. Summary of changes for version 20070508:
10507
105081) ACPI CA Core Subsystem:
10509
10510Implemented a Microsoft compatibility design change for the handling of
10511the
10512Notify AML operator. Previously, notify handlers were dispatched and
10513executed completely asynchronously in a deferred thread. The new design
10514still executes the notify handlers in a different thread, but the
10515original
10516thread that executed the Notify() now waits at a synchronization point
10517for
10518the notify handler to complete. Some machines depend on a synchronous
10519Notify
10520operator in order to operate correctly.
10521
10522Implemented support to allow Package objects to be passed as method
10523arguments to the external AcpiEvaluateObject interface. Previously, this
10524would return the AE_NOT_IMPLEMENTED exception. This feature had not been
10525implemented since there were no reserved control methods that required it
10526until recently.
10527
10528Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
10529that
10530contained invalid non-zero values in reserved fields could cause later
10531failures because these fields have meaning in later revisions of the
10532FADT.
10533For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
10534fields
10535are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
10536
10537Fixed a problem where the Global Lock handle was not properly updated if
10538a
10539thread that acquired the Global Lock via executing AML code then
10540attempted
10541to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
10542Joe
10543Liu.
10544
10545Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
10546could be corrupted if the interrupt being removed was at the head of the
10547list. Reported by Linn Crosetto.
10548
10549Example Code and Data Size: These are the sizes for the OS-independent
10550acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10551debug version of the code includes the debug output trace mechanism and
10552has
10553a much larger code and data size.
10554
10555  Previous Release:
10556    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10557    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
10558  Current Release:
10559    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
10560    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
10561
10562----------------------------------------
1056320 March 2007. Summary of changes for version 20070320:
10564
105651) ACPI CA Core Subsystem:
10566
10567Implemented a change to the order of interpretation and evaluation of AML
10568operand objects within the AML interpreter. The interpreter now evaluates
10569operands in the order that they appear in the AML stream (and the
10570corresponding ASL code), instead of in the reverse order (after the
10571entire
10572operand list has been parsed). The previous behavior caused several
10573subtle
10574incompatibilities with the Microsoft AML interpreter as well as being
10575somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
10576
10577Implemented a change to the ACPI Global Lock support. All interfaces to
10578the
10579global lock now allow the same thread to acquire the lock multiple times.
10580This affects the AcpiAcquireGlobalLock external interface to the global
10581lock
10582as well as the internal use of the global lock to support AML fields -- a
10583control method that is holding the global lock can now simultaneously
10584access
10585AML fields that require global lock protection. Previously, in both
10586cases,
10587this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
10588to
10589AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
10590Controller. There is no change to the behavior of the AML Acquire
10591operator,
10592as this can already be used to acquire a mutex multiple times by the same
10593thread. BZ 8066. With assistance from Alexey Starikovskiy.
10594
10595Fixed a problem where invalid objects could be referenced in the AML
10596Interpreter after error conditions. During operand evaluation, ensure
10597that
10598the internal "Return Object" field is cleared on error and only valid
10599pointers are stored there. Caused occasional access to deleted objects
10600that
10601resulted in "large reference count" warning messages. Valery Podrezov.
10602
10603Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
10604on
10605deeply nested control method invocations. BZ 7873, local BZ 487. Valery
10606Podrezov.
10607
10608Fixed an internal problem with the handling of result objects on the
10609interpreter result stack. BZ 7872. Valery Podrezov.
10610
10611Removed obsolete code that handled the case where AML_NAME_OP is the
10612target
10613of a reference (Reference.Opcode). This code was no longer necessary. BZ
106147874. Valery Podrezov.
10615
10616Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
10617was
10618a
10619remnant from the previously discontinued 16-bit support.
10620
10621Example Code and Data Size: These are the sizes for the OS-independent
10622acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10623debug version of the code includes the debug output trace mechanism and
10624has
10625a much larger code and data size.
10626
10627  Previous Release:
10628    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10629    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10630  Current Release:
10631    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10632    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
10633
10634----------------------------------------
1063526 January 2007. Summary of changes for version 20070126:
10636
106371) ACPI CA Core Subsystem:
10638
10639Added the 2007 copyright to all module headers and signons. This affects
10640virtually every file in the ACPICA core subsystem, the iASL compiler, and
10641the utilities.
10642
10643Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
10644during a table load. A bad pointer was passed in the case where the DSDT
10645is
10646overridden, causing a fault in this case.
10647
10648Example Code and Data Size: These are the sizes for the OS-independent
10649acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10650debug version of the code includes the debug output trace mechanism and
10651has
10652a much larger code and data size.
10653
10654  Previous Release:
10655    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10656    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10657  Current Release:
10658    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10659    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10660
10661----------------------------------------
1066215 December 2006. Summary of changes for version 20061215:
10663
106641) ACPI CA Core Subsystem:
10665
10666Support for 16-bit ACPICA has been completely removed since it is no
10667longer
10668necessary and it clutters the code. All 16-bit macros, types, and
10669conditional compiles have been removed, cleaning up and simplifying the
10670code
10671across the entire subsystem. DOS support is no longer needed since the
10672bootable Linux firmware kit is now available.
10673
10674The handler for the Global Lock is now removed during AcpiTerminate to
10675enable a clean subsystem restart, via the implementation of the
10676AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
10677HP)
10678
10679Implemented enhancements to the multithreading support within the
10680debugger
10681to enable improved multithreading debugging and evaluation of the
10682subsystem.
10683(Valery Podrezov)
10684
10685Debugger: Enhanced the Statistics/Memory command to emit the total
10686(maximum)
10687memory used during the execution, as well as the maximum memory consumed
10688by
10689each of the various object types. (Valery Podrezov)
10690
10691Example Code and Data Size: These are the sizes for the OS-independent
10692acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10693debug version of the code includes the debug output trace mechanism and
10694has
10695a much larger code and data size.
10696
10697  Previous Release:
10698    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
10699    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
10700  Current Release:
10701    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10702    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10703
10704
107052) iASL Compiler/Disassembler and Tools:
10706
10707AcpiExec: Implemented a new option (-m) to display full memory use
10708statistics upon subsystem/program termination. (Valery Podrezov)
10709
10710----------------------------------------
1071109 November 2006. Summary of changes for version 20061109:
10712
107131) ACPI CA Core Subsystem:
10714
10715Optimized the Load ASL operator in the case where the source operand is
10716an
10717operation region. Simply map the operation region memory, instead of
10718performing a bytewise read. (Region must be of type SystemMemory, see
10719below.)
10720
10721Fixed the Load ASL operator for the case where the source operand is a
10722region field. A buffer object is also allowed as the source operand. BZ
10723480
10724
10725Fixed a problem where the Load ASL operator allowed the source operand to
10726be
10727an operation region of any type. It is now restricted to regions of type
10728SystemMemory, as per the ACPI specification. BZ 481
10729
10730Additional cleanup and optimizations for the new Table Manager code.
10731
10732AcpiEnable will now fail if all of the required ACPI tables are not
10733loaded
10734(FADT, FACS, DSDT). BZ 477
10735
10736Added #pragma pack(8/4) to acobject.h to ensure that the structures in
10737this
10738header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
10739manually optimized to be aligned and will not work if it is byte-packed.
10740
10741Example Code and Data Size: These are the sizes for the OS-independent
10742acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10743debug version of the code includes the debug output trace mechanism and
10744has
10745a much larger code and data size.
10746
10747  Previous Release:
10748    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
10749    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
10750  Current Release:
10751    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
10752    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
10753
10754
107552) iASL Compiler/Disassembler and Tools:
10756
10757Fixed a problem where the presence of the _OSI predefined control method
10758within complex expressions could cause an internal compiler error.
10759
10760AcpiExec: Implemented full region support for multiple address spaces.
10761SpaceId is now part of the REGION object. BZ 429
10762
10763----------------------------------------
1076411 October 2006. Summary of changes for version 20061011:
10765
107661) ACPI CA Core Subsystem:
10767
10768Completed an AML interpreter performance enhancement for control method
10769execution. Previously a 2-pass parse/execution, control methods are now
10770completely parsed and executed in a single pass. This improves overall
10771interpreter performance by ~25%, reduces code size, and reduces CPU stack
10772use. (Valery Podrezov + interpreter changes in version 20051202 that
10773eliminated namespace loading during the pass one parse.)
10774
10775Implemented _CID support for PCI Root Bridge detection. If the _HID does
10776not
10777match the predefined PCI Root Bridge IDs, the _CID list (if present) is
10778now
10779obtained and also checked for an ID match.
10780
10781Implemented additional support for the PCI _ADR execution: upsearch until
10782a
10783device scope is found before executing _ADR. This allows PCI_Config
10784operation regions to be declared locally within control methods
10785underneath
10786PCI device objects.
10787
10788Fixed a problem with a possible race condition between threads executing
10789AcpiWalkNamespace and the AML interpreter. This condition was removed by
10790modifying AcpiWalkNamespace to (by default) ignore all temporary
10791namespace
10792entries created during any concurrent control method execution. An
10793additional namespace race condition is known to exist between
10794AcpiWalkNamespace and the Load/Unload ASL operators and is still under
10795investigation.
10796
10797Restructured the AML ParseLoop function, breaking it into several
10798subfunctions in order to reduce CPU stack use and improve
10799maintainability.
10800(Mikhail Kouzmich)
10801
10802AcpiGetHandle: Fix for parameter validation to detect invalid
10803combinations
10804of prefix handle and pathname. BZ 478
10805
10806Example Code and Data Size: These are the sizes for the OS-independent
10807acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10808debug version of the code includes the debug output trace mechanism and
10809has
10810a much larger code and data size.
10811
10812  Previous Release:
10813    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10814    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
10815  Current Release:
10816    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
10817    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
10818
108192) iASL Compiler/Disassembler and Tools:
10820
10821Ported the -g option (get local ACPI tables) to the new ACPICA Table
10822Manager
10823to restore original behavior.
10824
10825----------------------------------------
1082627 September 2006. Summary of changes for version 20060927:
10827
108281) ACPI CA Core Subsystem:
10829
10830Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
10831These functions now use a spinlock for mutual exclusion and the interrupt
10832level indication flag is not needed.
10833
10834Fixed a problem with the Global Lock where the lock could appear to be
10835obtained before it is actually obtained. The global lock semaphore was
10836inadvertently created with one unit instead of zero units. (BZ 464)
10837Fiodor
10838Suietov.
10839
10840Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
10841during
10842a read from a buffer or region field. (BZ 458) Fiodor Suietov.
10843
10844Example Code and Data Size: These are the sizes for the OS-independent
10845acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10846debug version of the code includes the debug output trace mechanism and
10847has
10848a much larger code and data size.
10849
10850  Previous Release:
10851    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10852    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
10853  Current Release:
10854    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10855    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
10856
10857
108582) iASL Compiler/Disassembler and Tools:
10859
10860Fixed a compilation problem with the pre-defined Resource Descriptor
10861field
10862names where an "object does not exist" error could be incorrectly
10863generated
10864if the parent ResourceTemplate pathname places the template within a
10865different namespace scope than the current scope. (BZ 7212)
10866
10867Fixed a problem where the compiler could hang after syntax errors
10868detected
10869in an ElseIf construct. (BZ 453)
10870
10871Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
10872operator. An incorrect output filename was produced when this parameter
10873was
10874a null string (""). Now, the original input filename is used as the AML
10875output filename, with an ".aml" extension.
10876
10877Implemented a generic batch command mode for the AcpiExec utility
10878(execute
10879any AML debugger command) (Valery Podrezov).
10880
10881----------------------------------------
1088212 September 2006. Summary of changes for version 20060912:
10883
108841) ACPI CA Core Subsystem:
10885
10886Enhanced the implementation of the "serialized mode" of the interpreter
10887(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
10888specified, instead of creating a serialization semaphore per control
10889method,
10890the interpreter lock is simply no longer released before a blocking
10891operation during control method execution. This effectively makes the AML
10892Interpreter single-threaded. The overhead of a semaphore per-method is
10893eliminated.
10894
10895Fixed a regression where an error was no longer emitted if a control
10896method
10897attempts to create 2 objects of the same name. This once again returns
10898AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
10899that
10900will dynamically serialize the control method to possible prevent future
10901errors. (BZ 440)
10902
10903Integrated a fix for a problem with PCI Express HID detection in the PCI
10904Config Space setup procedure. (BZ 7145)
10905
10906Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
10907AcpiHwInitialize function - the FADT registers are now validated when the
10908table is loaded.
10909
10910Added two new warnings during FADT verification - 1) if the FADT is
10911larger
10912than the largest known FADT version, and 2) if there is a mismatch
10913between
10914a
1091532-bit block address and the 64-bit X counterpart (when both are non-
10916zero.)
10917
10918Example Code and Data Size: These are the sizes for the OS-independent
10919acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10920debug version of the code includes the debug output trace mechanism and
10921has
10922a much larger code and data size.
10923
10924  Previous Release:
10925    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
10926    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
10927  Current Release:
10928    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10929    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
10930
10931
109322) iASL Compiler/Disassembler and Tools:
10933
10934Fixed a problem with the implementation of the Switch() operator where
10935the
10936temporary variable was declared too close to the actual Switch, instead
10937of
10938at method level. This could cause a problem if the Switch() operator is
10939within a while loop, causing an error on the second iteration. (BZ 460)
10940
10941Disassembler - fix for error emitted for unknown type for target of scope
10942operator. Now, ignore it and continue.
10943
10944Disassembly of an FADT now verifies the input FADT and reports any errors
10945found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
10946
10947Disassembly of raw data buffers with byte initialization data now
10948prefixes
10949each output line with the current buffer offset.
10950
10951Disassembly of ASF! table now includes all variable-length data fields at
10952the end of some of the subtables.
10953
10954The disassembler now emits a comment if a buffer appears to be a
10955ResourceTemplate, but cannot be disassembled as such because the EndTag
10956does
10957not appear at the very end of the buffer.
10958
10959AcpiExec - Added the "-t" command line option to enable the serialized
10960mode
10961of the AML interpreter.
10962
10963----------------------------------------
1096431 August 2006. Summary of changes for version 20060831:
10965
109661) ACPI CA Core Subsystem:
10967
10968Miscellaneous fixes for the Table Manager:
10969- Correctly initialize internal common FADT for all 64-bit "X" fields
10970- Fixed a couple table mapping issues during table load
10971- Fixed a couple alignment issues for IA64
10972- Initialize input array to zero in AcpiInitializeTables
10973- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
10974AcpiGetTableByIndex
10975
10976Change for GPE support: when a "wake" GPE is received, all wake GPEs are
10977now
10978immediately disabled to prevent the waking GPE from firing again and to
10979prevent other wake GPEs from interrupting the wake process.
10980
10981Added the AcpiGpeCount global that tracks the number of processed GPEs,
10982to
10983be used for debugging systems with a large number of ACPI interrupts.
10984
10985Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
10986both the ACPICA headers and the disassembler.
10987
10988Example Code and Data Size: These are the sizes for the OS-independent
10989acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10990debug version of the code includes the debug output trace mechanism and
10991has
10992a much larger code and data size.
10993
10994  Previous Release:
10995    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
10996    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
10997  Current Release:
10998    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
10999    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
11000
11001
110022) iASL Compiler/Disassembler and Tools:
11003
11004Disassembler support for the DMAR ACPI table.
11005
11006----------------------------------------
1100723 August 2006. Summary of changes for version 20060823:
11008
110091) ACPI CA Core Subsystem:
11010
11011The Table Manager component has been completely redesigned and
11012reimplemented. The new design is much simpler, and reduces the overall
11013code
11014and data size of the kernel-resident ACPICA by approximately 5%. Also, it
11015is
11016now possible to obtain the ACPI tables very early during kernel
11017initialization, even before dynamic memory management is initialized.
11018(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
11019
11020Obsolete ACPICA interfaces:
11021
11022- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
11023init
11024time).
11025- AcpiLoadTable: Not needed.
11026- AcpiUnloadTable: Not needed.
11027
11028New ACPICA interfaces:
11029
11030- AcpiInitializeTables: Must be called before the table manager can be
11031used.
11032- AcpiReallocateRootTable: Used to transfer the root table to dynamically
11033allocated memory after it becomes available.
11034- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
11035tables
11036in the RSDT/XSDT.
11037
11038Other ACPICA changes:
11039
11040- AcpiGetTableHeader returns the actual mapped table header, not a copy.
11041Use
11042AcpiOsUnmapMemory to free this mapping.
11043- AcpiGetTable returns the actual mapped table. The mapping is managed
11044internally and must not be deleted by the caller. Use of this interface
11045causes no additional dynamic memory allocation.
11046- AcpiFindRootPointer: Support for physical addressing has been
11047eliminated,
11048it appeared to be unused.
11049- The interface to AcpiOsMapMemory has changed to be consistent with the
11050other allocation interfaces.
11051- The interface to AcpiOsGetRootPointer has changed to eliminate
11052unnecessary
11053parameters.
11054- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
1105564-
11056bit platforms. Was previously 64 bits on all platforms.
11057- The interface to the ACPI Global Lock acquire/release macros have
11058changed
11059slightly since ACPICA no longer keeps a local copy of the FACS with a
11060constructed pointer to the actual global lock.
11061
11062Porting to the new table manager:
11063
11064- AcpiInitializeTables: Must be called once, and can be called anytime
11065during the OS initialization process. It allows the host to specify an
11066area
11067of memory to be used to store the internal version of the RSDT/XSDT (root
11068table). This allows the host to access ACPI tables before memory
11069management
11070is initialized and running.
11071- AcpiReallocateRootTable: Can be called after memory management is
11072running
11073to copy the root table to a dynamically allocated array, freeing up the
11074scratch memory specified in the call to AcpiInitializeTables.
11075- AcpiSubsystemInitialize: This existing interface is independent of the
11076Table Manager, and does not have to be called before the Table Manager
11077can
11078be used, it only must be called before the rest of ACPICA can be used.
11079- ACPI Tables: Some changes have been made to the names and structure of
11080the
11081actbl.h and actbl1.h header files and may require changes to existing
11082code.
11083For example, bitfields have been completely removed because of their lack
11084of
11085portability across C compilers.
11086- Update interfaces to the Global Lock acquire/release macros if local
11087versions are used. (see acwin.h)
11088
11089Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
11090
11091New files: tbfind.c
11092
11093Example Code and Data Size: These are the sizes for the OS-independent
11094acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11095debug version of the code includes the debug output trace mechanism and
11096has
11097a much larger code and data size.
11098
11099  Previous Release:
11100    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11101    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11102  Current Release:
11103    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
11104    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
11105
11106
111072) iASL Compiler/Disassembler and Tools:
11108
11109No changes for this release.
11110
11111----------------------------------------
1111221 July 2006. Summary of changes for version 20060721:
11113
111141) ACPI CA Core Subsystem:
11115
11116The full source code for the ASL test suite used to validate the iASL
11117compiler and the ACPICA core subsystem is being released with the ACPICA
11118source for the first time. The source is contained in a separate package
11119and
11120consists of over 1100 files that exercise all ASL/AML operators. The
11121package
11122should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
11123Fiodor
11124Suietov)
11125
11126Completed a new design and implementation for support of the ACPI Global
11127Lock. On the OS side, the global lock is now treated as a standard AML
11128mutex. Previously, multiple OS threads could "acquire" the global lock
11129simultaneously. However, this could cause the BIOS to be starved out of
11130the
11131lock - especially in cases such as the Embedded Controller driver where
11132there is a tight coupling between the OS and the BIOS.
11133
11134Implemented an optimization for the ACPI Global Lock interrupt mechanism.
11135The Global Lock interrupt handler no longer queues the execution of a
11136separate thread to signal the global lock semaphore. Instead, the
11137semaphore
11138is signaled directly from the interrupt handler.
11139
11140Implemented support within the AML interpreter for package objects that
11141contain a larger AML length (package list length) than the package
11142element
11143count. In this case, the length of the package is truncated to match the
11144package element count. Some BIOS code apparently modifies the package
11145length
11146on the fly, and this change supports this behavior. Provides
11147compatibility
11148with the MS AML interpreter. (With assistance from Fiodor Suietov)
11149
11150Implemented a temporary fix for the BankValue parameter of a Bank Field
11151to
11152support all constant values, now including the Zero and One opcodes.
11153Evaluation of this parameter must eventually be converted to a full
11154TermArg
11155evaluation. A not-implemented error is now returned (temporarily) for
11156non-
11157constant values for this parameter.
11158
11159Fixed problem reports (Fiodor Suietov) integrated:
11160- Fix for premature object deletion after CopyObject on Operation Region
11161(BZ
11162350)
11163
11164Example Code and Data Size: These are the sizes for the OS-independent
11165acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11166debug version of the code includes the debug output trace mechanism and
11167has
11168a much larger code and data size.
11169
11170  Previous Release:
11171    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
11172    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
11173  Current Release:
11174    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11175    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11176
11177
111782) iASL Compiler/Disassembler and Tools:
11179
11180No changes for this release.
11181
11182----------------------------------------
1118307 July 2006. Summary of changes for version 20060707:
11184
111851) ACPI CA Core Subsystem:
11186
11187Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
11188that do not allow the initialization of address pointers within packed
11189structures - even though the hardware itself may support misaligned
11190transfers. Some of the debug data structures are packed by default to
11191minimize size.
11192
11193Added an error message for the case where AcpiOsGetThreadId() returns
11194zero.
11195A non-zero value is required by the core ACPICA code to ensure the proper
11196operation of AML mutexes and recursive control methods.
11197
11198The DSDT is now the only ACPI table that determines whether the AML
11199interpreter is in 32-bit or 64-bit mode. Not really a functional change,
11200but
11201the hooks for per-table 32/64 switching have been removed from the code.
11202A
11203clarification to the ACPI specification is forthcoming in ACPI 3.0B.
11204
11205Fixed a possible leak of an OwnerID in the error path of
11206AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
11207deletion to a single place in AcpiTbUninstallTable to correct possible
11208leaks
11209when using the AcpiTbDeleteTablesByType interface (with assistance from
11210Lance Ortiz.)
11211
11212Fixed a problem with Serialized control methods where the semaphore
11213associated with the method could be over-signaled after multiple method
11214invocations.
11215
11216Fixed two issues with the locking of the internal namespace data
11217structure.
11218Both the Unload() operator and AcpiUnloadTable interface now lock the
11219namespace during the namespace deletion associated with the table unload
11220(with assistance from Linn Crosetto.)
11221
11222Fixed problem reports (Valery Podrezov) integrated:
11223- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
11224
11225Fixed problem reports (Fiodor Suietov) integrated:
11226- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
11227- On Address Space handler deletion, needless deactivation call (BZ 374)
11228- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
11229375)
11230- Possible memory leak, Notify sub-objects of Processor, Power,
11231ThermalZone
11232(BZ 376)
11233- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
11234- Minimum Length of RSDT should be validated (BZ 379)
11235- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
11236Handler (BZ (380)
11237- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
11238loaded
11239(BZ 381)
11240
11241Example Code and Data Size: These are the sizes for the OS-independent
11242acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11243debug version of the code includes the debug output trace mechanism and
11244has
11245a much larger code and data size.
11246
11247  Previous Release:
11248    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
11249    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
11250  Current Release:
11251    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11252    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11253
11254
112552) iASL Compiler/Disassembler and Tools:
11256
11257Fixed problem reports:
11258Compiler segfault when ASL contains a long (>1024) String declaration (BZ
11259436)
11260
11261----------------------------------------
1126223 June 2006. Summary of changes for version 20060623:
11263
112641) ACPI CA Core Subsystem:
11265
11266Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
11267allows the type to be customized to the host OS for improved efficiency
11268(since a spinlock is usually a very small object.)
11269
11270Implemented support for "ignored" bits in the ACPI registers. According
11271to
11272the ACPI specification, these bits should be preserved when writing the
11273registers via a read/modify/write cycle. There are 3 bits preserved in
11274this
11275manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
11276
11277Implemented the initial deployment of new OSL mutex interfaces. Since
11278some
11279host operating systems have separate mutex and semaphore objects, this
11280feature was requested. The base code now uses mutexes (and the new mutex
11281interfaces) wherever a binary semaphore was used previously. However, for
11282the current release, the mutex interfaces are defined as macros to map
11283them
11284to the existing semaphore interfaces. Therefore, no OSL changes are
11285required
11286at this time. (See acpiosxf.h)
11287
11288Fixed several problems with the support for the control method SyncLevel
11289parameter. The SyncLevel now works according to the ACPI specification
11290and
11291in concert with the Mutex SyncLevel parameter, since the current
11292SyncLevel
11293is a property of the executing thread. Mutual exclusion for control
11294methods
11295is now implemented with a mutex instead of a semaphore.
11296
11297Fixed three instances of the use of the C shift operator in the bitfield
11298support code (exfldio.c) to avoid the use of a shift value larger than
11299the
11300target data width. The behavior of C compilers is undefined in this case
11301and
11302can cause unpredictable results, and therefore the case must be detected
11303and
11304avoided. (Fiodor Suietov)
11305
11306Added an info message whenever an SSDT or OEM table is loaded dynamically
11307via the Load() or LoadTable() ASL operators. This should improve
11308debugging
11309capability since it will show exactly what tables have been loaded
11310(beyond
11311the tables present in the RSDT/XSDT.)
11312
11313Example Code and Data Size: These are the sizes for the OS-independent
11314acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11315debug version of the code includes the debug output trace mechanism and
11316has
11317a much larger code and data size.
11318
11319  Previous Release:
11320    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
11321    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
11322  Current Release:
11323    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
11324    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
11325
11326
113272) iASL Compiler/Disassembler and Tools:
11328
11329No changes for this release.
11330
11331----------------------------------------
1133208 June 2006. Summary of changes for version 20060608:
11333
113341) ACPI CA Core Subsystem:
11335
11336Converted the locking mutex used for the ACPI hardware to a spinlock.
11337This
11338change should eliminate all problems caused by attempting to acquire a
11339semaphore at interrupt level, and it means that all ACPICA external
11340interfaces that directly access the ACPI hardware can be safely called
11341from
11342interrupt level. OSL code that implements the semaphore interfaces should
11343be
11344able to eliminate any workarounds for being called at interrupt level.
11345
11346Fixed a regression introduced in 20060526 where the ACPI device
11347initialization could be prematurely aborted with an AE_NOT_FOUND if a
11348device
11349did not have an optional _INI method.
11350
11351Fixed an IndexField issue where a write to the Data Register should be
11352limited in size to the AccessSize (width) of the IndexField itself. (BZ
11353433,
11354Fiodor Suietov)
11355
11356Fixed problem reports (Valery Podrezov) integrated:
11357- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
11358
11359Fixed problem reports (Fiodor Suietov) integrated:
11360- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
11361
11362Removed four global mutexes that were obsolete and were no longer being
11363used.
11364
11365Example Code and Data Size: These are the sizes for the OS-independent
11366acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11367debug version of the code includes the debug output trace mechanism and
11368has
11369a much larger code and data size.
11370
11371  Previous Release:
11372    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
11373    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
11374  Current Release:
11375    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
11376    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
11377
11378
113792) iASL Compiler/Disassembler and Tools:
11380
11381Fixed a fault when using -g option (get tables from registry) on Windows
11382machines.
11383
11384Fixed problem reports integrated:
11385- Generate error if CreateField NumBits parameter is zero. (BZ 405)
11386- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
11387Suietov)
11388- Global table revision override (-r) is ignored (BZ 413)
11389
11390----------------------------------------
1139126 May 2006. Summary of changes for version 20060526:
11392
113931) ACPI CA Core Subsystem:
11394
11395Restructured, flattened, and simplified the internal interfaces for
11396namespace object evaluation - resulting in smaller code, less CPU stack
11397use,
11398and fewer interfaces. (With assistance from Mikhail Kouzmich)
11399
11400Fixed a problem with the CopyObject operator where the first parameter
11401was
11402not typed correctly for the parser, interpreter, compiler, and
11403disassembler.
11404Caused various errors and unexpected behavior.
11405
11406Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
11407produced incorrect results with some C compilers. Since the behavior of C
11408compilers when the shift value is larger than the datatype width is
11409apparently not well defined, the interpreter now detects this condition
11410and
11411simply returns zero as expected in all such cases. (BZ 395)
11412
11413Fixed problem reports (Valery Podrezov) integrated:
11414- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
11415- Allow interpreter to handle nested method declarations (BZ 5361)
11416
11417Fixed problem reports (Fiodor Suietov) integrated:
11418- AcpiTerminate doesn't free debug memory allocation list objects (BZ
11419355)
11420- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
11421356)
11422- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
11423- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
11424- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
11425- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
11426- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
11427- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
11428- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
11429365)
11430- Status of the Global Initialization Handler call not used (BZ 366)
11431- Incorrect object parameter to Global Initialization Handler (BZ 367)
11432
11433Example Code and Data Size: These are the sizes for the OS-independent
11434acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11435debug version of the code includes the debug output trace mechanism and
11436has
11437a much larger code and data size.
11438
11439  Previous Release:
11440    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
11441    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
11442  Current Release:
11443    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
11444    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
11445
11446
114472) iASL Compiler/Disassembler and Tools:
11448
11449Modified the parser to allow the names IO, DMA, and IRQ to be used as
11450namespace identifiers with no collision with existing resource descriptor
11451macro names. This provides compatibility with other ASL compilers and is
11452most useful for disassembly/recompilation of existing tables without
11453parse
11454errors. (With assistance from Thomas Renninger)
11455
11456Disassembler: fixed an incorrect disassembly problem with the
11457DataTableRegion and CopyObject operators. Fixed a possible fault during
11458disassembly of some Alias operators.
11459
11460----------------------------------------
1146112 May 2006. Summary of changes for version 20060512:
11462
114631) ACPI CA Core Subsystem:
11464
11465Replaced the AcpiOsQueueForExecution interface with a new interface named
11466AcpiOsExecute. The major difference is that the new interface does not
11467have
11468a Priority parameter, this appeared to be useless and has been replaced
11469by
11470a
11471Type parameter. The Type tells the host what type of execution is being
11472requested, such as global lock handler, notify handler, GPE handler, etc.
11473This allows the host to queue and execute the request as appropriate for
11474the
11475request type, possibly using different work queues and different
11476priorities
11477for the various request types. This enables fixes for multithreading
11478deadlock problems such as BZ #5534, and will require changes to all
11479existing
11480OS interface layers. (Alexey Starikovskiy and Bob Moore)
11481
11482Fixed a possible memory leak associated with the support for the so-
11483called
11484"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
11485Suietov)
11486
11487Fixed a problem with the Load() operator where a table load from an
11488operation region could overwrite an internal table buffer by up to 7
11489bytes
11490and cause alignment faults on IPF systems. (With assistance from Luming
11491Yu)
11492
11493Example Code and Data Size: These are the sizes for the OS-independent
11494acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11495debug version of the code includes the debug output trace mechanism and
11496has
11497a much larger code and data size.
11498
11499  Previous Release:
11500    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
11501    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
11502  Current Release:
11503    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
11504    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
11505
11506
11507
115082) iASL Compiler/Disassembler and Tools:
11509
11510Disassembler: Implemented support to cross reference the internal
11511namespace
11512and automatically generate ASL External() statements for symbols not
11513defined
11514within the current table being disassembled. This will simplify the
11515disassembly and recompilation of interdependent tables such as SSDTs
11516since
11517these statements will no longer have to be added manually.
11518
11519Disassembler: Implemented experimental support to automatically detect
11520invocations of external control methods and generate appropriate
11521External()
11522statements. This is problematic because the AML cannot be correctly
11523parsed
11524until the number of arguments for each control method is known.
11525Currently,
11526standalone method invocations and invocations as the source operand of a
11527Store() statement are supported.
11528
11529Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
11530LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
11531LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
11532more readable and likely closer to the original ASL source.
11533
11534----------------------------------------
1153521 April 2006. Summary of changes for version 20060421:
11536
115371) ACPI CA Core Subsystem:
11538
11539Removed a device initialization optimization introduced in 20051216 where
11540the _STA method was not run unless an _INI was also present for the same
11541device. This optimization could cause problems because it could allow
11542_INI
11543methods to be run within a not-present device subtree. (If a not-present
11544device had no _INI, _STA would not be run, the not-present status would
11545not
11546be discovered, and the children of the device would be incorrectly
11547traversed.)
11548
11549Implemented a new _STA optimization where namespace subtrees that do not
11550contain _INI are identified and ignored during device initialization.
11551Selectively running _STA can significantly improve boot time on large
11552machines (with assistance from Len Brown.)
11553
11554Implemented support for the device initialization case where the returned
11555_STA flags indicate a device not-present but functioning. In this case,
11556_INI
11557is not run, but the device children are examined for presence, as per the
11558ACPI specification.
11559
11560Implemented an additional change to the IndexField support in order to
11561conform to MS behavior. The value written to the Index Register is not
11562simply a byte offset, it is a byte offset in units of the access width of
11563the parent Index Field. (Fiodor Suietov)
11564
11565Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
11566interface is called during the creation of all AML operation regions, and
11567allows the host OS to exert control over what addresses it will allow the
11568AML code to access. Operation Regions whose addresses are disallowed will
11569cause a runtime exception when they are actually accessed (will not
11570affect
11571or abort table loading.) See oswinxf or osunixxf for an example
11572implementation.
11573
11574Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
11575interface allows the host OS to match the various "optional"
11576interface/behavior strings for the _OSI predefined control method as
11577appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
11578for an example implementation.
11579
11580Restructured and corrected various problems in the exception handling
11581code
11582paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
11583(with assistance from Takayoshi Kochi.)
11584
11585Modified the Linux source converter to ignore quoted string literals
11586while
11587converting identifiers from mixed to lower case. This will correct
11588problems
11589with the disassembler and other areas where such strings must not be
11590modified.
11591
11592The ACPI_FUNCTION_* macros no longer require quotes around the function
11593name. This allows the Linux source converter to convert the names, now
11594that
11595the converter ignores quoted strings.
11596
11597Example Code and Data Size: These are the sizes for the OS-independent
11598acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11599debug version of the code includes the debug output trace mechanism and
11600has
11601a much larger code and data size.
11602
11603  Previous Release:
11604
11605    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
11606    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
11607  Current Release:
11608    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
11609    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
11610
11611
116122) iASL Compiler/Disassembler and Tools:
11613
11614Implemented 3 new warnings for iASL, and implemented multiple warning
11615levels
11616(w2 flag).
11617
116181) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
11619not
11620WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
11621check for the possible timeout, a warning is issued.
11622
116232) Useless operators: If an ASL operator does not specify an optional
11624target
11625operand and it also does not use the function return value from the
11626operator, a warning is issued since the operator effectively does
11627nothing.
11628
116293) Unreferenced objects: If a namespace object is created, but never
11630referenced, a warning is issued. This is a warning level 2 since there
11631are
11632cases where this is ok, such as when a secondary table is loaded that
11633uses
11634the unreferenced objects. Even so, care is taken to only flag objects
11635that
11636don't look like they will ever be used. For example, the reserved methods
11637(starting with an underscore) are usually not referenced because it is
11638expected that the OS will invoke them.
11639
11640----------------------------------------
1164131 March 2006. Summary of changes for version 20060331:
11642
116431) ACPI CA Core Subsystem:
11644
11645Implemented header file support for the following additional ACPI tables:
11646ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
11647support,
11648all current and known ACPI tables are now defined in the ACPICA headers
11649and
11650are available for use by device drivers and other software.
11651
11652Implemented support to allow tables that contain ACPI names with invalid
11653characters to be loaded. Previously, this would cause the table load to
11654fail, but since there are several known cases of such tables on existing
11655machines, this change was made to enable ACPI support for them. Also,
11656this
11657matches the behavior of the Microsoft ACPI implementation.
11658
11659Fixed a couple regressions introduced during the memory optimization in
11660the
1166120060317 release. The namespace node definition required additional
11662reorganization and an internal datatype that had been changed to 8-bit
11663was
11664restored to 32-bit. (Valery Podrezov)
11665
11666Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
11667could be passed through to AcpiOsReleaseObject which is unexpected. Such
11668null pointers are now trapped and ignored, matching the behavior of the
11669previous implementation before the deployment of AcpiOsReleaseObject.
11670(Valery Podrezov, Fiodor Suietov)
11671
11672Fixed a memory mapping leak during the deletion of a SystemMemory
11673operation
11674region where a cached memory mapping was not deleted. This became a
11675noticeable problem for operation regions that are defined within
11676frequently
11677used control methods. (Dana Meyers)
11678
11679Reorganized the ACPI table header files into two main files: one for the
11680ACPI tables consumed by the ACPICA core, and another for the
11681miscellaneous
11682ACPI tables that are consumed by the drivers and other software. The
11683various
11684FADT definitions were merged into one common section and three different
11685tables (ACPI 1.0, 1.0+, and 2.0)
11686
11687Example Code and Data Size: These are the sizes for the OS-independent
11688acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11689debug version of the code includes the debug output trace mechanism and
11690has
11691a much larger code and data size.
11692
11693  Previous Release:
11694    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
11695    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
11696  Current Release:
11697    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
11698    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
11699
11700
117012) iASL Compiler/Disassembler and Tools:
11702
11703Disassembler: Implemented support to decode and format all non-AML ACPI
11704tables (tables other than DSDTs and SSDTs.) This includes the new tables
11705added to the ACPICA headers, therefore all current and known ACPI tables
11706are
11707supported.
11708
11709Disassembler: The change to allow ACPI names with invalid characters also
11710enables the disassembly of such tables. Invalid characters within names
11711are
11712changed to '*' to make the name printable; the iASL compiler will still
11713generate an error for such names, however, since this is an invalid ACPI
11714character.
11715
11716Implemented an option for AcpiXtract (-a) to extract all tables found in
11717the
11718input file. The default invocation extracts only the DSDTs and SSDTs.
11719
11720Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
11721makefile for the AcpiXtract utility.
11722
11723----------------------------------------
1172417 March 2006. Summary of changes for version 20060317:
11725
117261) ACPI CA Core Subsystem:
11727
11728Implemented the use of a cache object for all internal namespace nodes.
11729Since there are about 1000 static nodes in a typical system, this will
11730decrease memory use for cache implementations that minimize per-
11731allocation
11732overhead (such as a slab allocator.)
11733
11734Removed the reference count mechanism for internal namespace nodes, since
11735it
11736was deemed unnecessary. This reduces the size of each namespace node by
11737about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
11738case,
11739and 32 bytes for the 64-bit case.
11740
11741Optimized several internal data structures to reduce object size on 64-
11742bit
11743platforms by packing data within the 64-bit alignment. This includes the
11744frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
11745instances corresponding to the namespace objects.
11746
11747Added two new strings for the predefined _OSI method: "Windows 2001.1
11748SP1"
11749and "Windows 2006".
11750
11751Split the allocation tracking mechanism out to a separate file, from
11752utalloc.c to uttrack.c. This mechanism appears to be only useful for
11753application-level code. Kernels may wish to not include uttrack.c in
11754distributions.
11755
11756Removed all remnants of the obsolete ACPI_REPORT_* macros and the
11757associated
11758code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
11759macros.)
11760
11761Code and Data Size: These are the sizes for the acpica.lib produced by
11762the
11763Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11764ACPI
11765driver or OSPM code. The debug version of the code includes the debug
11766output
11767trace mechanism and has a much larger code and data size. Note that these
11768values will vary depending on the efficiency of the compiler and the
11769compiler options used during generation.
11770
11771  Previous Release:
11772    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11773    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
11774  Current Release:
11775    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
11776    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
11777
11778
117792) iASL Compiler/Disassembler and Tools:
11780
11781Implemented an ANSI C version of the acpixtract utility. This version
11782will
11783automatically extract the DSDT and all SSDTs from the input acpidump text
11784file and dump the binary output to separate files. It can also display a
11785summary of the input file including the headers for each table found and
11786will extract any single ACPI table, with any signature. (See
11787source/tools/acpixtract)
11788
11789----------------------------------------
1179010 March 2006. Summary of changes for version 20060310:
11791
117921) ACPI CA Core Subsystem:
11793
11794Tagged all external interfaces to the subsystem with the new
11795ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
11796assist
11797kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
11798macro. The default definition is NULL.
11799
11800Added the ACPI_THREAD_ID type for the return value from
11801AcpiOsGetThreadId.
11802This allows the host to define this as necessary to simplify kernel
11803integration. The default definition is ACPI_NATIVE_UINT.
11804
11805Fixed two interpreter problems related to error processing, the deletion
11806of
11807objects, and placing invalid pointers onto the internal operator result
11808stack. BZ 6028, 6151 (Valery Podrezov)
11809
11810Increased the reference count threshold where a warning is emitted for
11811large
11812reference counts in order to eliminate unnecessary warnings on systems
11813with
11814large namespaces (especially 64-bit.) Increased the value from 0x400 to
118150x800.
11816
11817Due to universal disagreement as to the meaning of the 'c' in the
11818calloc()
11819function, the ACPI_MEM_CALLOCATE macro has been renamed to
11820ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
11821ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
11822ACPI_FREE.
11823
11824Code and Data Size: These are the sizes for the acpica.lib produced by
11825the
11826Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11827ACPI
11828driver or OSPM code. The debug version of the code includes the debug
11829output
11830trace mechanism and has a much larger code and data size. Note that these
11831values will vary depending on the efficiency of the compiler and the
11832compiler options used during generation.
11833
11834  Previous Release:
11835    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
11836    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
11837  Current Release:
11838    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11839    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
11840
11841
118422) iASL Compiler/Disassembler:
11843
11844Disassembler: implemented support for symbolic resource descriptor
11845references. If a CreateXxxxField operator references a fixed offset
11846within
11847a
11848resource descriptor, a name is assigned to the descriptor and the offset
11849is
11850translated to the appropriate resource tag and pathname. The addition of
11851this support brings the disassembled code very close to the original ASL
11852source code and helps eliminate run-time errors when the disassembled
11853code
11854is modified (and recompiled) in such a way as to invalidate the original
11855fixed offsets.
11856
11857Implemented support for a Descriptor Name as the last parameter to the
11858ASL
11859Register() macro. This parameter was inadvertently left out of the ACPI
11860specification, and will be added for ACPI 3.0b.
11861
11862Fixed a problem where the use of the "_OSI" string (versus the full path
11863"\_OSI") caused an internal compiler error. ("No back ptr to op")
11864
11865Fixed a problem with the error message that occurs when an invalid string
11866is
11867used for a _HID object (such as one with an embedded asterisk:
11868"*PNP010A".)
11869The correct message is now displayed.
11870
11871----------------------------------------
1187217 February 2006. Summary of changes for version 20060217:
11873
118741) ACPI CA Core Subsystem:
11875
11876Implemented a change to the IndexField support to match the behavior of
11877the
11878Microsoft AML interpreter. The value written to the Index register is now
11879a
11880byte offset, no longer an index based upon the width of the Data
11881register.
11882This should fix IndexField problems seen on some machines where the Data
11883register is not exactly one byte wide. The ACPI specification will be
11884clarified on this point.
11885
11886Fixed a problem where several resource descriptor types could overrun the
11887internal descriptor buffer due to size miscalculation: VendorShort,
11888VendorLong, and Interrupt. This was noticed on IA64 machines, but could
11889affect all platforms.
11890
11891Fixed a problem where individual resource descriptors were misaligned
11892within
11893the internal buffer, causing alignment faults on IA64 platforms.
11894
11895Code and Data Size: These are the sizes for the acpica.lib produced by
11896the
11897Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11898ACPI
11899driver or OSPM code. The debug version of the code includes the debug
11900output
11901trace mechanism and has a much larger code and data size. Note that these
11902values will vary depending on the efficiency of the compiler and the
11903compiler options used during generation.
11904
11905  Previous Release:
11906    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11907    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
11908  Current Release:
11909    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
11910    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
11911
11912
119132) iASL Compiler/Disassembler:
11914
11915Implemented support for new reserved names: _WDG and _WED are Microsoft
11916extensions for Windows Instrumentation Management, _TDL is a new ACPI-
11917defined method (Throttling Depth Limit.)
11918
11919Fixed a problem where a zero-length VendorShort or VendorLong resource
11920descriptor was incorrectly emitted as a descriptor of length one.
11921
11922----------------------------------------
1192310 February 2006. Summary of changes for version 20060210:
11924
119251) ACPI CA Core Subsystem:
11926
11927Removed a couple of extraneous ACPI_ERROR messages that appeared during
11928normal execution. These became apparent after the conversion from
11929ACPI_DEBUG_PRINT.
11930
11931Fixed a problem where the CreateField operator could hang if the BitIndex
11932or
11933NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
11934
11935Fixed a problem where a DeRefOf operation on a buffer object incorrectly
11936failed with an exception. This also fixes a couple of related RefOf and
11937DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
11938
11939Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
11940of
11941AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
11942BZ
119435480)
11944
11945Implemented a memory cleanup at the end of the execution of each
11946iteration
11947of an AML While() loop, preventing the accumulation of outstanding
11948objects.
11949(Valery Podrezov, BZ 5427)
11950
11951Eliminated a chunk of duplicate code in the object resolution code.
11952(Valery
11953Podrezov, BZ 5336)
11954
11955Fixed several warnings during the 64-bit code generation.
11956
11957The AcpiSrc source code conversion tool now inserts one line of
11958whitespace
11959after an if() statement that is followed immediately by a comment,
11960improving
11961readability of the Linux code.
11962
11963Code and Data Size: The current and previous library sizes for the core
11964subsystem are shown below. These are the code and data sizes for the
11965acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11966These
11967values do not include any ACPI driver or OSPM code. The debug version of
11968the
11969code includes the debug output trace mechanism and has a much larger code
11970and data size. Note that these values will vary depending on the
11971efficiency
11972of the compiler and the compiler options used during generation.
11973
11974  Previous Release:
11975    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
11976    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
11977  Current Release:
11978    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11979    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
11980
11981
119822) iASL Compiler/Disassembler:
11983
11984Fixed a problem with the disassembly of a BankField operator with a
11985complex
11986expression for the BankValue parameter.
11987
11988----------------------------------------
1198927 January 2006. Summary of changes for version 20060127:
11990
119911) ACPI CA Core Subsystem:
11992
11993Implemented support in the Resource Manager to allow unresolved
11994namestring
11995references within resource package objects for the _PRT method. This
11996support
11997is in addition to the previously implemented unresolved reference support
11998within the AML parser. If the interpreter slack mode is enabled, these
11999unresolved references will be passed through to the caller as a NULL
12000package
12001entry.
12002
12003Implemented and deployed new macros and functions for error and warning
12004messages across the subsystem. These macros are simpler and generate less
12005code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
12006ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
12007macros remain defined to allow ACPI drivers time to migrate to the new
12008macros.
12009
12010Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
12011the
12012Acquire/Release Lock OSL interfaces.
12013
12014Fixed a problem where Alias ASL operators are sometimes not correctly
12015resolved, in both the interpreter and the iASL compiler.
12016
12017Fixed several problems with the implementation of the
12018ConcatenateResTemplate
12019ASL operator. As per the ACPI specification, zero length buffers are now
12020treated as a single EndTag. One-length buffers always cause a fatal
12021exception. Non-zero length buffers that do not end with a full 2-byte
12022EndTag
12023cause a fatal exception.
12024
12025Fixed a possible structure overwrite in the AcpiGetObjectInfo external
12026interface. (With assistance from Thomas Renninger)
12027
12028Code and Data Size: The current and previous library sizes for the core
12029subsystem are shown below. These are the code and data sizes for the
12030acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12031These
12032values do not include any ACPI driver or OSPM code. The debug version of
12033the
12034code includes the debug output trace mechanism and has a much larger code
12035and data size. Note that these values will vary depending on the
12036efficiency
12037of the compiler and the compiler options used during generation.
12038
12039  Previous Release:
12040    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
12041    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
12042  Current Release:
12043    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
12044    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
12045
12046
120472) iASL Compiler/Disassembler:
12048
12049Fixed an internal error that was generated for any forward references to
12050ASL
12051Alias objects.
12052
12053----------------------------------------
1205413 January 2006. Summary of changes for version 20060113:
12055
120561) ACPI CA Core Subsystem:
12057
12058Added 2006 copyright to all module headers and signons. This affects
12059virtually every file in the ACPICA core subsystem, iASL compiler, and the
12060utilities.
12061
12062Enhanced the ACPICA error reporting in order to simplify user migration
12063to
12064the non-debug version of ACPICA. Replaced all instances of the
12065ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
12066debug
12067levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
12068respectively. This preserves all error and warning messages in the non-
12069debug
12070version of the ACPICA code (this has been referred to as the "debug lite"
12071option.) Over 200 cases were converted to create a total of over 380
12072error/warning messages across the ACPICA code. This increases the code
12073and
12074data size of the default non-debug version of the code somewhat (about
1207513K),
12076but all error/warning reporting may be disabled if desired (and code
12077eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
12078configuration option. The size of the debug version of ACPICA remains
12079about
12080the same.
12081
12082Fixed a memory leak within the AML Debugger "Set" command. One object was
12083not properly deleted for every successful invocation of the command.
12084
12085Code and Data Size: The current and previous library sizes for the core
12086subsystem are shown below. These are the code and data sizes for the
12087acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12088These
12089values do not include any ACPI driver or OSPM code. The debug version of
12090the
12091code includes the debug output trace mechanism and has a much larger code
12092and data size. Note that these values will vary depending on the
12093efficiency
12094of the compiler and the compiler options used during generation.
12095
12096  Previous Release:
12097    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
12098    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
12099  Current Release:
12100    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
12101    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
12102
12103
121042) iASL Compiler/Disassembler:
12105
12106The compiler now officially supports the ACPI 3.0a specification that was
12107released on December 30, 2005. (Specification is available at
12108www.acpi.info)
12109
12110----------------------------------------
1211116 December 2005. Summary of changes for version 20051216:
12112
121131) ACPI CA Core Subsystem:
12114
12115Implemented optional support to allow unresolved names within ASL Package
12116objects. A null object is inserted in the package when a named reference
12117cannot be located in the current namespace. Enabled via the interpreter
12118slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
12119machines
12120that contain such code.
12121
12122Implemented an optimization to the initialization sequence that can
12123improve
12124boot time. During ACPI device initialization, the _STA method is now run
12125if
12126and only if the _INI method exists. The _STA method is used to determine
12127if
12128the device is present; An _INI can only be run if _STA returns present,
12129but
12130it is a waste of time to run the _STA method if the _INI does not exist.
12131(Prototype and assistance from Dong Wei)
12132
12133Implemented use of the C99 uintptr_t for the pointer casting macros if it
12134is
12135available in the current compiler. Otherwise, the default (void *) cast
12136is
12137used as before.
12138
12139Fixed some possible memory leaks found within the execution path of the
12140Break, Continue, If, and CreateField operators. (Valery Podrezov)
12141
12142Fixed a problem introduced in the 20051202 release where an exception is
12143generated during method execution if a control method attempts to declare
12144another method.
12145
12146Moved resource descriptor string constants that are used by both the AML
12147disassembler and AML debugger to the common utilities directory so that
12148these components are independent.
12149
12150Implemented support in the AcpiExec utility (-e switch) to globally
12151ignore
12152exceptions during control method execution (method is not aborted.)
12153
12154Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
12155generation.
12156
12157Code and Data Size: The current and previous library sizes for the core
12158subsystem are shown below. These are the code and data sizes for the
12159acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12160These
12161values do not include any ACPI driver or OSPM code. The debug version of
12162the
12163code includes the debug output trace mechanism and has a much larger code
12164and data size. Note that these values will vary depending on the
12165efficiency
12166of the compiler and the compiler options used during generation.
12167
12168  Previous Release:
12169    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12170    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
12171  Current Release:
12172    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
12173    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
12174
12175
121762) iASL Compiler/Disassembler:
12177
12178Fixed a problem where a CPU stack overflow fault could occur if a
12179recursive
12180method call was made from within a Return statement.
12181
12182----------------------------------------
1218302 December 2005. Summary of changes for version 20051202:
12184
121851) ACPI CA Core Subsystem:
12186
12187Modified the parsing of control methods to no longer create namespace
12188objects during the first pass of the parse. Objects are now created only
12189during the execute phase, at the moment the namespace creation operator
12190is
12191encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
12192This
12193should eliminate ALREADY_EXISTS exceptions seen on some machines where
12194reentrant control methods are protected by an AML mutex. The mutex will
12195now
12196correctly block multiple threads from attempting to create the same
12197object
12198more than once.
12199
12200Increased the number of available Owner Ids for namespace object tracking
12201from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
12202on
12203some machines with a large number of ACPI tables (either static or
12204dynamic).
12205
12206Fixed a problem with the AcpiExec utility where a fault could occur when
12207the
12208-b switch (batch mode) is used.
12209
12210Enhanced the namespace dump routine to output the owner ID for each
12211namespace object.
12212
12213Code and Data Size: The current and previous library sizes for the core
12214subsystem are shown below. These are the code and data sizes for the
12215acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12216These
12217values do not include any ACPI driver or OSPM code. The debug version of
12218the
12219code includes the debug output trace mechanism and has a much larger code
12220and data size. Note that these values will vary depending on the
12221efficiency
12222of the compiler and the compiler options used during generation.
12223
12224  Previous Release:
12225    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12226    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12227  Current Release:
12228    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12229    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
12230
12231
122322) iASL Compiler/Disassembler:
12233
12234Fixed a parse error during compilation of certain Switch/Case constructs.
12235To
12236simplify the parse, the grammar now allows for multiple Default
12237statements
12238and this error is now detected and flagged during the analysis phase.
12239
12240Disassembler: The disassembly now includes the contents of the original
12241table header within a comment at the start of the file. This includes the
12242name and version of the original ASL compiler.
12243
12244----------------------------------------
1224517 November 2005. Summary of changes for version 20051117:
12246
122471) ACPI CA Core Subsystem:
12248
12249Fixed a problem in the AML parser where the method thread count could be
12250decremented below zero if any errors occurred during the method parse
12251phase.
12252This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
12253machines.
12254This also fixed a related regression with the mechanism that detects and
12255corrects methods that cannot properly handle reentrancy (related to the
12256deployment of the new OwnerId mechanism.)
12257
12258Eliminated the pre-parsing of control methods (to detect errors) during
12259table load. Related to the problem above, this was causing unwind issues
12260if
12261any errors occurred during the parse, and it seemed to be overkill. A
12262table
12263load should not be aborted if there are problems with any single control
12264method, thus rendering this feature rather pointless.
12265
12266Fixed a problem with the new table-driven resource manager where an
12267internal
12268buffer overflow could occur for small resource templates.
12269
12270Implemented a new external interface, AcpiGetVendorResource. This
12271interface
12272will find and return a vendor-defined resource descriptor within a _CRS
12273or
12274_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
12275Helgaas.
12276
12277Removed the length limit (200) on string objects as per the upcoming ACPI
122783.0A specification. This affects the following areas of the interpreter:
122791)
12280any implicit conversion of a Buffer to a String, 2) a String object
12281result
12282of the ASL Concatenate operator, 3) the String object result of the ASL
12283ToString operator.
12284
12285Fixed a problem in the Windows OS interface layer (OSL) where a
12286WAIT_FOREVER
12287on a semaphore object would incorrectly timeout. This allows the
12288multithreading features of the AcpiExec utility to work properly under
12289Windows.
12290
12291Updated the Linux makefiles for the iASL compiler and AcpiExec to include
12292the recently added file named "utresrc.c".
12293
12294Code and Data Size: The current and previous library sizes for the core
12295subsystem are shown below. These are the code and data sizes for the
12296acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12297These
12298values do not include any ACPI driver or OSPM code. The debug version of
12299the
12300code includes the debug output trace mechanism and has a much larger code
12301and data size. Note that these values will vary depending on the
12302efficiency
12303of the compiler and the compiler options used during generation.
12304
12305  Previous Release:
12306    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
12307    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12308  Current Release:
12309    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12310    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12311
12312
123132) iASL Compiler/Disassembler:
12314
12315Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
12316specification. For the iASL compiler, this means that string literals
12317within
12318the source ASL can be of any length.
12319
12320Enhanced the listing output to dump the AML code for resource descriptors
12321immediately after the ASL code for each descriptor, instead of in a block
12322at
12323the end of the entire resource template.
12324
12325Enhanced the compiler debug output to dump the entire original parse tree
12326constructed during the parse phase, before any transforms are applied to
12327the
12328tree. The transformed tree is dumped also.
12329
12330----------------------------------------
1233102 November 2005. Summary of changes for version 20051102:
12332
123331) ACPI CA Core Subsystem:
12334
12335Modified the subsystem initialization sequence to improve GPE support.
12336The
12337GPE initialization has been split into two parts in order to defer
12338execution
12339of the _PRW methods (Power Resources for Wake) until after the hardware
12340is
12341fully initialized and the SCI handler is installed. This allows the _PRW
12342methods to access fields protected by the Global Lock. This will fix
12343systems
12344where a NO_GLOBAL_LOCK exception has been seen during initialization.
12345
12346Converted the ACPI internal object disassemble and display code within
12347the
12348AML debugger to fully table-driven operation, reducing code size and
12349increasing maintainability.
12350
12351Fixed a regression with the ConcatenateResTemplate() ASL operator
12352introduced
12353in the 20051021 release.
12354
12355Implemented support for "local" internal ACPI object types within the
12356debugger "Object" command and the AcpiWalkNamespace external interfaces.
12357These local types include RegionFields, BankFields, IndexFields, Alias,
12358and
12359reference objects.
12360
12361Moved common AML resource handling code into a new file, "utresrc.c".
12362This
12363code is shared by both the Resource Manager and the AML Debugger.
12364
12365Code and Data Size: The current and previous library sizes for the core
12366subsystem are shown below. These are the code and data sizes for the
12367acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12368These
12369values do not include any ACPI driver or OSPM code. The debug version of
12370the
12371code includes the debug output trace mechanism and has a much larger code
12372and data size. Note that these values will vary depending on the
12373efficiency
12374of the compiler and the compiler options used during generation.
12375
12376  Previous Release:
12377    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
12378    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
12379  Current Release:
12380    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
12381    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12382
12383
123842) iASL Compiler/Disassembler:
12385
12386Fixed a problem with very large initializer lists (more than 4000
12387elements)
12388for both Buffer and Package objects where the parse stack could overflow.
12389
12390Enhanced the pre-compile source code scan for non-ASCII characters to
12391ignore
12392characters within comment fields. The scan is now always performed and is
12393no
12394longer optional, detecting invalid characters within a source file
12395immediately rather than during the parse phase or later.
12396
12397Enhanced the ASL grammar definition to force early reductions on all
12398list-
12399style grammar elements so that the overall parse stack usage is greatly
12400reduced. This should improve performance and reduce the possibility of
12401parse
12402stack overflow.
12403
12404Eliminated all reduce/reduce conflicts in the iASL parser generation.
12405Also,
12406with the addition of a %expected statement, the compiler generates from
12407source with no warnings.
12408
12409Fixed a possible segment fault in the disassembler if the input filename
12410does not contain a "dot" extension (Thomas Renninger).
12411
12412----------------------------------------
1241321 October 2005. Summary of changes for version 20051021:
12414
124151) ACPI CA Core Subsystem:
12416
12417Implemented support for the EM64T and other x86-64 processors. This
12418essentially entails recognizing that these processors support non-aligned
12419memory transfers. Previously, all 64-bit processors were assumed to lack
12420hardware support for non-aligned transfers.
12421
12422Completed conversion of the Resource Manager to nearly full table-driven
12423operation. Specifically, the resource conversion code (convert AML to
12424internal format and the reverse) and the debug code to dump internal
12425resource descriptors are fully table-driven, reducing code and data size
12426and
12427improving maintainability.
12428
12429The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
12430word
12431on 64-bit processors instead of a fixed 32-bit word. (With assistance
12432from
12433Alexey Starikovskiy)
12434
12435Implemented support within the resource conversion code for the Type-
12436Specific byte within the various ACPI 3.0 *WordSpace macros.
12437
12438Fixed some issues within the resource conversion code for the type-
12439specific
12440flags for both Memory and I/O address resource descriptors. For Memory,
12441implemented support for the MTP and TTP flags. For I/O, split the TRS and
12442TTP flags into two separate fields.
12443
12444Code and Data Size: The current and previous library sizes for the core
12445subsystem are shown below. These are the code and data sizes for the
12446acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12447These
12448values do not include any ACPI driver or OSPM code. The debug version of
12449the
12450code includes the debug output trace mechanism and has a much larger code
12451and data size. Note that these values will vary depending on the
12452efficiency
12453of the compiler and the compiler options used during generation.
12454
12455  Previous Release:
12456    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
12457    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
12458  Current Release:
12459    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
12460    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
12461
12462
12463
124642) iASL Compiler/Disassembler:
12465
12466Relaxed a compiler restriction that disallowed a ResourceIndex byte if
12467the
12468corresponding ResourceSource string was not also present in a resource
12469descriptor declaration. This restriction caused problems with existing
12470AML/ASL code that includes the Index byte without the string. When such
12471AML
12472was disassembled, it could not be compiled without modification. Further,
12473the modified code created a resource template with a different size than
12474the
12475original, breaking code that used fixed offsets into the resource
12476template
12477buffer.
12478
12479Removed a recent feature of the disassembler to ignore a lone
12480ResourceIndex
12481byte. This byte is now emitted if present so that the exact AML can be
12482reproduced when the disassembled code is recompiled.
12483
12484Improved comments and text alignment for the resource descriptor code
12485emitted by the disassembler.
12486
12487Implemented disassembler support for the ACPI 3.0 AccessSize field within
12488a
12489Register() resource descriptor.
12490
12491----------------------------------------
1249230 September 2005. Summary of changes for version 20050930:
12493
124941) ACPI CA Core Subsystem:
12495
12496Completed a major overhaul of the Resource Manager code - specifically,
12497optimizations in the area of the AML/internal resource conversion code.
12498The
12499code has been optimized to simplify and eliminate duplicated code, CPU
12500stack
12501use has been decreased by optimizing function parameters and local
12502variables, and naming conventions across the manager have been
12503standardized
12504for clarity and ease of maintenance (this includes function, parameter,
12505variable, and struct/typedef names.) The update may force changes in some
12506driver code, depending on how resources are handled by the host OS.
12507
12508All Resource Manager dispatch and information tables have been moved to a
12509single location for clarity and ease of maintenance. One new file was
12510created, named "rsinfo.c".
12511
12512The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
12513guarantee that the argument is not evaluated twice, making them less
12514prone
12515to macro side-effects. However, since there exists the possibility of
12516additional stack use if a particular compiler cannot optimize them (such
12517as
12518in the debug generation case), the original macros are optionally
12519available.
12520Note that some invocations of the return_VALUE macro may now cause size
12521mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
12522to
12523eliminate these. (From Randy Dunlap)
12524
12525Implemented a new mechanism to enable debug tracing for individual
12526control
12527methods. A new external interface, AcpiDebugTrace, is provided to enable
12528this mechanism. The intent is to allow the host OS to easily enable and
12529disable tracing for problematic control methods. This interface can be
12530easily exposed to a user or debugger interface if desired. See the file
12531psxface.c for details.
12532
12533AcpiUtCallocate will now return a valid pointer if a length of zero is
12534specified - a length of one is used and a warning is issued. This matches
12535the behavior of AcpiUtAllocate.
12536
12537Code and Data Size: The current and previous library sizes for the core
12538subsystem are shown below. These are the code and data sizes for the
12539acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12540These
12541values do not include any ACPI driver or OSPM code. The debug version of
12542the
12543code includes the debug output trace mechanism and has a much larger code
12544and data size. Note that these values will vary depending on the
12545efficiency
12546of the compiler and the compiler options used during generation.
12547
12548  Previous Release:
12549    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
12550    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
12551  Current Release:
12552    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
12553    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
12554
12555
125562) iASL Compiler/Disassembler:
12557
12558A remark is issued if the effective compile-time length of a package or
12559buffer is zero. Previously, this was a warning.
12560
12561----------------------------------------
1256216 September 2005. Summary of changes for version 20050916:
12563
125641) ACPI CA Core Subsystem:
12565
12566Fixed a problem within the Resource Manager where support for the Generic
12567Register descriptor was not fully implemented. This descriptor is now
12568fully
12569recognized, parsed, disassembled, and displayed.
12570
12571Completely restructured the Resource Manager code to utilize table-driven
12572dispatch and lookup, eliminating many of the large switch() statements.
12573This
12574reduces overall subsystem code size and code complexity. Affects the
12575resource parsing and construction, disassembly, and debug dump output.
12576
12577Cleaned up and restructured the debug dump output for all resource
12578descriptors. Improved readability of the output and reduced code size.
12579
12580Fixed a problem where changes to internal data structures caused the
12581optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
12582
12583Code and Data Size: The current and previous library sizes for the core
12584subsystem are shown below. These are the code and data sizes for the
12585acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12586These
12587values do not include any ACPI driver or OSPM code. The debug version of
12588the
12589code includes the debug output trace mechanism and has a much larger code
12590and data size. Note that these values will vary depending on the
12591efficiency
12592of the compiler and the compiler options used during generation.
12593
12594  Previous Release:
12595    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
12596    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
12597  Current Release:
12598    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
12599    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
12600
12601
126022) iASL Compiler/Disassembler:
12603
12604Updated the disassembler to automatically insert an EndDependentFn()
12605macro
12606into the ASL stream if this macro is missing in the original AML code,
12607simplifying compilation of the resulting ASL module.
12608
12609Fixed a problem in the disassembler where a disassembled ResourceSource
12610string (within a large resource descriptor) was not surrounded by quotes
12611and
12612not followed by a comma, causing errors when the resulting ASL module was
12613compiled. Also, escape sequences within a ResourceSource string are now
12614handled correctly (especially "\\")
12615
12616----------------------------------------
1261702 September 2005. Summary of changes for version 20050902:
12618
126191) ACPI CA Core Subsystem:
12620
12621Fixed a problem with the internal Owner ID allocation and deallocation
12622mechanisms for control method execution and recursive method invocation.
12623This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
12624messages seen on some systems. Recursive method invocation depth is
12625currently limited to 255. (Alexey Starikovskiy)
12626
12627Completely eliminated all vestiges of support for the "module-level
12628executable code" until this support is fully implemented and debugged.
12629This
12630should eliminate the NO_RETURN_VALUE exceptions seen during table load on
12631some systems that invoke this support.
12632
12633Fixed a problem within the resource manager code where the transaction
12634flags
12635for a 64-bit address descriptor were handled incorrectly in the type-
12636specific flag byte.
12637
12638Consolidated duplicate code within the address descriptor resource
12639manager
12640code, reducing overall subsystem code size.
12641
12642Fixed a fault when using the AML debugger "disassemble" command to
12643disassemble individual control methods.
12644
12645Removed references to the "release_current" directory within the Unix
12646release package.
12647
12648Code and Data Size: The current and previous core subsystem library sizes
12649are shown below. These are the code and data sizes for the acpica.lib
12650produced by the Microsoft Visual C++ 6.0 compiler. These values do not
12651include any ACPI driver or OSPM code. The debug version of the code
12652includes
12653the debug output trace mechanism and has a much larger code and data
12654size.
12655Note that these values will vary depending on the efficiency of the
12656compiler
12657and the compiler options used during generation.
12658
12659  Previous Release:
12660    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12661    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
12662  Current Release:
12663    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
12664    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
12665
12666
126672) iASL Compiler/Disassembler:
12668
12669Implemented an error check for illegal duplicate values in the interrupt
12670and
12671dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
12672Interrupt().
12673
12674Implemented error checking for the Irq() and IrqNoFlags() macros to
12675detect
12676too many values in the interrupt list (16 max) and invalid values in the
12677list (range 0 - 15)
12678
12679The maximum length string literal within an ASL file is now restricted to
12680200 characters as per the ACPI specification.
12681
12682Fixed a fault when using the -ln option (generate namespace listing).
12683
12684Implemented an error check to determine if a DescriptorName within a
12685resource descriptor has already been used within the current scope.
12686
12687----------------------------------------
1268815 August 2005.  Summary of changes for version 20050815:
12689
126901) ACPI CA Core Subsystem:
12691
12692Implemented a full bytewise compare to determine if a table load request
12693is
12694attempting to load a duplicate table. The compare is performed if the
12695table
12696signatures and table lengths match. This will allow different tables with
12697the same OEM Table ID and revision to be loaded - probably against the
12698ACPI
12699specification, but discovered in the field nonetheless.
12700
12701Added the changes.txt logfile to each of the zipped release packages.
12702
12703Code and Data Size: Current and previous core subsystem library sizes are
12704shown below. These are the code and data sizes for the acpica.lib
12705produced
12706by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12707any ACPI driver or OSPM code. The debug version of the code includes the
12708debug output trace mechanism and has a much larger code and data size.
12709Note
12710that these values will vary depending on the efficiency of the compiler
12711and
12712the compiler options used during generation.
12713
12714  Previous Release:
12715    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12716    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
12717  Current Release:
12718    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12719    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
12720
12721
127222) iASL Compiler/Disassembler:
12723
12724Fixed a problem where incorrect AML code could be generated for Package
12725objects if optimization is disabled (via the -oa switch).
12726
12727Fixed a problem with where incorrect AML code is generated for variable-
12728length packages when the package length is not specified and the number
12729of
12730initializer values is greater than 255.
12731
12732
12733----------------------------------------
1273429 July 2005.  Summary of changes for version 20050729:
12735
127361) ACPI CA Core Subsystem:
12737
12738Implemented support to ignore an attempt to install/load a particular
12739ACPI
12740table more than once. Apparently there exists BIOS code that repeatedly
12741attempts to load the same SSDT upon certain events. With assistance from
12742Venkatesh Pallipadi.
12743
12744Restructured the main interface to the AML parser in order to correctly
12745handle all exceptional conditions. This will prevent leakage of the
12746OwnerId
12747resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
12748some
12749machines. With assistance from Alexey Starikovskiy.
12750
12751Support for "module level code" has been disabled in this version due to
12752a
12753number of issues that have appeared on various machines. The support can
12754be
12755enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
12756compilation. When the issues are fully resolved, the code will be enabled
12757by
12758default again.
12759
12760Modified the internal functions for debug print support to define the
12761FunctionName parameter as a (const char *) for compatibility with
12762compiler
12763built-in macros such as __FUNCTION__, etc.
12764
12765Linted the entire ACPICA source tree for both 32-bit and 64-bit.
12766
12767Implemented support to display an object count summary for the AML
12768Debugger
12769commands Object and Methods.
12770
12771Code and Data Size: Current and previous core subsystem library sizes are
12772shown below. These are the code and data sizes for the acpica.lib
12773produced
12774by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12775any ACPI driver or OSPM code. The debug version of the code includes the
12776debug output trace mechanism and has a much larger code and data size.
12777Note
12778that these values will vary depending on the efficiency of the compiler
12779and
12780the compiler options used during generation.
12781
12782  Previous Release:
12783    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
12784    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
12785  Current Release:
12786    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12787    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
12788
12789
127902) iASL Compiler/Disassembler:
12791
12792Fixed a regression that appeared in the 20050708 version of the compiler
12793where an error message was inadvertently emitted for invocations of the
12794_OSI
12795reserved control method.
12796
12797----------------------------------------
1279808 July 2005.  Summary of changes for version 20050708:
12799
128001) ACPI CA Core Subsystem:
12801
12802The use of the CPU stack in the debug version of the subsystem has been
12803considerably reduced. Previously, a debug structure was declared in every
12804function that used the debug macros. This structure has been removed in
12805favor of declaring the individual elements as parameters to the debug
12806functions. This reduces the cumulative stack use during nested execution
12807of
12808ACPI function calls at the cost of a small increase in the code size of
12809the
12810debug version of the subsystem. With assistance from Alexey Starikovskiy
12811and
12812Len Brown.
12813
12814Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
12815headers to define a macro that will return the current function name at
12816runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
12817by
12818the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
12819compiler-dependent header, the function name is saved on the CPU stack
12820(one
12821pointer per function.) This mechanism is used because apparently there
12822exists no standard ANSI-C defined macro that that returns the function
12823name.
12824
12825Redesigned and reimplemented the "Owner ID" mechanism used to track
12826namespace objects created/deleted by ACPI tables and control method
12827execution. A bitmap is now used to allocate and free the IDs, thus
12828solving
12829the wraparound problem present in the previous implementation. The size
12830of
12831the namespace node descriptor was reduced by 2 bytes as a result (Alexey
12832Starikovskiy).
12833
12834Removed the UINT32_BIT and UINT16_BIT types that were used for the
12835bitfield
12836flag definitions within the headers for the predefined ACPI tables. These
12837have been replaced by UINT8_BIT in order to increase the code portability
12838of
12839the subsystem. If the use of UINT8 remains a problem, we may be forced to
12840eliminate bitfields entirely because of a lack of portability.
12841
12842Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
12843This
12844is a frequently used function and this improvement increases the
12845performance
12846of the entire subsystem (Alexey Starikovskiy).
12847
12848Fixed several possible memory leaks and the inverse - premature object
12849deletion (Alexey Starikovskiy).
12850
12851Code and Data Size: Current and previous core subsystem library sizes are
12852shown below. These are the code and data sizes for the acpica.lib
12853produced
12854by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12855any ACPI driver or OSPM code. The debug version of the code includes the
12856debug output trace mechanism and has a much larger code and data size.
12857Note
12858that these values will vary depending on the efficiency of the compiler
12859and
12860the compiler options used during generation.
12861
12862  Previous Release:
12863    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
12864    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
12865  Current Release:
12866    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
12867    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
12868
12869----------------------------------------
1287024 June 2005.  Summary of changes for version 20050624:
12871
128721) ACPI CA Core Subsystem:
12873
12874Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
12875the host-defined cache object. This allows the OSL implementation to
12876define
12877and type this object in any manner desired, simplifying the OSL
12878implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
12879Linux, and should be defined in the OS-specific header file for other
12880operating systems as required.
12881
12882Changed the interface to AcpiOsAcquireObject to directly return the
12883requested object as the function return (instead of ACPI_STATUS.) This
12884change was made for performance reasons, since this is the purpose of the
12885interface in the first place. AcpiOsAcquireObject is now similar to the
12886AcpiOsAllocate interface.
12887
12888Implemented a new AML debugger command named Businfo. This command
12889displays
12890information about all devices that have an associate _PRT object. The
12891_ADR,
12892_HID, _UID, and _CID are displayed for these devices.
12893
12894Modified the initialization sequence in AcpiInitializeSubsystem to call
12895the
12896OSL interface AcpiOslInitialize first, before any local initialization.
12897This
12898change was required because the global initialization now calls OSL
12899interfaces.
12900
12901Enhanced the Dump command to display the entire contents of Package
12902objects
12903(including all sub-objects and their values.)
12904
12905Restructured the code base to split some files because of size and/or
12906because the code logically belonged in a separate file. New files are
12907listed
12908below. All makefiles and project files included in the ACPI CA release
12909have
12910been updated.
12911    utilities/utcache.c           /* Local cache interfaces */
12912    utilities/utmutex.c           /* Local mutex support */
12913    utilities/utstate.c           /* State object support */
12914    interpreter/parser/psloop.c   /* Main AML parse loop */
12915
12916Code and Data Size: Current and previous core subsystem library sizes are
12917shown below. These are the code and data sizes for the acpica.lib
12918produced
12919by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12920any ACPI driver or OSPM code. The debug version of the code includes the
12921debug output trace mechanism and has a much larger code and data size.
12922Note
12923that these values will vary depending on the efficiency of the compiler
12924and
12925the compiler options used during generation.
12926
12927  Previous Release:
12928    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
12929    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
12930  Current Release:
12931    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
12932    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
12933
12934
129352) iASL Compiler/Disassembler:
12936
12937Fixed a regression introduced in version 20050513 where the use of a
12938Package
12939object within a Case() statement caused a compile time exception. The
12940original behavior has been restored (a Match() operator is emitted.)
12941
12942----------------------------------------
1294317 June 2005.  Summary of changes for version 20050617:
12944
129451) ACPI CA Core Subsystem:
12946
12947Moved the object cache operations into the OS interface layer (OSL) to
12948allow
12949the host OS to handle these operations if desired (for example, the Linux
12950OSL will invoke the slab allocator). This support is optional; the
12951compile
12952time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
12953cache
12954code in the ACPI CA core. The new OSL interfaces are shown below. See
12955utalloc.c for an example implementation, and acpiosxf.h for the exact
12956interface definitions. With assistance from Alexey Starikovskiy.
12957    AcpiOsCreateCache
12958    AcpiOsDeleteCache
12959    AcpiOsPurgeCache
12960    AcpiOsAcquireObject
12961    AcpiOsReleaseObject
12962
12963Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
12964return
12965and restore a flags parameter. This fits better with many OS lock models.
12966Note: the current execution state (interrupt handler or not) is no longer
12967passed to these interfaces. If necessary, the OSL must determine this
12968state
12969by itself, a simple and fast operation. With assistance from Alexey
12970Starikovskiy.
12971
12972Fixed a problem in the ACPI table handling where a valid XSDT was assumed
12973present if the revision of the RSDP was 2 or greater. According to the
12974ACPI
12975specification, the XSDT is optional in all cases, and the table manager
12976therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
12977Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
12978contain
12979only the RSDT.
12980
12981Fixed an interpreter problem with the Mid() operator in the case of an
12982input
12983string where the resulting output string is of zero length. It now
12984correctly
12985returns a valid, null terminated string object instead of a string object
12986with a null pointer.
12987
12988Fixed a problem with the control method argument handling to allow a
12989store
12990to an Arg object that already contains an object of type Device. The
12991Device
12992object is now correctly overwritten. Previously, an error was returned.
12993
12994
12995Enhanced the debugger Find command to emit object values in addition to
12996the
12997found object pathnames. The output format is the same as the dump
12998namespace
12999command.
13000
13001Enhanced the debugger Set command. It now has the ability to set the
13002value
13003of any Named integer object in the namespace (Previously, only method
13004locals
13005and args could be set.)
13006
13007Code and Data Size: Current and previous core subsystem library sizes are
13008shown below. These are the code and data sizes for the acpica.lib
13009produced
13010by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13011any ACPI driver or OSPM code. The debug version of the code includes the
13012debug output trace mechanism and has a much larger code and data size.
13013Note
13014that these values will vary depending on the efficiency of the compiler
13015and
13016the compiler options used during generation.
13017
13018  Previous Release:
13019    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
13020    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
13021  Current Release:
13022    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
13023    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
13024
13025
130262) iASL Compiler/Disassembler:
13027
13028Fixed a regression in the disassembler where if/else/while constructs
13029were
13030output incorrectly. This problem was introduced in the previous release
13031(20050526). This problem also affected the single-step disassembly in the
13032debugger.
13033
13034Fixed a problem where compiling the reserved _OSI method would randomly
13035(but
13036rarely) produce compile errors.
13037
13038Enhanced the disassembler to emit compilable code in the face of
13039incorrect
13040AML resource descriptors. If the optional ResourceSourceIndex is present,
13041but the ResourceSource is not, do not emit the ResourceSourceIndex in the
13042disassembly. Otherwise, the resulting code cannot be compiled without
13043errors.
13044
13045----------------------------------------
1304626 May 2005.  Summary of changes for version 20050526:
13047
130481) ACPI CA Core Subsystem:
13049
13050Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
13051the module level (not within a control method.) These opcodes are
13052executed
13053exactly once at the time the table is loaded. This type of code was legal
13054up
13055until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
13056in
13057order to provide backwards compatibility with earlier BIOS
13058implementations.
13059This eliminates the "Encountered executable code at module level" warning
13060that was previously generated upon detection of such code.
13061
13062Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
13063inadvertently be generated during the lookup of namespace objects in the
13064second pass parse of ACPI tables and control methods. It appears that
13065this
13066problem could occur during the resolution of forward references to
13067namespace
13068objects.
13069
13070Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
13071corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
13072allows the deadlock detection debug code to be compiled out in the normal
13073case, improving mutex performance (and overall subsystem performance)
13074considerably.
13075
13076Implemented a handful of miscellaneous fixes for possible memory leaks on
13077error conditions and error handling control paths. These fixes were
13078suggested by FreeBSD and the Coverity Prevent source code analysis tool.
13079
13080Added a check for a null RSDT pointer in AcpiGetFirmwareTable
13081(tbxfroot.c)
13082to prevent a fault in this error case.
13083
13084Code and Data Size: Current and previous core subsystem library sizes are
13085shown below. These are the code and data sizes for the acpica.lib
13086produced
13087by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13088any ACPI driver or OSPM code. The debug version of the code includes the
13089debug output trace mechanism and has a much larger code and data size.
13090Note
13091that these values will vary depending on the efficiency of the compiler
13092and
13093the compiler options used during generation.
13094
13095  Previous Release:
13096    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13097    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13098  Current Release:
13099    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
13100    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
13101
13102
131032) iASL Compiler/Disassembler:
13104
13105Implemented support to allow Type 1 and Type 2 ASL operators to appear at
13106the module level (not within a control method.) These operators will be
13107executed once at the time the table is loaded. This type of code was
13108legal
13109up until the release of ACPI 2.0B (2002) and is now supported by the iASL
13110compiler in order to provide backwards compatibility with earlier BIOS
13111ASL
13112code.
13113
13114The ACPI integer width (specified via the table revision ID or the -r
13115override, 32 or 64 bits) is now used internally during compile-time
13116constant
13117folding to ensure that constants are truncated to 32 bits if necessary.
13118Previously, the revision ID value was only emitted in the AML table
13119header.
13120
13121An error message is now generated for the Mutex and Method operators if
13122the
13123SyncLevel parameter is outside the legal range of 0 through 15.
13124
13125Fixed a problem with the Method operator ParameterTypes list handling
13126(ACPI
131273.0). Previously, more than 2 types or 2 arguments generated a syntax
13128error.
13129The actual underlying implementation of method argument typechecking is
13130still under development, however.
13131
13132----------------------------------------
1313313 May 2005.  Summary of changes for version 20050513:
13134
131351) ACPI CA Core Subsystem:
13136
13137Implemented support for PCI Express root bridges -- added support for
13138device
13139PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
13140
13141The interpreter now automatically truncates incoming 64-bit constants to
1314232
13143bits if currently executing out of a 32-bit ACPI table (Revision < 2).
13144This
13145also affects the iASL compiler constant folding. (Note: as per below, the
13146iASL compiler no longer allows 64-bit constants within 32-bit tables.)
13147
13148Fixed a problem where string and buffer objects with "static" pointers
13149(pointers to initialization data within an ACPI table) were not handled
13150consistently. The internal object copy operation now always copies the
13151data
13152to a newly allocated buffer, regardless of whether the source object is
13153static or not.
13154
13155Fixed a problem with the FromBCD operator where an implicit result
13156conversion was improperly performed while storing the result to the
13157target
13158operand. Since this is an "explicit conversion" operator, the implicit
13159conversion should never be performed on the output.
13160
13161Fixed a problem with the CopyObject operator where a copy to an existing
13162named object did not always completely overwrite the existing object
13163stored
13164at name. Specifically, a buffer-to-buffer copy did not delete the
13165existing
13166buffer.
13167
13168Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
13169and
13170structs for consistency.
13171
13172Code and Data Size: Current and previous core subsystem library sizes are
13173shown below. These are the code and data sizes for the acpica.lib
13174produced
13175by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13176any ACPI driver or OSPM code. The debug version of the code includes the
13177debug output trace mechanism and has a much larger code and data size.
13178Note
13179that these values will vary depending on the efficiency of the compiler
13180and
13181the compiler options used during generation.
13182
13183  Previous Release:
13184    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13185    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13186  Current Release: (Same sizes)
13187    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13188    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13189
13190
131912) iASL Compiler/Disassembler:
13192
13193The compiler now emits a warning if an attempt is made to generate a 64-
13194bit
13195integer constant from within a 32-bit ACPI table (Revision < 2). The
13196integer
13197is truncated to 32 bits.
13198
13199Fixed a problem with large package objects: if the static length of the
13200package is greater than 255, the "variable length package" opcode is
13201emitted. Previously, this caused an error. This requires an update to the
13202ACPI spec, since it currently (incorrectly) states that packages larger
13203than
13204255 elements are not allowed.
13205
13206The disassembler now correctly handles variable length packages and
13207packages
13208larger than 255 elements.
13209
13210----------------------------------------
1321108 April 2005.  Summary of changes for version 20050408:
13212
132131) ACPI CA Core Subsystem:
13214
13215Fixed three cases in the interpreter where an "index" argument to an ASL
13216function was still (internally) 32 bits instead of the required 64 bits.
13217This was the Index argument to the Index, Mid, and Match operators.
13218
13219The "strupr" function is now permanently local (AcpiUtStrupr), since this
13220is
13221not a POSIX-defined function and not present in most kernel-level C
13222libraries. All references to the C library strupr function have been
13223removed
13224from the headers.
13225
13226Completed the deployment of static functions/prototypes. All prototypes
13227with
13228the static attribute have been moved from the headers to the owning C
13229file.
13230
13231Implemented an extract option (-e) for the AcpiBin utility (AML binary
13232utility). This option allows the utility to extract individual ACPI
13233tables
13234from the output of AcpiDmp. It provides the same functionality of the
13235acpixtract.pl perl script without the worry of setting the correct perl
13236options. AcpiBin runs on Windows and has not yet been generated/validated
13237in
13238the Linux/Unix environment (but should be soon).
13239
13240Updated and fixed the table dump option for AcpiBin (-d). This option
13241converts a single ACPI table to a hex/ascii file, similar to the output
13242of
13243AcpiDmp.
13244
13245Code and Data Size: Current and previous core subsystem library sizes are
13246shown below. These are the code and data sizes for the acpica.lib
13247produced
13248by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13249any ACPI driver or OSPM code. The debug version of the code includes the
13250debug output trace mechanism and has a much larger code and data size.
13251Note
13252that these values will vary depending on the efficiency of the compiler
13253and
13254the compiler options used during generation.
13255
13256  Previous Release:
13257    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
13258    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
13259  Current Release:
13260    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13261    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13262
13263
132642) iASL Compiler/Disassembler:
13265
13266Disassembler fix: Added a check to ensure that the table length found in
13267the
13268ACPI table header within the input file is not longer than the actual
13269input
13270file size. This indicates some kind of file or table corruption.
13271
13272----------------------------------------
1327329 March 2005.  Summary of changes for version 20050329:
13274
132751) ACPI CA Core Subsystem:
13276
13277An error is now generated if an attempt is made to create a Buffer Field
13278of
13279length zero (A CreateField with a length operand of zero.)
13280
13281The interpreter now issues a warning whenever executable code at the
13282module
13283level is detected during ACPI table load. This will give some idea of the
13284prevalence of this type of code.
13285
13286Implemented support for references to named objects (other than control
13287methods) within package objects.
13288
13289Enhanced package object output for the debug object. Package objects are
13290now
13291completely dumped, showing all elements.
13292
13293Enhanced miscellaneous object output for the debug object. Any object can
13294now be written to the debug object (for example, a device object can be
13295written, and the type of the object will be displayed.)
13296
13297The "static" qualifier has been added to all local functions across both
13298the
13299core subsystem and the iASL compiler.
13300
13301The number of "long" lines (> 80 chars) within the source has been
13302significantly reduced, by about 1/3.
13303
13304Cleaned up all header files to ensure that all CA/iASL functions are
13305prototyped (even static functions) and the formatting is consistent.
13306
13307Two new header files have been added, acopcode.h and acnames.h.
13308
13309Removed several obsolete functions that were no longer used.
13310
13311Code and Data Size: Current and previous core subsystem library sizes are
13312shown below. These are the code and data sizes for the acpica.lib
13313produced
13314by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13315any ACPI driver or OSPM code. The debug version of the code includes the
13316debug output trace mechanism and has a much larger code and data size.
13317Note
13318that these values will vary depending on the efficiency of the compiler
13319and
13320the compiler options used during generation.
13321
13322  Previous Release:
13323    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13324    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
13325  Current Release:
13326    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
13327    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
13328
13329
13330
133312) iASL Compiler/Disassembler:
13332
13333Fixed a problem with the resource descriptor generation/support. For the
13334ResourceSourceIndex and the ResourceSource fields, both must be present,
13335or
13336both must be not present - can't have one without the other.
13337
13338The compiler now returns non-zero from the main procedure if any errors
13339have
13340occurred during the compilation.
13341
13342
13343----------------------------------------
1334409 March 2005.  Summary of changes for version 20050309:
13345
133461) ACPI CA Core Subsystem:
13347
13348The string-to-buffer implicit conversion code has been modified again
13349after
13350a change to the ACPI specification.  In order to match the behavior of
13351the
13352other major ACPI implementation, the target buffer is no longer truncated
13353if
13354the source string is smaller than an existing target buffer. This change
13355requires an update to the ACPI spec, and should eliminate the recent
13356AE_AML_BUFFER_LIMIT issues.
13357
13358The "implicit return" support was rewritten to a new algorithm that
13359solves
13360the general case. Rather than attempt to determine when a method is about
13361to
13362exit, the result of every ASL operator is saved momentarily until the
13363very
13364next ASL operator is executed. Therefore, no matter how the method exits,
13365there will always be a saved implicit return value. This feature is only
13366enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
13367eliminate
13368AE_AML_NO_RETURN_VALUE errors when enabled.
13369
13370Implemented implicit conversion support for the predicate (operand) of
13371the
13372If, Else, and While operators. String and Buffer arguments are
13373automatically
13374converted to Integers.
13375
13376Changed the string-to-integer conversion behavior to match the new ACPI
13377errata: "If no integer object exists, a new integer is created. The ASCII
13378string is interpreted as a hexadecimal constant. Each string character is
13379interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
13380with the first character as the most significant digit, and ending with
13381the
13382first non-hexadecimal character or end-of-string." This means that the
13383first
13384non-hex character terminates the conversion and this is the code that was
13385changed.
13386
13387Fixed a problem where the ObjectType operator would fail (fault) when
13388used
13389on an Index of a Package which pointed to a null package element. The
13390operator now properly returns zero (Uninitialized) in this case.
13391
13392Fixed a problem where the While operator used excessive memory by not
13393properly popping the result stack during execution. There was no memory
13394leak
13395after execution, however. (Code provided by Valery Podrezov.)
13396
13397Fixed a problem where references to control methods within Package
13398objects
13399caused the method to be invoked, instead of producing a reference object
13400pointing to the method.
13401
13402Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
13403to
13404improve performance and reduce code size. (Code provided by Alexey
13405Starikovskiy.)
13406
13407Code and Data Size: Current and previous core subsystem library sizes are
13408shown below. These are the code and data sizes for the acpica.lib
13409produced
13410by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13411any ACPI driver or OSPM code. The debug version of the code includes the
13412debug output trace mechanism and has a much larger code and data size.
13413Note
13414that these values will vary depending on the efficiency of the compiler
13415and
13416the compiler options used during generation.
13417
13418  Previous Release:
13419    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13420    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
13421  Current Release:
13422    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13423    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
13424
13425
134262) iASL Compiler/Disassembler:
13427
13428Fixed a problem with the Return operator with no arguments. Since the AML
13429grammar for the byte encoding requires an operand for the Return opcode,
13430the
13431compiler now emits a Return(Zero) for this case.  An ACPI specification
13432update has been written for this case.
13433
13434For tables other than the DSDT, namepath optimization is automatically
13435disabled. This is because SSDTs can be loaded anywhere in the namespace,
13436the
13437compiler has no knowledge of where, and thus cannot optimize namepaths.
13438
13439Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
13440inadvertently omitted from the ACPI specification, and will require an
13441update to the spec.
13442
13443The source file scan for ASCII characters is now optional (-a). This
13444change
13445was made because some vendors place non-ascii characters within comments.
13446However, the scan is simply a brute-force byte compare to ensure all
13447characters in the file are in the range 0x00 to 0x7F.
13448
13449Fixed a problem with the CondRefOf operator where the compiler was
13450inappropriately checking for the existence of the target. Since the point
13451of
13452the operator is to check for the existence of the target at run-time, the
13453compiler no longer checks for the target existence.
13454
13455Fixed a problem where errors generated from the internal AML interpreter
13456during constant folding were not handled properly, causing a fault.
13457
13458Fixed a problem with overly aggressive range checking for the Stall
13459operator. The valid range (max 255) is now only checked if the operand is
13460of
13461type Integer. All other operand types cannot be statically checked.
13462
13463Fixed a problem where control method references within the RefOf,
13464DeRefOf,
13465and ObjectType operators were not treated properly. They are now treated
13466as
13467actual references, not method invocations.
13468
13469Fixed and enhanced the "list namespace" option (-ln). This option was
13470broken
13471a number of releases ago.
13472
13473Improved error handling for the Field, IndexField, and BankField
13474operators.
13475The compiler now cleanly reports and recovers from errors in the field
13476component (FieldUnit) list.
13477
13478Fixed a disassembler problem where the optional ResourceDescriptor fields
13479TRS and TTP were not always handled correctly.
13480
13481Disassembler - Comments in output now use "//" instead of "/*"
13482
13483----------------------------------------
1348428 February 2005.  Summary of changes for version 20050228:
13485
134861) ACPI CA Core Subsystem:
13487
13488Fixed a problem where the result of an Index() operator (an object
13489reference) must increment the reference count on the target object for
13490the
13491life of the object reference.
13492
13493Implemented AML Interpreter and Debugger support for the new ACPI 3.0
13494Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
13495WordSpace
13496resource descriptors.
13497
13498Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
13499Space Descriptor" string, indicating interpreter support for the
13500descriptors
13501above.
13502
13503Implemented header support for the new ACPI 3.0 FADT flag bits.
13504
13505Implemented header support for the new ACPI 3.0 PCI Express bits for the
13506PM1
13507status/enable registers.
13508
13509Updated header support for the MADT processor local Apic struct and MADT
13510platform interrupt source struct for new ACPI 3.0 fields.
13511
13512Implemented header support for the SRAT and SLIT ACPI tables.
13513
13514Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
13515flag
13516at runtime.
13517
13518Code and Data Size: Current and previous core subsystem library sizes are
13519shown below. These are the code and data sizes for the acpica.lib
13520produced
13521by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13522any ACPI driver or OSPM code. The debug version of the code includes the
13523debug output trace mechanism and has a much larger code and data size.
13524Note
13525that these values will vary depending on the efficiency of the compiler
13526and
13527the compiler options used during generation.
13528
13529  Previous Release:
13530    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
13531    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
13532  Current Release:
13533    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13534    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
13535
13536
135372) iASL Compiler/Disassembler:
13538
13539Fixed a problem with the internal 64-bit String-to-integer conversion
13540with
13541strings less than two characters long.
13542
13543Fixed a problem with constant folding where the result of the Index()
13544operator can not be considered a constant. This means that Index() cannot
13545be
13546a type3 opcode and this will require an update to the ACPI specification.
13547
13548Disassembler: Implemented support for the TTP, MTP, and TRS resource
13549descriptor fields. These fields were inadvertently ignored and not output
13550in
13551the disassembly of the resource descriptor.
13552
13553
13554 ----------------------------------------
1355511 February 2005.  Summary of changes for version 20050211:
13556
135571) ACPI CA Core Subsystem:
13558
13559Implemented ACPI 3.0 support for implicit conversion within the Match()
13560operator. MatchObjects can now be of type integer, buffer, or string
13561instead
13562of just type integer.  Package elements are implicitly converted to the
13563type
13564of the MatchObject. This change aligns the behavior of Match() with the
13565behavior of the other logical operators (LLess(), etc.) It also requires
13566an
13567errata change to the ACPI specification as this support was intended for
13568ACPI 3.0, but was inadvertently omitted.
13569
13570Fixed a problem with the internal implicit "to buffer" conversion.
13571Strings
13572that are converted to buffers will cause buffer truncation if the string
13573is
13574smaller than the target buffer. Integers that are converted to buffers
13575will
13576not cause buffer truncation, only zero extension (both as per the ACPI
13577spec.) The problem was introduced when code was added to truncate the
13578buffer, but this should not be performed in all cases, only the string
13579case.
13580
13581Fixed a problem with the Buffer and Package operators where the
13582interpreter
13583would get confused if two such operators were used as operands to an ASL
13584operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
13585stack was not being popped after the execution of these operators,
13586resulting
13587in an AE_NO_RETURN_VALUE exception.
13588
13589Fixed a problem with constructs of the form Store(Index(...),...). The
13590reference object returned from Index was inadvertently resolved to an
13591actual
13592value. This problem was introduced in version 20050114 when the behavior
13593of
13594Store() was modified to restrict the object types that can be used as the
13595source operand (to match the ACPI specification.)
13596
13597Reduced excessive stack use within the AcpiGetObjectInfo procedure.
13598
13599Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
13600
13601Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
13602
13603Code and Data Size: Current and previous core subsystem library sizes are
13604shown below. These are the code and data sizes for the acpica.lib
13605produced
13606by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13607any ACPI driver or OSPM code. The debug version of the code includes the
13608debug output trace mechanism and has a much larger code and data size.
13609Note
13610that these values will vary depending on the efficiency of the compiler
13611and
13612the compiler options used during generation.
13613
13614  Previous Release:
13615    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
13616    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
13617  Current Release:
13618    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
13619    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
13620
13621
136222) iASL Compiler/Disassembler:
13623
13624Fixed a code generation problem in the constant folding optimization code
13625where incorrect code was generated if a constant was reduced to a buffer
13626object (i.e., a reduced type 5 opcode.)
13627
13628Fixed a typechecking problem for the ToBuffer operator. Caused by an
13629incorrect return type in the internal opcode information table.
13630
13631----------------------------------------
1363225 January 2005.  Summary of changes for version 20050125:
13633
136341) ACPI CA Core Subsystem:
13635
13636Fixed a recently introduced problem with the Global Lock where the
13637underlying semaphore was not created.  This problem was introduced in
13638version 20050114, and caused an AE_AML_NO_OPERAND exception during an
13639Acquire() operation on _GL.
13640
13641The local object cache is now optional, and is disabled by default. Both
13642AcpiExec and the iASL compiler enable the cache because they run in user
13643mode and this enhances their performance. #define
13644ACPI_ENABLE_OBJECT_CACHE
13645to enable the local cache.
13646
13647Fixed an issue in the internal function AcpiUtEvaluateObject concerning
13648the
13649optional "implicit return" support where an error was returned if no
13650return
13651object was expected, but one was implicitly returned. AE_OK is now
13652returned
13653in this case and the implicitly returned object is deleted.
13654AcpiUtEvaluateObject is only occasionally used, and only to execute
13655reserved
13656methods such as _STA and _INI where the return type is known up front.
13657
13658Fixed a few issues with the internal convert-to-integer code. It now
13659returns
13660an error if an attempt is made to convert a null string, a string of only
13661blanks/tabs, or a zero-length buffer. This affects both implicit
13662conversion
13663and explicit conversion via the ToInteger() operator.
13664
13665The internal debug code in AcpiUtAcquireMutex has been commented out. It
13666is
13667not needed for normal operation and should increase the performance of
13668the
13669entire subsystem. The code remains in case it is needed for debug
13670purposes
13671again.
13672
13673The AcpiExec source and makefile are included in the Unix/Linux package
13674for
13675the first time.
13676
13677Code and Data Size: Current and previous core subsystem library sizes are
13678shown below. These are the code and data sizes for the acpica.lib
13679produced
13680by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13681any ACPI driver or OSPM code. The debug version of the code includes the
13682debug output trace mechanism and has a much larger code and data size.
13683Note
13684that these values will vary depending on the efficiency of the compiler
13685and
13686the compiler options used during generation.
13687
13688  Previous Release:
13689    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
13690    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
13691  Current Release:
13692    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
13693    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
13694
136952) iASL Compiler/Disassembler:
13696
13697Switch/Case support: A warning is now issued if the type of the Switch
13698value
13699cannot be determined at compile time. For example, Switch(Arg0) will
13700generate the warning, and the type is assumed to be an integer. As per
13701the
13702ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
13703the
13704warning.
13705
13706Switch/Case support: Implemented support for buffer and string objects as
13707the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
13708buffers and strings.
13709
13710Switch/Case support: The emitted code for the LEqual() comparisons now
13711uses
13712the switch value as the first operand, not the second. The case value is
13713now
13714the second operand, and this allows the case value to be implicitly
13715converted to the type of the switch value, not the other way around.
13716
13717Switch/Case support: Temporary variables are now emitted immediately
13718within
13719the control method, not at the global level. This means that there are
13720now
1372136 temps available per-method, not 36 temps per-module as was the case
13722with
13723the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
13724
13725----------------------------------------
1372614 January 2005.  Summary of changes for version 20050114:
13727
13728Added 2005 copyright to all module headers.  This affects every module in
13729the core subsystem, iASL compiler, and the utilities.
13730
137311) ACPI CA Core Subsystem:
13732
13733Fixed an issue with the String-to-Buffer conversion code where the string
13734null terminator was not included in the buffer after conversion, but
13735there
13736is existing ASL that assumes the string null terminator is included. This
13737is
13738the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
13739introduced in the previous version when the code was updated to correctly
13740set the converted buffer size as per the ACPI specification. The ACPI
13741spec
13742is ambiguous and will be updated to specify that the null terminator must
13743be
13744included in the converted buffer. This also affects the ToBuffer() ASL
13745operator.
13746
13747Fixed a problem with the Mid() ASL/AML operator where it did not work
13748correctly on Buffer objects. Newly created sub-buffers were not being
13749marked
13750as initialized.
13751
13752
13753Fixed a problem in AcpiTbFindTable where incorrect string compares were
13754performed on the OemId and OemTableId table header fields.  These fields
13755are
13756not null terminated, so strncmp is now used instead of strcmp.
13757
13758Implemented a restriction on the Store() ASL/AML operator to align the
13759behavior with the ACPI specification.  Previously, any object could be
13760used
13761as the source operand.  Now, the only objects that may be used are
13762Integers,
13763Buffers, Strings, Packages, Object References, and DDB Handles.  If
13764necessary, the original behavior can be restored by enabling the
13765EnableInterpreterSlack flag.
13766
13767Enhanced the optional "implicit return" support to allow an implicit
13768return
13769value from methods that are invoked externally via the AcpiEvaluateObject
13770interface.  This enables implicit returns from the _STA and _INI methods,
13771for example.
13772
13773Changed the Revision() ASL/AML operator to return the current version of
13774the
13775AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
13776returned
13777the supported ACPI version (This is the function of the _REV method).
13778
13779Updated the _REV predefined method to return the currently supported
13780version
13781of ACPI, now 3.
13782
13783Implemented batch mode option for the AcpiExec utility (-b).
13784
13785Code and Data Size: Current and previous core subsystem library sizes are
13786shown below. These are the code and data sizes for the acpica.lib
13787produced
13788by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13789any ACPI driver or OSPM code. The debug version of the code includes the
13790debug output trace mechanism and has a much larger code and data size.
13791Note
13792that these values will vary depending on the efficiency of the compiler
13793and
13794the compiler options used during generation.
13795
13796  Previous Release:
13797    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13798    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
13799  Current Release:
13800    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
13801    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
13802
13803----------------------------------------
1380410 December 2004.  Summary of changes for version 20041210:
13805
13806ACPI 3.0 support is nearing completion in both the iASL compiler and the
13807ACPI CA core subsystem.
13808
138091) ACPI CA Core Subsystem:
13810
13811Fixed a problem in the ToDecimalString operator where the resulting
13812string
13813length was incorrectly calculated. The length is now calculated exactly,
13814eliminating incorrect AE_STRING_LIMIT exceptions.
13815
13816Fixed a problem in the ToHexString operator to allow a maximum 200
13817character
13818string to be produced.
13819
13820Fixed a problem in the internal string-to-buffer and buffer-to-buffer
13821copy
13822routine where the length of the resulting buffer was not truncated to the
13823new size (if the target buffer already existed).
13824
13825Code and Data Size: Current and previous core subsystem library sizes are
13826shown below. These are the code and data sizes for the acpica.lib
13827produced
13828by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13829any ACPI driver or OSPM code. The debug version of the code includes the
13830debug output trace mechanism and has a much larger code and data size.
13831Note
13832that these values will vary depending on the efficiency of the compiler
13833and
13834the compiler options used during generation.
13835
13836  Previous Release:
13837    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13838    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
13839  Current Release:
13840    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13841    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
13842
13843
138442) iASL Compiler/Disassembler:
13845
13846Implemented the new ACPI 3.0 resource template macros - DWordSpace,
13847ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
13848Includes support in the disassembler.
13849
13850Implemented support for the new (ACPI 3.0) parameter to the Register
13851macro,
13852AccessSize.
13853
13854Fixed a problem where the _HE resource name for the Interrupt macro was
13855referencing bit 0 instead of bit 1.
13856
13857Implemented check for maximum 255 interrupts in the Interrupt macro.
13858
13859Fixed a problem with the predefined resource descriptor names where
13860incorrect AML code was generated if the offset within the resource buffer
13861was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
13862but did not update the surrounding package lengths.
13863
13864Changes to the Dma macro:  All channels within the channel list must be
13865in
13866the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
13867optional (default is BusMaster).
13868
13869Implemented check for maximum 7 data bytes for the VendorShort macro.
13870
13871The ReadWrite parameter is now optional for the Memory32 and similar
13872macros.
13873
13874----------------------------------------
1387503 December 2004.  Summary of changes for version 20041203:
13876
138771) ACPI CA Core Subsystem:
13878
13879The low-level field insertion/extraction code (exfldio) has been
13880completely
13881rewritten to eliminate unnecessary complexity, bugs, and boundary
13882conditions.
13883
13884Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
13885ToDecimalString
13886operators where the input operand could be inadvertently deleted if no
13887conversion was necessary (e.g., if the input to ToInteger was an Integer
13888object.)
13889
13890Fixed a problem with the ToDecimalString and ToHexString where an
13891incorrect
13892exception code was returned if the resulting string would be > 200 chars.
13893AE_STRING_LIMIT is now returned.
13894
13895Fixed a problem with the Concatenate operator where AE_OK was always
13896returned, even if the operation failed.
13897
13898Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
13899semaphores to be allocated.
13900
13901Code and Data Size: Current and previous core subsystem library sizes are
13902shown below. These are the code and data sizes for the acpica.lib
13903produced
13904by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13905any ACPI driver or OSPM code. The debug version of the code includes the
13906debug output trace mechanism and has a much larger code and data size.
13907Note
13908that these values will vary depending on the efficiency of the compiler
13909and
13910the compiler options used during generation.
13911
13912  Previous Release:
13913    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13914    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13915  Current Release:
13916    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13917    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
13918
13919
139202) iASL Compiler/Disassembler:
13921
13922Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
13923recently introduced in 20041119.
13924
13925Fixed a problem with the ToUUID macro where the upper nybble of each
13926buffer
13927byte was inadvertently set to zero.
13928
13929----------------------------------------
1393019 November 2004.  Summary of changes for version 20041119:
13931
139321) ACPI CA Core Subsystem:
13933
13934Fixed a problem in the internal ConvertToInteger routine where new
13935integers
13936were not truncated to 32 bits for 32-bit ACPI tables. This routine
13937converts
13938buffers and strings to integers.
13939
13940Implemented support to store a value to an Index() on a String object.
13941This
13942is an ACPI 2.0 feature that had not yet been implemented.
13943
13944Implemented new behavior for storing objects to individual package
13945elements
13946(via the Index() operator). The previous behavior was to invoke the
13947implicit
13948conversion rules if an object was already present at the index.  The new
13949behavior is to simply delete any existing object and directly store the
13950new
13951object. Although the ACPI specification seems unclear on this subject,
13952other
13953ACPI implementations behave in this manner.  (This is the root of the
13954AE_BAD_HEX_CONSTANT issue.)
13955
13956Modified the RSDP memory scan mechanism to support the extended checksum
13957for
13958ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
13959RSDP signature is found with a valid checksum.
13960
13961Code and Data Size: Current and previous core subsystem library sizes are
13962shown below. These are the code and data sizes for the acpica.lib
13963produced
13964by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13965any ACPI driver or OSPM code. The debug version of the code includes the
13966debug output trace mechanism and has a much larger code and data size.
13967Note
13968that these values will vary depending on the efficiency of the compiler
13969and
13970the compiler options used during generation.
13971
13972  Previous Release:
13973    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13974    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13975  Current Release:
13976    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13977    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13978
13979
139802) iASL Compiler/Disassembler:
13981
13982Fixed a missing semicolon in the aslcompiler.y file.
13983
13984----------------------------------------
1398505 November 2004.  Summary of changes for version 20041105:
13986
139871) ACPI CA Core Subsystem:
13988
13989Implemented support for FADT revision 2.  This was an interim table
13990(between
13991ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
13992
13993Implemented optional support to allow uninitialized LocalX and ArgX
13994variables in a control method.  The variables are initialized to an
13995Integer
13996object with a value of zero.  This support is enabled by setting the
13997AcpiGbl_EnableInterpreterSlack flag to TRUE.
13998
13999Implemented support for Integer objects for the SizeOf operator.  Either
140004
14001or 8 is returned, depending on the current integer size (32-bit or 64-
14002bit,
14003depending on the parent table revision).
14004
14005Fixed a problem in the implementation of the SizeOf and ObjectType
14006operators
14007where the operand was resolved to a value too early, causing incorrect
14008return values for some objects.
14009
14010Fixed some possible memory leaks during exceptional conditions.
14011
14012Code and Data Size: Current and previous core subsystem library sizes are
14013shown below. These are the code and data sizes for the acpica.lib
14014produced
14015by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14016any ACPI driver or OSPM code. The debug version of the code includes the
14017debug output trace mechanism and has a much larger code and data size.
14018Note
14019that these values will vary depending on the efficiency of the compiler
14020and
14021the compiler options used during generation.
14022
14023  Previous Release:
14024    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14025    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
14026  Current Release:
14027    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14028    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14029
14030
140312) iASL Compiler/Disassembler:
14032
14033Implemented support for all ACPI 3.0 reserved names and methods.
14034
14035Implemented all ACPI 3.0 grammar elements in the front-end, including
14036support for semicolons.
14037
14038Implemented the ACPI 3.0 Function() and ToUUID() macros
14039
14040Fixed a problem in the disassembler where a Scope() operator would not be
14041emitted properly if the target of the scope was in another table.
14042
14043----------------------------------------
1404415 October 2004.  Summary of changes for version 20041015:
14045
14046Note:  ACPI CA is currently undergoing an in-depth and complete formal
14047evaluation to test/verify the following areas. Other suggestions are
14048welcome. This will result in an increase in the frequency of releases and
14049the number of bug fixes in the next few months.
14050  - Functional tests for all ASL/AML operators
14051  - All implicit/explicit type conversions
14052  - Bit fields and operation regions
14053  - 64-bit math support and 32-bit-only "truncated" math support
14054  - Exceptional conditions, both compiler and interpreter
14055  - Dynamic object deletion and memory leaks
14056  - ACPI 3.0 support when implemented
14057  - External interfaces to the ACPI subsystem
14058
14059
140601) ACPI CA Core Subsystem:
14061
14062Fixed two alignment issues on 64-bit platforms - within debug statements
14063in
14064AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
14065Address
14066field within the non-aligned ACPI generic address structure.
14067
14068Fixed a problem in the Increment and Decrement operators where incorrect
14069operand resolution could result in the inadvertent modification of the
14070original integer when the integer is passed into another method as an
14071argument and the arg is then incremented/decremented.
14072
14073Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
14074bit
14075BCD number were truncated during conversion.
14076
14077Fixed a problem in the ToDecimal operator where the length of the
14078resulting
14079string could be set incorrectly too long if the input operand was a
14080Buffer
14081object.
14082
14083Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
14084(0)
14085within a buffer would prematurely terminate a compare between buffer
14086objects.
14087
14088Added a check for string overflow (>200 characters as per the ACPI
14089specification) during the Concatenate operator with two string operands.
14090
14091Code and Data Size: Current and previous core subsystem library sizes are
14092shown below. These are the code and data sizes for the acpica.lib
14093produced
14094by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14095any ACPI driver or OSPM code. The debug version of the code includes the
14096debug output trace mechanism and has a much larger code and data size.
14097Note
14098that these values will vary depending on the efficiency of the compiler
14099and
14100the compiler options used during generation.
14101
14102  Previous Release:
14103    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14104    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
14105  Current Release:
14106    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14107    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
14108
14109
14110
141112) iASL Compiler/Disassembler:
14112
14113Allow the use of the ObjectType operator on uninitialized Locals and Args
14114(returns 0 as per the ACPI specification).
14115
14116Fixed a problem where the compiler would fault if there was a syntax
14117error
14118in the FieldName of all of the various CreateXXXField operators.
14119
14120Disallow the use of lower case letters within the EISAID macro, as per
14121the
14122ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
14123Where
14124U is an uppercase letter and N is a hex digit.
14125
14126
14127----------------------------------------
1412806 October 2004.  Summary of changes for version 20041006:
14129
141301) ACPI CA Core Subsystem:
14131
14132Implemented support for the ACPI 3.0 Timer operator. This ASL function
14133implements a 64-bit timer with 100 nanosecond granularity.
14134
14135Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
14136implement the ACPI 3.0 Timer operator.  This allows the host OS to
14137implement
14138the timer with the best clock available. Also, it keeps the core
14139subsystem
14140out of the clock handling business, since the host OS (usually) performs
14141this function.
14142
14143Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
14144functions use a 64-bit address which is part of the packed ACPI Generic
14145Address Structure. Since the structure is non-aligned, the alignment
14146macros
14147are now used to extract the address to a local variable before use.
14148
14149Fixed a problem where the ToInteger operator assumed all input strings
14150were
14151hexadecimal. The operator now handles both decimal strings and hex
14152strings
14153(prefixed with "0x").
14154
14155Fixed a problem where the string length in the string object created as a
14156result of the internal ConvertToString procedure could be incorrect. This
14157potentially affected all implicit conversions and also the
14158ToDecimalString
14159and ToHexString operators.
14160
14161Fixed two problems in the ToString operator. If the length parameter was
14162zero, an incorrect string object was created and the value of the input
14163length parameter was inadvertently changed from zero to Ones.
14164
14165Fixed a problem where the optional ResourceSource string in the
14166ExtendedIRQ
14167resource macro was ignored.
14168
14169Simplified the interfaces to the internal division functions, reducing
14170code
14171size and complexity.
14172
14173Code and Data Size: Current and previous core subsystem library sizes are
14174shown below. These are the code and data sizes for the acpica.lib
14175produced
14176by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14177any ACPI driver or OSPM code. The debug version of the code includes the
14178debug output trace mechanism and has a much larger code and data size.
14179Note
14180that these values will vary depending on the efficiency of the compiler
14181and
14182the compiler options used during generation.
14183
14184  Previous Release:
14185    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
14186    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
14187  Current Release:
14188    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14189    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
14190
14191
141922) iASL Compiler/Disassembler:
14193
14194Implemented support for the ACPI 3.0 Timer operator.
14195
14196Fixed a problem where the Default() operator was inadvertently ignored in
14197a
14198Switch/Case block.  This was a problem in the translation of the Switch
14199statement to If...Else pairs.
14200
14201Added support to allow a standalone Return operator, with no parentheses
14202(or
14203operands).
14204
14205Fixed a problem with code generation for the ElseIf operator where the
14206translated Else...If parse tree was improperly constructed leading to the
14207loss of some code.
14208
14209----------------------------------------
1421022 September 2004.  Summary of changes for version 20040922:
14211
142121) ACPI CA Core Subsystem:
14213
14214Fixed a problem with the implementation of the LNot() operator where
14215"Ones"
14216was not returned for the TRUE case. Changed the code to return Ones
14217instead
14218of (!Arg) which was usually 1. This change affects iASL constant folding
14219for
14220this operator also.
14221
14222Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
14223not
14224initialized properly -- Now zero the entire buffer in this case where the
14225buffer already exists.
14226
14227Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
14228Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
14229related code considerably. This will require changes/updates to all OS
14230interface layers (OSLs.)
14231
14232Implemented a new external interface, AcpiInstallExceptionHandler, to
14233allow
14234a system exception handler to be installed. This handler is invoked upon
14235any
14236run-time exception that occurs during control method execution.
14237
14238Added support for the DSDT in AcpiTbFindTable. This allows the
14239DataTableRegion() operator to access the local copy of the DSDT.
14240
14241Code and Data Size: Current and previous core subsystem library sizes are
14242shown below. These are the code and data sizes for the acpica.lib
14243produced
14244by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14245any ACPI driver or OSPM code. The debug version of the code includes the
14246debug output trace mechanism and has a much larger code and data size.
14247Note
14248that these values will vary depending on the efficiency of the compiler
14249and
14250the compiler options used during generation.
14251
14252  Previous Release:
14253    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
14254    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
14255  Current Release:
14256    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
14257    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
14258
14259
142602) iASL Compiler/Disassembler:
14261
14262Fixed a problem with constant folding and the LNot operator. LNot was
14263returning 1 in the TRUE case, not Ones as per the ACPI specification.
14264This
14265could result in the generation of an incorrect folded/reduced constant.
14266
14267End-Of-File is now allowed within a "//"-style comment.  A parse error no
14268longer occurs if such a comment is at the very end of the input ASL
14269source
14270file.
14271
14272Implemented the "-r" option to override the Revision in the table header.
14273The initial use of this option will be to simplify the evaluation of the
14274AML
14275interpreter by allowing a single ASL source module to be compiled for
14276either
1427732-bit or 64-bit integers.
14278
14279
14280----------------------------------------
1428127 August 2004.  Summary of changes for version 20040827:
14282
142831) ACPI CA Core Subsystem:
14284
14285- Implemented support for implicit object conversion in the non-numeric
14286logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
14287and
14288LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
14289the second operand is implicitly converted on the fly to match the type
14290of
14291the first operand.  For example:
14292
14293    LEqual (Source1, Source2)
14294
14295Source1 and Source2 must each evaluate to an integer, a string, or a
14296buffer.
14297The data type of Source1 dictates the required type of Source2. Source2
14298is
14299implicitly converted if necessary to match the type of Source1.
14300
14301- Updated and corrected the behavior of the string conversion support.
14302The
14303rules concerning conversion of buffers to strings (according to the ACPI
14304specification) are as follows:
14305
14306ToDecimalString - explicit byte-wise conversion of buffer to string of
14307decimal values (0-255) separated by commas. ToHexString - explicit byte-
14308wise
14309conversion of buffer to string of hex values (0-FF) separated by commas.
14310ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
14311byte
14312copy with no transform except NULL terminated. Any other implicit buffer-
14313to-
14314string conversion - byte-wise conversion of buffer to string of hex
14315values
14316(0-FF) separated by spaces.
14317
14318- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
14319
14320- Fixed a problem in AcpiNsGetPathnameLength where the returned length
14321was
14322one byte too short in the case of a node in the root scope.  This could
14323cause a fault during debug output.
14324
14325- Code and Data Size: Current and previous core subsystem library sizes
14326are
14327shown below.  These are the code and data sizes for the acpica.lib
14328produced
14329by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14330any ACPI driver or OSPM code.  The debug version of the code includes the
14331debug output trace mechanism and has a much larger code and data size.
14332Note
14333that these values will vary depending on the efficiency of the compiler
14334and
14335the compiler options used during generation.
14336
14337  Previous Release:
14338    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
14339    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
14340  Current Release:
14341    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
14342    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
14343
14344
143452) iASL Compiler/Disassembler:
14346
14347- Fixed a Linux generation error.
14348
14349
14350----------------------------------------
1435116 August 2004.  Summary of changes for version 20040816:
14352
143531) ACPI CA Core Subsystem:
14354
14355Designed and implemented support within the AML interpreter for the so-
14356called "implicit return".  This support returns the result of the last
14357ASL
14358operation within a control method, in the absence of an explicit Return()
14359operator.  A few machines depend on this behavior, even though it is not
14360explicitly supported by the ASL language.  It is optional support that
14361can
14362be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
14363
14364Removed support for the PCI_Config address space from the internal low
14365level
14366hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
14367support was not used internally, and would not work correctly anyway
14368because
14369the PCI bus number and segment number were not supported.  There are
14370separate interfaces for PCI configuration space access because of the
14371unique
14372interface.
14373
14374Code and Data Size: Current and previous core subsystem library sizes are
14375shown below.  These are the code and data sizes for the acpica.lib
14376produced
14377by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14378any ACPI driver or OSPM code.  The debug version of the code includes the
14379debug output trace mechanism and has a much larger code and data size.
14380Note
14381that these values will vary depending on the efficiency of the compiler
14382and
14383the compiler options used during generation.
14384
14385  Previous Release:
14386    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14387    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
14388  Current Release:
14389    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
14390    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
14391
14392
143932) iASL Compiler/Disassembler:
14394
14395Fixed a problem where constants in ASL expressions at the root level (not
14396within a control method) could be inadvertently truncated during code
14397generation.  This problem was introduced in the 20040715 release.
14398
14399
14400----------------------------------------
1440115 July 2004.  Summary of changes for version 20040715:
14402
144031) ACPI CA Core Subsystem:
14404
14405Restructured the internal HW GPE interfaces to pass/track the current
14406state
14407of interrupts (enabled/disabled) in order to avoid possible deadlock and
14408increase flexibility of the interfaces.
14409
14410Implemented a "lexicographical compare" for String and Buffer objects
14411within
14412the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
14413-
14414as per further clarification to the ACPI specification.  Behavior is
14415similar
14416to C library "strcmp".
14417
14418Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
14419external function.  In the 32-bit non-debug case, the stack use has been
14420reduced from 168 bytes to 32 bytes.
14421
14422Deployed a new run-time configuration flag,
14423AcpiGbl_EnableInterpreterSlack,
14424whose purpose is to allow the AML interpreter to forgive certain bad AML
14425constructs.  Default setting is FALSE.
14426
14427Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
14428IO
14429support code.  If enabled, it allows field access to go beyond the end of
14430a
14431region definition if the field is within the region length rounded up to
14432the
14433next access width boundary (a common coding error.)
14434
14435Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
14436ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
14437these
14438symbols are lowercase by the latest version of the AcpiSrc tool.
14439
14440The prototypes for the PCI interfaces in acpiosxf.h have been updated to
14441rename "Register" to simply "Reg" to prevent certain compilers from
14442complaining.
14443
14444Code and Data Size: Current and previous core subsystem library sizes are
14445shown below.  These are the code and data sizes for the acpica.lib
14446produced
14447by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14448any ACPI driver or OSPM code.  The debug version of the code includes the
14449debug output trace mechanism and has a much larger code and data size.
14450Note
14451that these values will vary depending on the efficiency of the compiler
14452and
14453the compiler options used during generation.
14454
14455  Previous Release:
14456    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14457    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
14458  Current Release:
14459    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14460    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
14461
14462
144632) iASL Compiler/Disassembler:
14464
14465Implemented full support for Package objects within the Case() operator.
14466Note: The Break() operator is currently not supported within Case blocks
14467(TermLists) as there is some question about backward compatibility with
14468ACPI
144691.0 interpreters.
14470
14471
14472Fixed a problem where complex terms were not supported properly within
14473the
14474Switch() operator.
14475
14476Eliminated extraneous warning for compiler-emitted reserved names of the
14477form "_T_x".  (Used in Switch/Case operators.)
14478
14479Eliminated optimization messages for "_T_x" objects and small constants
14480within the DefinitionBlock operator.
14481
14482
14483----------------------------------------
1448415 June 2004.  Summary of changes for version 20040615:
14485
144861) ACPI CA Core Subsystem:
14487
14488Implemented support for Buffer and String objects (as per ACPI 2.0) for
14489the
14490following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
14491LLessEqual.
14492
14493All directory names in the entire source package are lower case, as they
14494were in earlier releases.
14495
14496Implemented "Disassemble" command in the AML debugger that will
14497disassemble
14498a single control method.
14499
14500Code and Data Size: Current and previous core subsystem library sizes are
14501shown below.  These are the code and data sizes for the acpica.lib
14502produced
14503by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14504any ACPI driver or OSPM code.  The debug version of the code includes the
14505debug output trace mechanism and has a much larger code and data size.
14506Note
14507that these values will vary depending on the efficiency of the compiler
14508and
14509the compiler options used during generation.
14510
14511  Previous Release:
14512    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
14513    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
14514
14515  Current Release:
14516    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14517    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
14518
14519
145202) iASL Compiler/Disassembler:
14521
14522Implemented support for Buffer and String objects (as per ACPI 2.0) for
14523the
14524following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
14525LLessEqual.
14526
14527All directory names in the entire source package are lower case, as they
14528were in earlier releases.
14529
14530Fixed a fault when using the -g or -d<nofilename> options if the FADT was
14531not found.
14532
14533Fixed an issue with the Windows version of the compiler where later
14534versions
14535of Windows place the FADT in the registry under the name "FADT" and not
14536"FACP" as earlier versions did.  This applies when using the -g or -
14537d<nofilename> options.  The compiler now looks for both strings as
14538necessary.
14539
14540Fixed a problem with compiler namepath optimization where a namepath
14541within
14542the Scope() operator could not be optimized if the namepath was a subpath
14543of
14544the current scope path.
14545
14546----------------------------------------
1454727 May 2004.  Summary of changes for version 20040527:
14548
145491) ACPI CA Core Subsystem:
14550
14551Completed a new design and implementation for EBDA (Extended BIOS Data
14552Area)
14553support in the RSDP scan code.  The original code improperly scanned for
14554the
14555EBDA by simply scanning from memory location 0 to 0x400.  The correct
14556method
14557is to first obtain the EBDA pointer from within the BIOS data area, then
14558scan 1K of memory starting at the EBDA pointer.  There appear to be few
14559if
14560any machines that place the RSDP in the EBDA, however.
14561
14562Integrated a fix for a possible fault during evaluation of BufferField
14563arguments.  Obsolete code that was causing the problem was removed.
14564
14565Found and fixed a problem in the Field Support Code where data could be
14566corrupted on a bit field read that starts on an aligned boundary but does
14567not end on an aligned boundary.  Merged the read/write "datum length"
14568calculation code into a common procedure.
14569
14570Rolled in a couple of changes to the FreeBSD-specific header.
14571
14572
14573Code and Data Size: Current and previous core subsystem library sizes are
14574shown below.  These are the code and data sizes for the acpica.lib
14575produced
14576by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14577any ACPI driver or OSPM code.  The debug version of the code includes the
14578debug output trace mechanism and has a much larger code and data size.
14579Note
14580that these values will vary depending on the efficiency of the compiler
14581and
14582the compiler options used during generation.
14583
14584  Previous Release:
14585    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14586    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
14587  Current Release:
14588    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
14589    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
14590
14591
145922) iASL Compiler/Disassembler:
14593
14594Fixed a generation warning produced by some overly-verbose compilers for
14595a
1459664-bit constant.
14597
14598----------------------------------------
1459914 May 2004.  Summary of changes for version 20040514:
14600
146011) ACPI CA Core Subsystem:
14602
14603Fixed a problem where hardware GPE enable bits sometimes not set properly
14604during and after GPE method execution.  Result of 04/27 changes.
14605
14606Removed extra "clear all GPEs" when sleeping/waking.
14607
14608Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
14609AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
14610to
14611the new AcpiEv* calls as appropriate.
14612
14613ACPI_OS_NAME was removed from the OS-specific headers.  The default name
14614is
14615now "Microsoft Windows NT" for maximum compatibility.  However this can
14616be
14617changed by modifying the acconfig.h file.
14618
14619Allow a single invocation of AcpiInstallNotifyHandler for a handler that
14620traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
14621
14622Run _INI methods on ThermalZone objects.  This is against the ACPI
14623specification, but there is apparently ASL code in the field that has
14624these
14625_INI methods, and apparently "other" AML interpreters execute them.
14626
14627Performed a full 16/32/64 bit lint that resulted in some small changes.
14628
14629Added a sleep simulation command to the AML debugger to test sleep code.
14630
14631Code and Data Size: Current and previous core subsystem library sizes are
14632shown below.  These are the code and data sizes for the acpica.lib
14633produced
14634by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14635any ACPI driver or OSPM code.  The debug version of the code includes the
14636debug output trace mechanism and has a much larger code and data size.
14637Note
14638that these values will vary depending on the efficiency of the compiler
14639and
14640the compiler options used during generation.
14641
14642  Previous Release:
14643    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14644    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
14645  Current Release:
14646    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14647    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
14648
14649----------------------------------------
1465027 April 2004.  Summary of changes for version 20040427:
14651
146521) ACPI CA Core Subsystem:
14653
14654Completed a major overhaul of the GPE handling within ACPI CA.  There are
14655now three types of GPEs:  wake-only, runtime-only, and combination
14656wake/run.
14657The only GPEs allowed to be combination wake/run are for button-style
14658devices such as a control-method power button, control-method sleep
14659button,
14660or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
14661not
14662referenced by any _PRW methods are marked for "runtime" and hardware
14663enabled.  Any GPE that is referenced by a _PRW method is marked for
14664"wake"
14665(and disabled at runtime).  However, at sleep time, only those GPEs that
14666have been specifically enabled for wake via the AcpiEnableGpe interface
14667will
14668actually be hardware enabled.
14669
14670A new external interface has been added, AcpiSetGpeType(), that is meant
14671to
14672be used by device drivers to force a GPE to a particular type.  It will
14673be
14674especially useful for the drivers for the button devices mentioned above.
14675
14676Completed restructuring of the ACPI CA initialization sequence so that
14677default operation region handlers are installed before GPEs are
14678initialized
14679and the _PRW methods are executed.  This will prevent errors when the
14680_PRW
14681methods attempt to access system memory or I/O space.
14682
14683GPE enable/disable no longer reads the GPE enable register.  We now keep
14684the
14685enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
14686thus no longer depend on the hardware to maintain these bits.
14687
14688Always clear the wake status and fixed/GPE status bits before sleep, even
14689for state S5.
14690
14691Improved the AML debugger output for displaying the GPE blocks and their
14692current status.
14693
14694Added new strings for the _OSI method, of the form "Windows 2001 SPx"
14695where
14696x = 0,1,2,3,4.
14697
14698Fixed a problem where the physical address was incorrectly calculated
14699when
14700the Load() operator was used to directly load from an Operation Region
14701(vs.
14702loading from a Field object.)  Also added check for minimum table length
14703for
14704this case.
14705
14706Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
14707mutex release.
14708
14709Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
14710consistency with the other fields returned.
14711
14712Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
14713structure for each GPE in the system, so the size of this structure is
14714important.
14715
14716CPU stack requirement reduction:  Cleaned up the method execution and
14717object
14718evaluation paths so that now a parameter structure is passed, instead of
14719copying the various method parameters over and over again.
14720
14721In evregion.c:  Correctly exit and reenter the interpreter region if and
14722only if dispatching an operation region request to a user-installed
14723handler.
14724Do not exit/reenter when dispatching to a default handler (e.g., default
14725system memory or I/O handlers)
14726
14727
14728Notes for updating drivers for the new GPE support.  The following
14729changes
14730must be made to ACPI-related device drivers that are attached to one or
14731more
14732GPEs: (This information will be added to the ACPI CA Programmer
14733Reference.)
14734
147351) AcpiInstallGpeHandler no longer automatically enables the GPE, you
14736must
14737explicitly call AcpiEnableGpe.
147382) There is a new interface called AcpiSetGpeType. This should be called
14739before enabling the GPE.  Also, this interface will automatically disable
14740the GPE if it is currently enabled.
147413) AcpiEnableGpe no longer supports a GPE type flag.
14742
14743Specific drivers that must be changed:
147441) EC driver:
14745    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
14746AeGpeHandler, NULL);
14747    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
14748    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
14749
147502) Button Drivers (Power, Lid, Sleep):
14751Run _PRW method under parent device
14752If _PRW exists: /* This is a control-method button */
14753    Extract GPE number and possibly GpeDevice
14754    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
14755    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
14756
14757For all other devices that have _PRWs, we automatically set the GPE type
14758to
14759ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
14760This
14761must be done on a selective basis, usually requiring some kind of user
14762app
14763to allow the user to pick the wake devices.
14764
14765
14766Code and Data Size: Current and previous core subsystem library sizes are
14767shown below.  These are the code and data sizes for the acpica.lib
14768produced
14769by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14770any ACPI driver or OSPM code.  The debug version of the code includes the
14771debug output trace mechanism and has a much larger code and data size.
14772Note
14773that these values will vary depending on the efficiency of the compiler
14774and
14775the compiler options used during generation.
14776
14777  Previous Release:
14778    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
14779    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
14780  Current Release:
14781
14782    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14783    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
14784
14785
14786
14787----------------------------------------
1478802 April 2004.  Summary of changes for version 20040402:
14789
147901) ACPI CA Core Subsystem:
14791
14792Fixed an interpreter problem where an indirect store through an ArgX
14793parameter was incorrectly applying the "implicit conversion rules" during
14794the store.  From the ACPI specification: "If the target is a method local
14795or
14796argument (LocalX or ArgX), no conversion is performed and the result is
14797stored directly to the target".  The new behavior is to disable implicit
14798conversion during ALL stores to an ArgX.
14799
14800Changed the behavior of the _PRW method scan to ignore any and all errors
14801returned by a given _PRW.  This prevents the scan from aborting from the
14802failure of any single _PRW.
14803
14804Moved the runtime configuration parameters from the global init procedure
14805to
14806static variables in acglobal.h.  This will allow the host to override the
14807default values easily.
14808
14809Code and Data Size: Current and previous core subsystem library sizes are
14810shown below.  These are the code and data sizes for the acpica.lib
14811produced
14812by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14813any ACPI driver or OSPM code.  The debug version of the code includes the
14814debug output trace mechanism and has a much larger code and data size.
14815Note
14816that these values will vary depending on the efficiency of the compiler
14817and
14818the compiler options used during generation.
14819
14820  Previous Release:
14821    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
14822    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
14823  Current Release:
14824    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
14825    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
14826
14827
148282) iASL Compiler/Disassembler:
14829
14830iASL now fully disassembles SSDTs.  However, External() statements are
14831not
14832generated automatically for unresolved symbols at this time.  This is a
14833planned feature for future implementation.
14834
14835Fixed a scoping problem in the disassembler that occurs when the type of
14836the
14837target of a Scope() operator is overridden.  This problem caused an
14838incorrectly nested internal namespace to be constructed.
14839
14840Any warnings or errors that are emitted during disassembly are now
14841commented
14842out automatically so that the resulting file can be recompiled without
14843any
14844hand editing.
14845
14846----------------------------------------
1484726 March 2004.  Summary of changes for version 20040326:
14848
148491) ACPI CA Core Subsystem:
14850
14851Implemented support for "wake" GPEs via interaction between GPEs and the
14852_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
14853identified as a WAKE GPE and by default will no longer be enabled at
14854runtime.  Previously, we were blindly enabling all GPEs with a
14855corresponding
14856_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
14857We
14858believe this has been the cause of thousands of "spurious" GPEs on some
14859systems.
14860
14861This new GPE behavior is can be reverted to the original behavior (enable
14862ALL GPEs at runtime) via a runtime flag.
14863
14864Fixed a problem where aliased control methods could not access objects
14865properly.  The proper scope within the namespace was not initialized
14866(transferred to the target of the aliased method) before executing the
14867target method.
14868
14869Fixed a potential race condition on internal object deletion on the
14870return
14871object in AcpiEvaluateObject.
14872
14873Integrated a fix for resource descriptors where both _MEM and _MTP were
14874being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
14875wide, 0x0F instead of 0x03.)
14876
14877Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
14878preventing
14879a
14880fault in some cases.
14881
14882Updated Notify() values for debug statements in evmisc.c
14883
14884Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
14885
14886Code and Data Size: Current and previous core subsystem library sizes are
14887shown below.  These are the code and data sizes for the acpica.lib
14888produced
14889by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14890any ACPI driver or OSPM code.  The debug version of the code includes the
14891debug output trace mechanism and has a much larger code and data size.
14892Note
14893that these values will vary depending on the efficiency of the compiler
14894and
14895the compiler options used during generation.
14896
14897  Previous Release:
14898
14899    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
14900    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
14901  Current Release:
14902    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
14903    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
14904
14905----------------------------------------
1490611 March 2004.  Summary of changes for version 20040311:
14907
149081) ACPI CA Core Subsystem:
14909
14910Fixed a problem where errors occurring during the parse phase of control
14911method execution did not abort cleanly.  For example, objects created and
14912installed in the namespace were not deleted.  This caused all subsequent
14913invocations of the method to return the AE_ALREADY_EXISTS exception.
14914
14915Implemented a mechanism to force a control method to "Serialized"
14916execution
14917if the method attempts to create namespace objects. (The root of the
14918AE_ALREADY_EXISTS problem.)
14919
14920Implemented support for the predefined _OSI "internal" control method.
14921Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
14922and
14923"Windows 2001.1", and can be easily upgraded for new strings as
14924necessary.
14925This feature will allow "other" operating systems to execute the fully
14926tested, "Windows" code path through the ASL code
14927
14928Global Lock Support:  Now allows multiple acquires and releases with any
14929internal thread.  Removed concept of "owning thread" for this special
14930mutex.
14931
14932Fixed two functions that were inappropriately declaring large objects on
14933the
14934CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
14935during
14936method execution considerably.
14937
14938Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
14939S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
14940
14941Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
14942defined on the machine.
14943
14944Implemented two runtime options:  One to force all control method
14945execution
14946to "Serialized" to mimic Windows behavior, another to disable _OSI
14947support
14948if it causes problems on a given machine.
14949
14950Code and Data Size: Current and previous core subsystem library sizes are
14951shown below.  These are the code and data sizes for the acpica.lib
14952produced
14953by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14954any ACPI driver or OSPM code.  The debug version of the code includes the
14955debug output trace mechanism and has a much larger code and data size.
14956Note
14957that these values will vary depending on the efficiency of the compiler
14958and
14959the compiler options used during generation.
14960
14961  Previous Release:
14962    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
14963    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
14964  Current Release:
14965    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
14966    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
14967
149682) iASL Compiler/Disassembler:
14969
14970Fixed an array size problem for FreeBSD that would cause the compiler to
14971fault.
14972
14973----------------------------------------
1497420 February 2004.  Summary of changes for version 20040220:
14975
14976
149771) ACPI CA Core Subsystem:
14978
14979Implemented execution of _SxD methods for Device objects in the
14980GetObjectInfo interface.
14981
14982Fixed calls to _SST method to pass the correct arguments.
14983
14984Added a call to _SST on wake to restore to "working" state.
14985
14986Check for End-Of-Buffer failure case in the WalkResources interface.
14987
14988Integrated fix for 64-bit alignment issue in acglobal.h by moving two
14989structures to the beginning of the file.
14990
14991After wake, clear GPE status register(s) before enabling GPEs.
14992
14993After wake, clear/enable power button.  (Perhaps we should clear/enable
14994all
14995fixed events upon wake.)
14996
14997Fixed a couple of possible memory leaks in the Namespace manager.
14998
14999Integrated latest acnetbsd.h file.
15000
15001----------------------------------------
1500211 February 2004.  Summary of changes for version 20040211:
15003
15004
150051) ACPI CA Core Subsystem:
15006
15007Completed investigation and implementation of the call-by-reference
15008mechanism for control method arguments.
15009
15010Fixed a problem where a store of an object into an indexed package could
15011fail if the store occurs within a different method than the method that
15012created the package.
15013
15014Fixed a problem where the ToDecimal operator could return incorrect
15015results.
15016
15017Fixed a problem where the CopyObject operator could fail on some of the
15018more
15019obscure objects (e.g., Reference objects.)
15020
15021Improved the output of the Debug object to display buffer, package, and
15022index objects.
15023
15024Fixed a problem where constructs of the form "RefOf (ArgX)" did not
15025return
15026the expected result.
15027
15028Added permanent ACPI_REPORT_ERROR macros for all instances of the
15029ACPI_AML_INTERNAL exception.
15030
15031Integrated latest version of acfreebsd.h
15032
15033----------------------------------------
1503416 January 2004.  Summary of changes for version 20040116:
15035
15036The purpose of this release is primarily to update the copyright years in
15037each module, thus causing a huge number of diffs.  There are a few small
15038functional changes, however.
15039
150401) ACPI CA Core Subsystem:
15041
15042Improved error messages when there is a problem finding one or more of
15043the
15044required base ACPI tables
15045
15046Reintroduced the definition of APIC_HEADER in actbl.h
15047
15048Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
15049
15050Removed extraneous reference to NewObj in dsmthdat.c
15051
150522) iASL compiler
15053
15054Fixed a problem introduced in December that disabled the correct
15055disassembly
15056of Resource Templates
15057
15058
15059----------------------------------------
1506003 December 2003.  Summary of changes for version 20031203:
15061
150621) ACPI CA Core Subsystem:
15063
15064Changed the initialization of Operation Regions during subsystem
15065init to perform two entire walks of the ACPI namespace; The first
15066to initialize the regions themselves, the second to execute the
15067_REG methods.  This fixed some interdependencies across _REG
15068methods found on some machines.
15069
15070Fixed a problem where a Store(Local0, Local1) could simply update
15071the object reference count, and not create a new copy of the
15072object if the Local1 is uninitialized.
15073
15074Implemented support for the _SST reserved method during sleep
15075transitions.
15076
15077Implemented support to clear the SLP_TYP and SLP_EN bits when
15078waking up, this is apparently required by some machines.
15079
15080When sleeping, clear the wake status only if SleepState is not S5.
15081
15082Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
15083pointer arithmetic advanced a string pointer too far.
15084
15085Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
15086could be returned if the requested table has not been loaded.
15087
15088Within the support for IRQ resources, restructured the handling of
15089the active and edge/level bits.
15090
15091Fixed a few problems in AcpiPsxExecute() where memory could be
15092leaked under certain error conditions.
15093
15094Improved error messages for the cases where the ACPI mode could
15095not be entered.
15096
15097Code and Data Size: Current and previous core subsystem library
15098sizes are shown below.  These are the code and data sizes for the
15099acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15100these values do not include any ACPI driver or OSPM code.  The
15101debug version of the code includes the debug output trace
15102mechanism and has a much larger code and data size.  Note that
15103these values will vary depending on the efficiency of the compiler
15104and the compiler options used during generation.
15105
15106  Previous Release (20031029):
15107    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
15108    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
15109  Current Release:
15110    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
15111    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
15112
151132) iASL Compiler/Disassembler:
15114
15115Implemented a fix for the iASL disassembler where a bad index was
15116generated.  This was most noticeable on 64-bit platforms
15117
15118
15119----------------------------------------
1512029 October 2003.  Summary of changes for version 20031029:
15121
151221) ACPI CA Core Subsystem:
15123
15124
15125Fixed a problem where a level-triggered GPE with an associated
15126_Lxx control method was incorrectly cleared twice.
15127
15128Fixed a problem with the Field support code where an access can
15129occur beyond the end-of-region if the field is non-aligned but
15130extends to the very end of the parent region (resulted in an
15131AE_AML_REGION_LIMIT exception.)
15132
15133Fixed a problem with ACPI Fixed Events where an RT Clock handler
15134would not get invoked on an RTC event.  The RTC event bitmasks for
15135the PM1 registers were not being initialized properly.
15136
15137Implemented support for executing _STA and _INI methods for
15138Processor objects.  Although this is currently not part of the
15139ACPI specification, there is existing ASL code that depends on the
15140init-time execution of these methods.
15141
15142Implemented and deployed a GetDescriptorName function to decode
15143the various types of internal descriptors.  Guards against null
15144descriptors during debug output also.
15145
15146Implemented and deployed a GetNodeName function to extract the 4-
15147character namespace node name.  This function simplifies the debug
15148and error output, as well as guarding against null pointers during
15149output.
15150
15151Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
15152simplify the debug and error output of 64-bit integers.  This
15153macro replaces the HIDWORD and LODWORD macros for dumping these
15154integers.
15155
15156Updated the implementation of the Stall() operator to only call
15157AcpiOsStall(), and also return an error if the operand is larger
15158than 255.  This preserves the required behavior of not
15159relinquishing the processor, as would happen if AcpiOsSleep() was
15160called for "long stalls".
15161
15162Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
15163initialized are now treated as NOOPs.
15164
15165Cleaned up a handful of warnings during 64-bit generation.
15166
15167Fixed a reported error where and incorrect GPE number was passed
15168to the GPE dispatch handler.  This value is only used for error
15169output, however.  Used this opportunity to clean up and streamline
15170the GPE dispatch code.
15171
15172Code and Data Size: Current and previous core subsystem library
15173sizes are shown below.  These are the code and data sizes for the
15174acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15175these values do not include any ACPI driver or OSPM code.  The
15176
15177debug version of the code includes the debug output trace
15178mechanism and has a much larger code and data size.  Note that
15179these values will vary depending on the efficiency of the compiler
15180and the compiler options used during generation.
15181
15182  Previous Release (20031002):
15183    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
15184    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
15185  Current Release:
15186    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
15187    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
15188
15189
151902) iASL Compiler/Disassembler:
15191
15192Updated the iASL compiler to return an error if the operand to the
15193Stall() operator is larger than 255.
15194
15195
15196----------------------------------------
1519702 October 2003.  Summary of changes for version 20031002:
15198
15199
152001) ACPI CA Core Subsystem:
15201
15202Fixed a problem with Index Fields where the index was not
15203incremented for fields that require multiple writes to the
15204index/data registers (Fields that are wider than the data
15205register.)
15206
15207Fixed a problem with all Field objects where a write could go
15208beyond the end-of-field if the field was larger than the access
15209granularity and therefore required multiple writes to complete the
15210request.  An extra write beyond the end of the field could happen
15211inadvertently.
15212
15213Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
15214would incorrectly be returned if the width of the Data Register
15215was larger than the specified field access width.
15216
15217Completed fixes for LoadTable() and Unload() and verified their
15218operation.  Implemented full support for the "DdbHandle" object
15219throughout the ACPI CA subsystem.
15220
15221Implemented full support for the MADT and ECDT tables in the ACPI
15222CA header files.  Even though these tables are not directly
15223consumed by ACPI CA, the header definitions are useful for ACPI
15224device drivers.
15225
15226Integrated resource descriptor fixes posted to the Linux ACPI
15227list.  This included checks for minimum descriptor length, and
15228support for trailing NULL strings within descriptors that have
15229optional string elements.
15230
15231Code and Data Size: Current and previous core subsystem library
15232sizes are shown below.  These are the code and data sizes for the
15233acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15234these values do not include any ACPI driver or OSPM code.  The
15235debug version of the code includes the debug output trace
15236mechanism and has a much larger code and data size.  Note that
15237these values will vary depending on the efficiency of the compiler
15238and the compiler options used during generation.
15239
15240  Previous Release (20030918):
15241    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
15242    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
15243  Current Release:
15244    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
15245    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
15246
15247
152482) iASL Compiler:
15249
15250Implemented detection of non-ASCII characters within the input
15251source ASL file.  This catches attempts to compile binary (AML)
15252files early in the compile, with an informative error message.
15253
15254Fixed a problem where the disassembler would fault if the output
15255filename could not be generated or if the output file could not be
15256opened.
15257
15258----------------------------------------
1525918 September 2003.  Summary of changes for version 20030918:
15260
15261
152621) ACPI CA Core Subsystem:
15263
15264Found and fixed a longstanding problem with the late execution of
15265the various deferred AML opcodes (such as Operation Regions,
15266Buffer Fields, Buffers, and Packages).  If the name string
15267specified for the name of the new object placed the object in a
15268scope other than the current scope, the initialization/execution
15269of the opcode failed.  The solution to this problem was to
15270implement a mechanism where the late execution of such opcodes
15271does not attempt to lookup/create the name a second time in an
15272incorrect scope.  This fixes the "region size computed
15273incorrectly" problem.
15274
15275Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
15276Global Lock AE_BAD_PARAMETER error.
15277
15278Fixed several 64-bit issues with prototypes, casting and data
15279types.
15280
15281Removed duplicate prototype from acdisasm.h
15282
15283Fixed an issue involving EC Operation Region Detach (Shaohua Li)
15284
15285Code and Data Size: Current and previous core subsystem library
15286sizes are shown below.  These are the code and data sizes for the
15287acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15288these values do not include any ACPI driver or OSPM code.  The
15289debug version of the code includes the debug output trace
15290mechanism and has a much larger code and data size.  Note that
15291these values will vary depending on the efficiency of the compiler
15292and the compiler options used during generation.
15293
15294  Previous Release:
15295
15296    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
15297    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
15298  Current Release:
15299    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
15300    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
15301
15302
153032) Linux:
15304
15305Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
15306correct sleep time in seconds.
15307
15308----------------------------------------
1530914 July 2003.  Summary of changes for version 20030619:
15310
153111) ACPI CA Core Subsystem:
15312
15313Parse SSDTs in order discovered, as opposed to reverse order
15314(Hrvoje Habjanic)
15315
15316Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
15317Klausner,
15318   Nate Lawson)
15319
15320
153212) Linux:
15322
15323Dynamically allocate SDT list (suggested by Andi Kleen)
15324
15325proc function return value cleanups (Andi Kleen)
15326
15327Correctly handle NMI watchdog during long stalls (Andrew Morton)
15328
15329Make it so acpismp=force works (reported by Andrew Morton)
15330
15331
15332----------------------------------------
1533319 June 2003.  Summary of changes for version 20030619:
15334
153351) ACPI CA Core Subsystem:
15336
15337Fix To/FromBCD, eliminating the need for an arch-specific #define.
15338
15339Do not acquire a semaphore in the S5 shutdown path.
15340
15341Fix ex_digits_needed for 0. (Takayoshi Kochi)
15342
15343Fix sleep/stall code reversal. (Andi Kleen)
15344
15345Revert a change having to do with control method calling
15346semantics.
15347
153482) Linux:
15349
15350acpiphp update (Takayoshi Kochi)
15351
15352Export acpi_disabled for sonypi (Stelian Pop)
15353
15354Mention acpismp=force in config help
15355
15356Re-add acpitable.c and acpismp=force. This improves backwards
15357
15358compatibility and also cleans up the code to a significant degree.
15359
15360Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
15361
15362----------------------------------------
1536322 May 2003.  Summary of changes for version 20030522:
15364
153651) ACPI CA Core Subsystem:
15366
15367Found and fixed a reported problem where an AE_NOT_FOUND error
15368occurred occasionally during _BST evaluation.  This turned out to
15369be an Owner ID allocation issue where a called method did not get
15370a new ID assigned to it.  Eventually, (after 64k calls), the Owner
15371ID UINT16 would wraparound so that the ID would be the same as the
15372caller's and the called method would delete the caller's
15373namespace.
15374
15375Implemented extended error reporting for control methods that are
15376aborted due to a run-time exception.  Output includes the exact
15377AML instruction that caused the method abort, a dump of the method
15378locals and arguments at the time of the abort, and a trace of all
15379nested control method calls.
15380
15381Modified the interpreter to allow the creation of buffers of zero
15382length from the AML code. Implemented new code to ensure that no
15383attempt is made to actually allocate a memory buffer (of length
15384zero) - instead, a simple buffer object with a NULL buffer pointer
15385and length zero is created.  A warning is no longer issued when
15386the AML attempts to create a zero-length buffer.
15387
15388Implemented a workaround for the "leading asterisk issue" in
15389_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
15390asterisk is automatically removed if present in any HID, UID, or
15391CID strings.  The iASL compiler will still flag this asterisk as
15392an error, however.
15393
15394Implemented full support for _CID methods that return a package of
15395multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
15396now additionally returns a device _CID list if present.  This
15397required a change to the external interface in order to pass an
15398ACPI_BUFFER object as a parameter since the _CID list is of
15399variable length.
15400
15401Fixed a problem with the new AE_SAME_HANDLER exception where
15402handler initialization code did not know about this exception.
15403
15404Code and Data Size: Current and previous core subsystem library
15405sizes are shown below.  These are the code and data sizes for the
15406acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15407these values do not include any ACPI driver or OSPM code.  The
15408debug version of the code includes the debug output trace
15409mechanism and has a much larger code and data size.  Note that
15410these values will vary depending on the efficiency of the compiler
15411and the compiler options used during generation.
15412
15413  Previous Release (20030509):
15414    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
15415    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
15416  Current Release:
15417    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
15418    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
15419
15420
154212) Linux:
15422
15423Fixed a bug in which we would reinitialize the ACPI interrupt
15424after it was already working, thus disabling all ACPI and the IRQs
15425for any other device sharing the interrupt. (Thanks to Stian
15426Jordet)
15427
15428Toshiba driver update (John Belmonte)
15429
15430Return only 0 or 1 for our interrupt handler status (Andrew
15431Morton)
15432
15433
154343) iASL Compiler:
15435
15436Fixed a reported problem where multiple (nested) ElseIf()
15437statements were not handled correctly by the compiler, resulting
15438in incorrect warnings and incorrect AML code.  This was a problem
15439in both the ASL parser and the code generator.
15440
15441
154424) Documentation:
15443
15444Added changes to existing interfaces, new exception codes, and new
15445text concerning reference count object management versus garbage
15446collection.
15447
15448----------------------------------------
1544909 May 2003.  Summary of changes for version 20030509.
15450
15451
154521) ACPI CA Core Subsystem:
15453
15454Changed the subsystem initialization sequence to hold off
15455installation of address space handlers until the hardware has been
15456initialized and the system has entered ACPI mode.  This is because
15457the installation of space handlers can cause _REG methods to be
15458run.  Previously, the _REG methods could potentially be run before
15459ACPI mode was enabled.
15460
15461Fixed some memory leak issues related to address space handler and
15462notify handler installation.  There were some problems with the
15463reference count mechanism caused by the fact that the handler
15464objects are shared across several namespace objects.
15465
15466Fixed a reported problem where reference counts within the
15467namespace were not properly updated when named objects created by
15468method execution were deleted.
15469
15470Fixed a reported problem where multiple SSDTs caused a deletion
15471issue during subsystem termination.  Restructured the table data
15472structures to simplify the linked lists and the related code.
15473
15474Fixed a problem where the table ID associated with secondary
15475tables (SSDTs) was not being propagated into the namespace objects
15476created by those tables.  This would only present a problem for
15477tables that are unloaded at run-time, however.
15478
15479Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
15480type as the length parameter (instead of UINT32).
15481
15482Solved a long-standing problem where an ALREADY_EXISTS error
15483appears on various systems.  This problem could happen when there
15484are multiple PCI_Config operation regions under a single PCI root
15485bus.  This doesn't happen very frequently, but there are some
15486systems that do this in the ASL.
15487
15488Fixed a reported problem where the internal DeleteNode function
15489was incorrectly handling the case where a namespace node was the
15490first in the parent's child list, and had additional peers (not
15491the only child, but first in the list of children.)
15492
15493Code and Data Size: Current core subsystem library sizes are shown
15494below.  These are the code and data sizes for the acpica.lib
15495produced by the Microsoft Visual C++ 6.0 compiler, and these
15496values do not include any ACPI driver or OSPM code.  The debug
15497version of the code includes the debug output trace mechanism and
15498has a much larger code and data size.  Note that these values will
15499vary depending on the efficiency of the compiler and the compiler
15500options used during generation.
15501
15502  Previous Release
15503    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
15504    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
15505  Current Release:
15506    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
15507    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
15508
15509
155102) Linux:
15511
15512Allow ":" in OS override string (Ducrot Bruno)
15513
15514Kobject fix (Greg KH)
15515
15516
155173 iASL Compiler/Disassembler:
15518
15519Fixed a problem in the generation of the C source code files (AML
15520is emitted in C source statements for BIOS inclusion) where the
15521Ascii dump that appears within a C comment at the end of each line
15522could cause a compile time error if the AML sequence happens to
15523have an open comment or close comment sequence embedded.
15524
15525
15526----------------------------------------
1552724 April 2003.  Summary of changes for version 20030424.
15528
15529
155301) ACPI CA Core Subsystem:
15531
15532Support for big-endian systems has been implemented.  Most of the
15533support has been invisibly added behind big-endian versions of the
15534ACPI_MOVE_* macros.
15535
15536Fixed a problem in AcpiHwDisableGpeBlock() and
15537AcpiHwClearGpeBlock() where an incorrect offset was passed to the
15538low level hardware write routine.  The offset parameter was
15539actually eliminated from the low level read/write routines because
15540they had become obsolete.
15541
15542Fixed a problem where a handler object was deleted twice during
15543the removal of a fixed event handler.
15544
15545
155462) Linux:
15547
15548A fix for SMP systems with link devices was contributed by
15549
15550Compaq's Dan Zink.
15551
15552(2.5) Return whether we handled the interrupt in our IRQ handler.
15553(Linux ISRs no longer return void, so we can propagate the handler
15554return value from the ACPI CA core back to the OS.)
15555
15556
15557
155583) Documentation:
15559
15560The ACPI CA Programmer Reference has been updated to reflect new
15561interfaces and changes to existing interfaces.
15562
15563----------------------------------------
1556428 March 2003.  Summary of changes for version 20030328.
15565
155661) ACPI CA Core Subsystem:
15567
15568The GPE Block Device support has been completed.  New interfaces
15569are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
15570interfaces (enable, disable, clear, getstatus) have been split
15571into separate interfaces for Fixed Events and General Purpose
15572Events (GPEs) in order to support GPE Block Devices properly.
15573
15574Fixed a problem where the error message "Failed to acquire
15575semaphore" would appear during operations on the embedded
15576controller (EC).
15577
15578Code and Data Size: Current core subsystem library sizes are shown
15579below.  These are the code and data sizes for the acpica.lib
15580produced by the Microsoft Visual C++ 6.0 compiler, and these
15581values do not include any ACPI driver or OSPM code.  The debug
15582version of the code includes the debug output trace mechanism and
15583has a much larger code and data size.  Note that these values will
15584vary depending on the efficiency of the compiler and the compiler
15585options used during generation.
15586
15587  Previous Release
15588    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
15589    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
15590  Current Release:
15591    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
15592    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
15593
15594
15595----------------------------------------
1559628 February 2003.  Summary of changes for version 20030228.
15597
15598
155991) ACPI CA Core Subsystem:
15600
15601The GPE handling and dispatch code has been completely overhauled
15602in preparation for support of GPE Block Devices (ID ACPI0006).
15603This affects internal data structures and code only; there should
15604be no differences visible externally.  One new file has been
15605added, evgpeblk.c
15606
15607The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
15608fields that are used to determine the GPE block lengths.  The
15609REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
15610structures are ignored.  This is per the ACPI specification but it
15611isn't very clear.  The full 256 Block 0/1 GPEs are now supported
15612(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
15613
15614In the SCI interrupt handler, removed the read of the PM1_CONTROL
15615register to look at the SCI_EN bit.  On some machines, this read
15616causes an SMI event and greatly slows down SCI events.  (This may
15617in fact be the cause of slow battery status response on some
15618systems.)
15619
15620Fixed a problem where a store of a NULL string to a package object
15621could cause the premature deletion of the object.  This was seen
15622during execution of the battery _BIF method on some systems,
15623resulting in no battery data being returned.
15624
15625Added AcpiWalkResources interface to simplify parsing of resource
15626lists.
15627
15628Code and Data Size: Current core subsystem library sizes are shown
15629below.  These are the code and data sizes for the acpica.lib
15630produced by the Microsoft Visual C++ 6.0 compiler, and these
15631values do not include any ACPI driver or OSPM code.  The debug
15632version of the code includes the debug output trace mechanism and
15633has a much larger code and data size.  Note that these values will
15634vary depending on the efficiency of the compiler and the compiler
15635options used during generation.
15636
15637  Previous Release
15638    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15639    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15640  Current Release:
15641    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
15642    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
15643
15644
156452) Linux
15646
15647S3 fixes (Ole Rohne)
15648
15649Update ACPI PHP driver with to use new acpi_walk_resource API
15650(Bjorn Helgaas)
15651
15652Add S4BIOS support (Pavel Machek)
15653
15654Map in entire table before performing checksum (John Stultz)
15655
15656Expand the mem= cmdline to allow the specification of reserved and
15657ACPI DATA blocks (Pavel Machek)
15658
15659Never use ACPI on VISWS
15660
15661Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
15662
15663Revert a change that allowed P_BLK lengths to be 4 or 5. This is
15664causing us to think that some systems support C2 when they really
15665don't.
15666
15667Do not count processor objects for non-present CPUs (Thanks to
15668Dominik Brodowski)
15669
15670
156713) iASL Compiler:
15672
15673Fixed a problem where ASL include files could not be found and
15674opened.
15675
15676Added support for the _PDC reserved name.
15677
15678
15679----------------------------------------
1568022 January 2003.  Summary of changes for version 20030122.
15681
15682
156831) ACPI CA Core Subsystem:
15684
15685Added a check for constructs of the form:  Store (Local0, Local0)
15686where Local0 is not initialized.  Apparently, some BIOS
15687programmers believe that this is a NOOP.  Since this store doesn't
15688do anything anyway, the new prototype behavior will ignore this
15689error.  This is a case where we can relax the strict checking in
15690the interpreter in the name of compatibility.
15691
15692
156932) Linux
15694
15695The AcpiSrc Source Conversion Utility has been released with the
15696Linux package for the first time.  This is the utility that is
15697used to convert the ACPI CA base source code to the Linux version.
15698
15699(Both) Handle P_BLK lengths shorter than 6 more gracefully
15700
15701(Both) Move more headers to include/acpi, and delete an unused
15702header.
15703
15704(Both) Move drivers/acpi/include directory to include/acpi
15705
15706(Both) Boot functions don't use cmdline, so don't pass it around
15707
15708(Both) Remove include of unused header (Adrian Bunk)
15709
15710(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
15711the
15712former now also includes the latter, acpiphp.h only needs the one,
15713now.
15714
15715(2.5) Make it possible to select method of bios restoring after S3
15716resume. [=> no more ugly ifdefs] (Pavel Machek)
15717
15718(2.5) Make proc write interfaces work (Pavel Machek)
15719
15720(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
15721
15722(2.5) Break out ACPI Perf code into its own module, under cpufreq
15723(Dominik Brodowski)
15724
15725(2.4) S4BIOS support (Ducrot Bruno)
15726
15727(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
15728Visinoni)
15729
15730
157313) iASL Compiler:
15732
15733Added support to disassemble SSDT and PSDTs.
15734
15735Implemented support to obtain SSDTs from the Windows registry if
15736available.
15737
15738
15739----------------------------------------
1574009 January 2003.  Summary of changes for version 20030109.
15741
157421) ACPI CA Core Subsystem:
15743
15744Changed the behavior of the internal Buffer-to-String conversion
15745function.  The current ACPI specification states that the contents
15746of the buffer are "converted to a string of two-character
15747hexadecimal numbers, each separated by a space".  Unfortunately,
15748this definition is not backwards compatible with existing ACPI 1.0
15749implementations (although the behavior was not defined in the ACPI
157501.0 specification).  The new behavior simply copies data from the
15751buffer to the string until a null character is found or the end of
15752the buffer is reached.  The new String object is always null
15753terminated.  This problem was seen during the generation of _BIF
15754battery data where incorrect strings were returned for battery
15755type, etc.  This will also require an errata to the ACPI
15756specification.
15757
15758Renamed all instances of NATIVE_UINT and NATIVE_INT to
15759ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
15760
15761Copyright in all module headers (both Linux and non-Linux) has be
15762updated to 2003.
15763
15764Code and Data Size: Current core subsystem library sizes are shown
15765below.  These are the code and data sizes for the acpica.lib
15766produced by the Microsoft Visual C++ 6.0 compiler, and these
15767values do not include any ACPI driver or OSPM code.  The debug
15768version of the code includes the debug output trace mechanism and
15769has a much larger code and data size.  Note that these values will
15770vary depending on the efficiency of the compiler and the compiler
15771options used during generation.
15772
15773  Previous Release
15774    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15775    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15776  Current Release:
15777    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15778    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15779
15780
157812) Linux
15782
15783Fixed an oops on module insertion/removal (Matthew Tippett)
15784
15785(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
15786
15787(2.5) Replace pr_debug (Randy Dunlap)
15788
15789(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
15790
15791(Both) Eliminate spawning of thread from timer callback, in favor
15792of schedule_work()
15793
15794(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
15795
15796(Both) Added define for Fixed Function HW region (Matthew Wilcox)
15797
15798(Both) Add missing statics to button.c (Pavel Machek)
15799
15800Several changes have been made to the source code translation
15801utility that generates the Linux Code in order to make the code
15802more "Linux-like":
15803
15804All typedefs on structs and unions have been removed in keeping
15805with the Linux coding style.
15806
15807Removed the non-Linux SourceSafe module revision number from each
15808module header.
15809
15810Completed major overhaul of symbols to be lowercase for linux.
15811Doubled the number of symbols that are lowercase.
15812
15813Fixed a problem where identifiers within procedure headers and
15814within quotes were not fully lower cased (they were left with a
15815starting capital.)
15816
15817Some C macros whose only purpose is to allow the generation of 16-
15818bit code are now completely removed in the Linux code, increasing
15819readability and maintainability.
15820
15821----------------------------------------
15822
1582312 December 2002.  Summary of changes for version 20021212.
15824
15825
158261) ACPI CA Core Subsystem:
15827
15828Fixed a problem where the creation of a zero-length AML Buffer
15829would cause a fault.
15830
15831Fixed a problem where a Buffer object that pointed to a static AML
15832buffer (in an ACPI table) could inadvertently be deleted, causing
15833memory corruption.
15834
15835Fixed a problem where a user buffer (passed in to the external
15836ACPI CA interfaces) could be overwritten if the buffer was too
15837small to complete the operation, causing memory corruption.
15838
15839Fixed a problem in the Buffer-to-String conversion code where a
15840string of length one was always returned, regardless of the size
15841of the input Buffer object.
15842
15843Removed the NATIVE_CHAR data type across the entire source due to
15844lack of need and lack of consistent use.
15845
15846Code and Data Size: Current core subsystem library sizes are shown
15847below.  These are the code and data sizes for the acpica.lib
15848produced by the Microsoft Visual C++ 6.0 compiler, and these
15849values do not include any ACPI driver or OSPM code.  The debug
15850version of the code includes the debug output trace mechanism and
15851has a much larger code and data size.  Note that these values will
15852vary depending on the efficiency of the compiler and the compiler
15853options used during generation.
15854
15855  Previous Release
15856    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
15857    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
15858  Current Release:
15859    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15860    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15861
15862
15863----------------------------------------
1586405 December 2002.  Summary of changes for version 20021205.
15865
158661) ACPI CA Core Subsystem:
15867
15868Fixed a problem where a store to a String or Buffer object could
15869cause corruption of the DSDT if the object type being stored was
15870the same as the target object type and the length of the object
15871being stored was equal to or smaller than the original (existing)
15872target object.  This was seen to cause corruption of battery _BIF
15873buffers if the _BIF method modified the buffer on the fly.
15874
15875Fixed a problem where an internal error was generated if a control
15876method invocation was used in an OperationRegion, Buffer, or
15877Package declaration.  This was caused by the deferred parsing of
15878the control method and thus the deferred creation of the internal
15879method object.  The solution to this problem was to create the
15880internal method object at the moment the method is encountered in
15881the first pass - so that subsequent references to the method will
15882able to obtain the required parameter count and thus properly
15883parse the method invocation.  This problem presented itself as an
15884AE_AML_INTERNAL during the pass 1 parse phase during table load.
15885
15886Fixed a problem where the internal String object copy routine did
15887not always allocate sufficient memory for the target String object
15888and caused memory corruption.  This problem was seen to cause
15889"Allocation already present in list!" errors as memory allocation
15890became corrupted.
15891
15892Implemented a new function for the evaluation of namespace objects
15893that allows the specification of the allowable return object
15894types.  This simplifies a lot of code that checks for a return
15895object of one or more specific objects returned from the
15896evaluation (such as _STA, etc.)  This may become and external
15897function if it would be useful to ACPI-related drivers.
15898
15899Completed another round of prefixing #defines with "ACPI_" for
15900clarity.
15901
15902Completed additional code restructuring to allow more modular
15903linking for iASL compiler and AcpiExec.  Several files were split
15904creating new files.  New files:  nsparse.c dsinit.c evgpe.c
15905
15906Implemented an abort mechanism to terminate an executing control
15907method via the AML debugger.  This feature is useful for debugging
15908control methods that depend (wait) for specific hardware
15909responses.
15910
15911Code and Data Size: Current core subsystem library sizes are shown
15912below.  These are the code and data sizes for the acpica.lib
15913produced by the Microsoft Visual C++ 6.0 compiler, and these
15914values do not include any ACPI driver or OSPM code.  The debug
15915version of the code includes the debug output trace mechanism and
15916has a much larger code and data size.  Note that these values will
15917vary depending on the efficiency of the compiler and the compiler
15918options used during generation.
15919
15920  Previous Release
15921    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15922    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
15923  Current Release:
15924    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
15925    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
15926
15927
159282) iASL Compiler/Disassembler
15929
15930Fixed a compiler code generation problem for "Interrupt" Resource
15931Descriptors.  If specified in the ASL, the optional "Resource
15932Source Index" and "Resource Source" fields were not inserted into
15933the correct location within the AML resource descriptor, creating
15934an invalid descriptor.
15935
15936Fixed a disassembler problem for "Interrupt" resource descriptors.
15937The optional "Resource Source Index" and "Resource Source" fields
15938were ignored.
15939
15940
15941----------------------------------------
1594222 November 2002.  Summary of changes for version 20021122.
15943
15944
159451) ACPI CA Core Subsystem:
15946
15947Fixed a reported problem where an object stored to a Method Local
15948or Arg was not copied to a new object during the store - the
15949object pointer was simply copied to the Local/Arg.  This caused
15950all subsequent operations on the Local/Arg to also affect the
15951original source of the store operation.
15952
15953Fixed a problem where a store operation to a Method Local or Arg
15954was not completed properly if the Local/Arg contained a reference
15955(from RefOf) to a named field.  The general-purpose store-to-
15956namespace-node code is now used so that this case is handled
15957automatically.
15958
15959Fixed a problem where the internal object copy routine would cause
15960a protection fault if the object being copied was a Package and
15961contained either 1) a NULL package element or 2) a nested sub-
15962package.
15963
15964Fixed a problem with the GPE initialization that resulted from an
15965ambiguity in the ACPI specification.  One section of the
15966specification states that both the address and length of the GPE
15967block must be zero if the block is not supported.  Another section
15968implies that only the address need be zero if the block is not
15969supported.  The code has been changed so that both the address and
15970the length must be non-zero to indicate a valid GPE block (i.e.,
15971if either the address or the length is zero, the GPE block is
15972invalid.)
15973
15974Code and Data Size: Current core subsystem library sizes are shown
15975below.  These are the code and data sizes for the acpica.lib
15976produced by the Microsoft Visual C++ 6.0 compiler, and these
15977values do not include any ACPI driver or OSPM code.  The debug
15978version of the code includes the debug output trace mechanism and
15979has a much larger code and data size.  Note that these values will
15980vary depending on the efficiency of the compiler and the compiler
15981options used during generation.
15982
15983  Previous Release
15984    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
15985    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
15986  Current Release:
15987    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15988    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
15989
15990
159912) Linux
15992
15993Cleaned up EC driver. Exported an external EC read/write
15994interface. By going through this, other drivers (most notably
15995sonypi) will be able to serialize access to the EC.
15996
15997
159983) iASL Compiler/Disassembler
15999
16000Implemented support to optionally generate include files for both
16001ASM and C (the -i switch).  This simplifies BIOS development by
16002automatically creating include files that contain external
16003declarations for the symbols that are created within the
16004
16005(optionally generated) ASM and C AML source files.
16006
16007
16008----------------------------------------
1600915 November 2002.  Summary of changes for version 20021115.
16010
160111) ACPI CA Core Subsystem:
16012
16013Fixed a memory leak problem where an error during resolution of
16014
16015method arguments during a method invocation from another method
16016failed to cleanup properly by deleting all successfully resolved
16017argument objects.
16018
16019Fixed a problem where the target of the Index() operator was not
16020correctly constructed if the source object was a package.  This
16021problem has not been detected because the use of a target operand
16022with Index() is very rare.
16023
16024Fixed a problem with the Index() operator where an attempt was
16025made to delete the operand objects twice.
16026
16027Fixed a problem where an attempt was made to delete an operand
16028twice during execution of the CondRefOf() operator if the target
16029did not exist.
16030
16031Implemented the first of perhaps several internal create object
16032functions that create and initialize a specific object type.  This
16033consolidates duplicated code wherever the object is created, thus
16034shrinking the size of the subsystem.
16035
16036Implemented improved debug/error messages for errors that occur
16037during nested method invocations.  All executing method pathnames
16038are displayed (with the error) as the call stack is unwound - thus
16039simplifying debug.
16040
16041Fixed a problem introduced in the 10/02 release that caused
16042premature deletion of a buffer object if a buffer was used as an
16043ASL operand where an integer operand is required (Thus causing an
16044implicit object conversion from Buffer to Integer.)  The change in
16045the 10/02 release was attempting to fix a memory leak (albeit
16046incorrectly.)
16047
16048Code and Data Size: Current core subsystem library sizes are shown
16049below.  These are the code and data sizes for the acpica.lib
16050produced by the Microsoft Visual C++ 6.0 compiler, and these
16051values do not include any ACPI driver or OSPM code.  The debug
16052version of the code includes the debug output trace mechanism and
16053has a much larger code and data size.  Note that these values will
16054vary depending on the efficiency of the compiler and the compiler
16055options used during generation.
16056
16057  Previous Release
16058    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
16059    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
16060  Current Release:
16061    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
16062    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
16063
16064
160652) Linux
16066
16067Changed the implementation of the ACPI semaphores to use down()
16068instead of down_interruptable().  It is important that the
16069execution of ACPI control methods not be interrupted by signals.
16070Methods must run to completion, or the system may be left in an
16071unknown/unstable state.
16072
16073Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
16074(Shawn Starr)
16075
16076
160773) iASL Compiler/Disassembler
16078
16079
16080Changed the default location of output files.  All output files
16081are now placed in the current directory by default instead of in
16082the directory of the source file.  This change may affect some
16083existing makefiles, but it brings the behavior of the compiler in
16084line with other similar tools.  The location of the output files
16085can be overridden with the -p command line switch.
16086
16087
16088----------------------------------------
1608911 November 2002.  Summary of changes for version 20021111.
16090
16091
160920) ACPI Specification 2.0B is released and is now available at:
16093http://www.acpi.info/index.html
16094
16095
160961) ACPI CA Core Subsystem:
16097
16098Implemented support for the ACPI 2.0 SMBus Operation Regions.
16099This includes the early detection and handoff of the request to
16100the SMBus region handler (avoiding all of the complex field
16101support code), and support for the bidirectional return packet
16102from an SMBus write operation.  This paves the way for the
16103development of SMBus drivers in each host operating system.
16104
16105Fixed a problem where the semaphore WAIT_FOREVER constant was
16106defined as 32 bits, but must be 16 bits according to the ACPI
16107specification.  This had the side effect of causing ASL
16108Mutex/Event timeouts even though the ASL code requested a wait
16109forever.  Changed all internal references to the ACPI timeout
16110parameter to 16 bits to prevent future problems.  Changed the name
16111of WAIT_FOREVER to ACPI_WAIT_FOREVER.
16112
16113Code and Data Size: Current core subsystem library sizes are shown
16114below.  These are the code and data sizes for the acpica.lib
16115produced by the Microsoft Visual C++ 6.0 compiler, and these
16116values do not include any ACPI driver or OSPM code.  The debug
16117version of the code includes the debug output trace mechanism and
16118has a much larger code and data size.  Note that these values will
16119vary depending on the efficiency of the compiler and the compiler
16120options used during generation.
16121
16122  Previous Release
16123    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16124    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
16125  Current Release:
16126    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
16127    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
16128
16129
161302) Linux
16131
16132Module loading/unloading fixes (John Cagle)
16133
16134
161353) iASL Compiler/Disassembler
16136
16137Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
16138
16139Implemented support for the disassembly of all SMBus protocol
16140keywords (SMBQuick, SMBWord, etc.)
16141
16142----------------------------------------
1614301 November 2002.  Summary of changes for version 20021101.
16144
16145
161461) ACPI CA Core Subsystem:
16147
16148Fixed a problem where platforms that have a GPE1 block but no GPE0
16149block were not handled correctly.  This resulted in a "GPE
16150overlap" error message.  GPE0 is no longer required.
16151
16152Removed code added in the previous release that inserted nodes
16153into the namespace in alphabetical order.  This caused some side-
16154effects on various machines.  The root cause of the problem is
16155still under investigation since in theory, the internal ordering
16156of the namespace nodes should not matter.
16157
16158
16159Enhanced error reporting for the case where a named object is not
16160found during control method execution.  The full ACPI namepath
16161(name reference) of the object that was not found is displayed in
16162this case.
16163
16164Note: as a result of the overhaul of the namespace object types in
16165the previous release, the namespace nodes for the predefined
16166scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
16167instead of ACPI_TYPE_ANY.  This simplifies the namespace
16168management code but may affect code that walks the namespace tree
16169looking for specific object types.
16170
16171Code and Data Size: Current core subsystem library sizes are shown
16172below.  These are the code and data sizes for the acpica.lib
16173produced by the Microsoft Visual C++ 6.0 compiler, and these
16174values do not include any ACPI driver or OSPM code.  The debug
16175version of the code includes the debug output trace mechanism and
16176has a much larger code and data size.  Note that these values will
16177vary depending on the efficiency of the compiler and the compiler
16178options used during generation.
16179
16180  Previous Release
16181    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
16182    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
16183  Current Release:
16184    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16185    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
16186
16187
161882) Linux
16189
16190Fixed a problem introduced in the previous release where the
16191Processor and Thermal objects were not recognized and installed in
16192/proc.  This was related to the scope type change described above.
16193
16194
161953) iASL Compiler/Disassembler
16196
16197Implemented the -g option to get all of the required ACPI tables
16198from the registry and save them to files (Windows version of the
16199compiler only.)  The required tables are the FADT, FACS, and DSDT.
16200
16201Added ACPI table checksum validation during table disassembly in
16202order to catch corrupted tables.
16203
16204
16205----------------------------------------
1620622 October 2002.  Summary of changes for version 20021022.
16207
162081) ACPI CA Core Subsystem:
16209
16210Implemented a restriction on the Scope operator that the target
16211must already exist in the namespace at the time the operator is
16212encountered (during table load or method execution).  In other
16213words, forward references are not allowed and Scope() cannot
16214create a new object. This changes the previous behavior where the
16215interpreter would create the name if not found.  This new behavior
16216correctly enables the search-to-root algorithm during namespace
16217lookup of the target name.  Because of this upsearch, this fixes
16218the known Compaq _SB_.OKEC problem and makes both the AML
16219interpreter and iASL compiler compatible with other ACPI
16220implementations.
16221
16222Completed a major overhaul of the internal ACPI object types for
16223the ACPI Namespace and the associated operand objects.  Many of
16224these types had become obsolete with the introduction of the two-
16225pass namespace load.  This cleanup simplifies the code and makes
16226the entire namespace load mechanism much clearer and easier to
16227understand.
16228
16229Improved debug output for tracking scope opening/closing to help
16230diagnose scoping issues.  The old scope name as well as the new
16231scope name are displayed.  Also improved error messages for
16232problems with ASL Mutex objects and error messages for GPE
16233problems.
16234
16235Cleaned up the namespace dump code, removed obsolete code.
16236
16237All string output (for all namespace/object dumps) now uses the
16238common ACPI string output procedure which handles escapes properly
16239and does not emit non-printable characters.
16240
16241Fixed some issues with constants in the 64-bit version of the
16242local C library (utclib.c)
16243
16244
162452) Linux
16246
16247EC Driver:  No longer attempts to acquire the Global Lock at
16248interrupt level.
16249
16250
162513) iASL Compiler/Disassembler
16252
16253Implemented ACPI 2.0B grammar change that disallows all Type 1 and
162542 opcodes outside of a control method.  This means that the
16255"executable" operators (versus the "namespace" operators) cannot
16256be used at the table level; they can only be used within a control
16257method.
16258
16259Implemented the restriction on the Scope() operator where the
16260target must already exist in the namespace at the time the
16261operator is encountered (during ASL compilation). In other words,
16262forward references are not allowed and Scope() cannot create a new
16263object.  This makes the iASL compiler compatible with other ACPI
16264implementations and makes the Scope() implementation adhere to the
16265ACPI specification.
16266
16267Fixed a problem where namepath optimization for the Alias operator
16268was optimizing the wrong path (of the two namepaths.)  This caused
16269a "Missing alias link" error message.
16270
16271Fixed a problem where an "unknown reserved name" warning could be
16272incorrectly generated for names like "_SB" when the trailing
16273underscore is not used in the original ASL.
16274
16275Fixed a problem where the reserved name check did not handle
16276NamePaths with multiple NameSegs correctly.  The first nameseg of
16277the NamePath was examined instead of the last NameSeg.
16278
16279
16280----------------------------------------
16281
1628202 October 2002.  Summary of changes for this release.
16283
16284
162851) ACPI CA Core Subsystem version 20021002:
16286
16287Fixed a problem where a store/copy of a string to an existing
16288string did not always set the string length properly in the String
16289object.
16290
16291Fixed a reported problem with the ToString operator where the
16292behavior was identical to the ToHexString operator instead of just
16293simply converting a raw buffer to a string data type.
16294
16295Fixed a problem where CopyObject and the other "explicit"
16296conversion operators were not updating the internal namespace node
16297type as part of the store operation.
16298
16299Fixed a memory leak during implicit source operand conversion
16300where the original object was not deleted if it was converted to a
16301new object of a different type.
16302
16303Enhanced error messages for all problems associated with namespace
16304lookups.  Common procedure generates and prints the lookup name as
16305well as the formatted status.
16306
16307Completed implementation of a new design for the Alias support
16308within the namespace.  The existing design did not handle the case
16309where a new object was assigned to one of the two names due to the
16310use of an explicit conversion operator, resulting in the two names
16311pointing to two different objects.  The new design simply points
16312the Alias name to the original name node - not to the object.
16313This results in a level of indirection that must be handled in the
16314name resolution mechanism.
16315
16316Code and Data Size: Current core subsystem library sizes are shown
16317below.  These are the code and data sizes for the acpica.lib
16318produced by the Microsoft Visual C++ 6.0 compiler, and these
16319values do not include any ACPI driver or OSPM code.  The debug
16320version of the code includes the debug output trace mechanism and
16321has a larger code and data size.  Note that these values will vary
16322depending on the efficiency of the compiler and the compiler
16323options used during generation.
16324
16325  Previous Release
16326    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
16327    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
16328  Current Release:
16329    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
16330    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
16331
16332
163332) Linux
16334
16335Initialize thermal driver's timer before it is used. (Knut
16336Neumann)
16337
16338Allow handling negative celsius values. (Kochi Takayoshi)
16339
16340Fix thermal management and make trip points. R/W (Pavel Machek)
16341
16342Fix /proc/acpi/sleep. (P. Christeas)
16343
16344IA64 fixes. (David Mosberger)
16345
16346Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
16347
16348Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
16349Brodowski)
16350
16351
163523) iASL Compiler/Disassembler
16353
16354Clarified some warning/error messages.
16355
16356
16357----------------------------------------
1635818 September 2002.  Summary of changes for this release.
16359
16360
163611) ACPI CA Core Subsystem version 20020918:
16362
16363Fixed a reported problem with reference chaining (via the Index()
16364and RefOf() operators) in the ObjectType() and SizeOf() operators.
16365The definition of these operators includes the dereferencing of
16366all chained references to return information on the base object.
16367
16368Fixed a problem with stores to indexed package elements - the
16369existing code would not complete the store if an "implicit
16370conversion" was not performed.  In other words, if the existing
16371object (package element) was to be replaced completely, the code
16372didn't handle this case.
16373
16374Relaxed typechecking on the ASL "Scope" operator to allow the
16375target name to refer to an object of type Integer, String, or
16376Buffer, in addition to the scoping object types (Device,
16377predefined Scopes, Processor, PowerResource, and ThermalZone.)
16378This allows existing AML code that has workarounds for a bug in
16379Windows to function properly.  A warning is issued, however.  This
16380affects both the AML interpreter and the iASL compiler. Below is
16381an example of this type of ASL code:
16382
16383      Name(DEB,0x00)
16384      Scope(DEB)
16385      {
16386
16387Fixed some reported problems with 64-bit integer support in the
16388local implementation of C library functions (clib.c)
16389
16390
163912) Linux
16392
16393Use ACPI fix map region instead of IOAPIC region, since it is
16394undefined in non-SMP.
16395
16396Ensure that the SCI has the proper polarity and trigger, even on
16397systems that do not have an interrupt override entry in the MADT.
16398
163992.5 big driver reorganization (Pat Mochel)
16400
16401Use early table mapping code from acpitable.c (Andi Kleen)
16402
16403New blacklist entries (Andi Kleen)
16404
16405Blacklist improvements. Split blacklist code out into a separate
16406file. Move checking the blacklist to very early. Previously, we
16407would use ACPI tables, and then halfway through init, check the
16408blacklist -- too late. Now, it's early enough to completely fall-
16409back to non-ACPI.
16410
16411
164123) iASL Compiler/Disassembler version 20020918:
16413
16414Fixed a problem where the typechecking code didn't know that an
16415alias could point to a method.  In other words, aliases were not
16416being dereferenced during typechecking.
16417
16418
16419----------------------------------------
1642029 August 2002.  Summary of changes for this release.
16421
164221) ACPI CA Core Subsystem Version 20020829:
16423
16424If the target of a Scope() operator already exists, it must be an
16425object type that actually opens a scope -- such as a Device,
16426Method, Scope, etc.  This is a fatal runtime error.  Similar error
16427check has been added to the iASL compiler also.
16428
16429Tightened up the namespace load to disallow multiple names in the
16430same scope.  This previously was allowed if both objects were of
16431the same type.  (i.e., a lookup was the same as entering a new
16432name).
16433
16434
164352) Linux
16436
16437Ensure that the ACPI interrupt has the proper trigger and
16438polarity.
16439
16440local_irq_disable is extraneous. (Matthew Wilcox)
16441
16442Make "acpi=off" actually do what it says, and not use the ACPI
16443interpreter *or* the tables.
16444
16445Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
16446Takayoshi)
16447
16448
164493) iASL Compiler/Disassembler  Version 20020829:
16450
16451Implemented namepath optimization for name declarations.  For
16452example, a declaration like "Method (\_SB_.ABCD)" would get
16453optimized to "Method (ABCD)" if the declaration is within the
16454\_SB_ scope.  This optimization is in addition to the named
16455reference path optimization first released in the previous
16456version. This would seem to complete all possible optimizations
16457for namepaths within the ASL/AML.
16458
16459If the target of a Scope() operator already exists, it must be an
16460object type that actually opens a scope -- such as a Device,
16461Method, Scope, etc.
16462
16463Implemented a check and warning for unreachable code in the same
16464block below a Return() statement.
16465
16466Fixed a problem where the listing file was not generated if the
16467compiler aborted if the maximum error count was exceeded (200).
16468
16469Fixed a problem where the typechecking of method return values was
16470broken.  This includes the check for a return value when the
16471method is invoked as a TermArg (a return value is expected.)
16472
16473Fixed a reported problem where EOF conditions during a quoted
16474string or comment caused a fault.
16475
16476
16477----------------------------------------
1647815 August 2002.  Summary of changes for this release.
16479
164801) ACPI CA Core Subsystem Version 20020815:
16481
16482Fixed a reported problem where a Store to a method argument that
16483contains a reference did not perform the indirect store correctly.
16484This problem was created during the conversion to the new
16485reference object model - the indirect store to a method argument
16486code was not updated to reflect the new model.
16487
16488Reworked the ACPI mode change code to better conform to ACPI 2.0,
16489handle corner cases, and improve code legibility (Kochi Takayoshi)
16490
16491Fixed a problem with the pathname parsing for the carat (^)
16492prefix.  The heavy use of the carat operator by the new namepath
16493optimization in the iASL compiler uncovered a problem with the AML
16494interpreter handling of this prefix.  In the case where one or
16495more carats precede a single nameseg, the nameseg was treated as
16496standalone and the search rule (to root) was inadvertently
16497applied.  This could cause both the iASL compiler and the
16498interpreter to find the wrong object or to miss the error that
16499should occur if the object does not exist at that exact pathname.
16500
16501Found and fixed the problem where the HP Pavilion DSDT would not
16502load.  This was a relatively minor tweak to the table loading code
16503(a problem caused by the unexpected encounter with a method
16504invocation not within a control method), but it does not solve the
16505overall issue of the execution of AML code at the table level.
16506This investigation is still ongoing.
16507
16508Code and Data Size: Current core subsystem library sizes are shown
16509below.  These are the code and data sizes for the acpica.lib
16510produced by the Microsoft Visual C++ 6.0 compiler, and these
16511values do not include any ACPI driver or OSPM code.  The debug
16512version of the code includes the debug output trace mechanism and
16513has a larger code and data size.  Note that these values will vary
16514depending on the efficiency of the compiler and the compiler
16515options used during generation.
16516
16517  Previous Release
16518    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
16519    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
16520  Current Release:
16521    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
16522    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
16523
16524
165252) Linux
16526
16527Remove redundant slab.h include (Brad Hards)
16528
16529Fix several bugs in thermal.c (Herbert Nachtnebel)
16530
16531Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
16532
16533Change acpi_system_suspend to use updated irq functions (Pavel
16534Machek)
16535
16536Export acpi_get_firmware_table (Matthew Wilcox)
16537
16538Use proper root proc entry for ACPI (Kochi Takayoshi)
16539
16540Fix early-boot table parsing (Bjorn Helgaas)
16541
16542
165433) iASL Compiler/Disassembler
16544
16545Reworked the compiler options to make them more consistent and to
16546use two-letter options where appropriate.  We were running out of
16547sensible letters.   This may break some makefiles, so check the
16548current options list by invoking the compiler with no parameters.
16549
16550Completed the design and implementation of the ASL namepath
16551optimization option for the compiler.  This option optimizes all
16552references to named objects to the shortest possible path.  The
16553first attempt tries to utilize a single nameseg (4 characters) and
16554the "search-to-root" algorithm used by the interpreter.  If that
16555cannot be used (because either the name is not in the search path
16556or there is a conflict with another object with the same name),
16557the pathname is optimized using the carat prefix (usually a
16558shorter string than specifying the entire path from the root.)
16559
16560Implemented support to obtain the DSDT from the Windows registry
16561(when the disassembly option is specified with no input file).
16562Added this code as the implementation for AcpiOsTableOverride in
16563the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
16564utility) to scan memory for the DSDT to the AcpiOsTableOverride
16565function in the DOS OSL to make the disassembler truly OS
16566independent.
16567
16568Implemented a new option to disassemble and compile in one step.
16569When used without an input filename, this option will grab the
16570DSDT from the local machine, disassemble it, and compile it in one
16571step.
16572
16573Added a warning message for invalid escapes (a backslash followed
16574by any character other than the allowable escapes).  This catches
16575the quoted string error "\_SB_" (which should be "\\_SB_" ).
16576
16577Also, there are numerous instances in the ACPI specification where
16578this error occurs.
16579
16580Added a compiler option to disable all optimizations.  This is
16581basically the "compatibility mode" because by using this option,
16582the AML code will come out exactly the same as other ASL
16583compilers.
16584
16585Added error messages for incorrectly ordered dependent resource
16586functions.  This includes: missing EndDependentFn macro at end of
16587dependent resource list, nested dependent function macros (both
16588start and end), and missing StartDependentFn macro.  These are
16589common errors that should be caught at compile time.
16590
16591Implemented _OSI support for the disassembler and compiler.  _OSI
16592must be included in the namespace for proper disassembly (because
16593the disassembler must know the number of arguments.)
16594
16595Added an "optimization" message type that is optional (off by
16596default).  This message is used for all optimizations - including
16597constant folding, integer optimization, and namepath optimization.
16598
16599----------------------------------------
1660025 July 2002.  Summary of changes for this release.
16601
16602
166031) ACPI CA Core Subsystem Version 20020725:
16604
16605The AML Disassembler has been enhanced to produce compilable ASL
16606code and has been integrated into the iASL compiler (see below) as
16607well as the single-step disassembly for the AML debugger and the
16608disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
16609resource templates and macros are fully supported.  The
16610disassembler has been tested on over 30 different AML files,
16611producing identical AML when the resulting disassembled ASL file
16612is recompiled with the same ASL compiler.
16613
16614Modified the Resource Manager to allow zero interrupts and zero
16615dma channels during the GetCurrentResources call.  This was
16616causing problems on some platforms.
16617
16618Added the AcpiOsRedirectOutput interface to the OSL to simplify
16619output redirection for the AcpiOsPrintf and AcpiOsVprintf
16620interfaces.
16621
16622Code and Data Size: Current core subsystem library sizes are shown
16623below.  These are the code and data sizes for the acpica.lib
16624produced by the Microsoft Visual C++ 6.0 compiler, and these
16625values do not include any ACPI driver or OSPM code.  The debug
16626version of the code includes the debug output trace mechanism and
16627has a larger code and data size.  Note that these values will vary
16628depending on the efficiency of the compiler and the compiler
16629options used during generation.
16630
16631  Previous Release
16632    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
16633    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
16634  Current Release:
16635    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
16636    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
16637
16638
166392) Linux
16640
16641Fixed a panic in the EC driver (Dominik Brodowski)
16642
16643Implemented checksum of the R/XSDT itself during Linux table scan
16644(Richard Schaal)
16645
16646
166473) iASL compiler
16648
16649The AML disassembler is integrated into the compiler.  The "-d"
16650option invokes the disassembler  to completely disassemble an
16651input AML file, producing as output a text ASL file with the
16652extension ".dsl" (to avoid name collisions with existing .asl
16653source files.)  A future enhancement will allow the disassembler
16654to obtain the BIOS DSDT from the registry under Windows.
16655
16656Fixed a problem with the VendorShort and VendorLong resource
16657descriptors where an invalid AML sequence was created.
16658
16659Implemented a fix for BufferData term in the ASL parser.  It was
16660inadvertently defined twice, allowing invalid syntax to pass and
16661causing reduction conflicts.
16662
16663Fixed a problem where the Ones opcode could get converted to a
16664value of zero if "Ones" was used where a byte, word or dword value
16665was expected.  The 64-bit value is now truncated to the correct
16666size with the correct value.
16667
16668
16669
16670----------------------------------------
1667102 July 2002.  Summary of changes for this release.
16672
16673
166741) ACPI CA Core Subsystem Version 20020702:
16675
16676The Table Manager code has been restructured to add several new
16677features.  Tables that are not required by the core subsystem
16678(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
16679validated in any way and are returned from AcpiGetFirmwareTable if
16680requested.  The AcpiOsTableOverride interface is now called for
16681each table that is loaded by the subsystem in order to allow the
16682host to override any table it chooses.  Previously, only the DSDT
16683could be overridden.  Added one new files, tbrsdt.c and
16684tbgetall.c.
16685
16686Fixed a problem with the conversion of internal package objects to
16687external objects (when a package is returned from a control
16688method.)  The return buffer length was set to zero instead of the
16689proper length of the package object.
16690
16691Fixed a reported problem with the use of the RefOf and DeRefOf
16692operators when passing reference arguments to control methods.  A
16693new type of Reference object is used internally for references
16694produced by the RefOf operator.
16695
16696Added additional error messages in the Resource Manager to explain
16697AE_BAD_DATA errors when they occur during resource parsing.
16698
16699Split the AcpiEnableSubsystem into two primitives to enable a
16700finer granularity initialization sequence.  These two calls should
16701be called in this order: AcpiEnableSubsystem (flags),
16702AcpiInitializeObjects (flags).  The flags parameter remains the
16703same.
16704
16705
167062) Linux
16707
16708Updated the ACPI utilities module to understand the new style of
16709fully resolved package objects that are now returned from the core
16710subsystem.  This eliminates errors of the form:
16711
16712    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
16713    acpi_utils-0430 [145] acpi_evaluate_reference:
16714        Invalid element in package (not a device reference)
16715
16716The method evaluation utility uses the new buffer allocation
16717scheme instead of calling AcpiEvaluate Object twice.
16718
16719Added support for ECDT. This allows the use of the Embedded
16720
16721Controller before the namespace has been fully initialized, which
16722is necessary for ACPI 2.0 support, and for some laptops to
16723initialize properly. (Laptops using ECDT are still rare, so only
16724limited testing was performed of the added functionality.)
16725
16726Fixed memory leaks in the EC driver.
16727
16728Eliminated a brittle code structure in acpi_bus_init().
16729
16730Eliminated the acpi_evaluate() helper function in utils.c. It is
16731no longer needed since acpi_evaluate_object can optionally
16732allocate memory for the return object.
16733
16734Implemented fix for keyboard hang when getting battery readings on
16735some systems (Stephen White)
16736
16737PCI IRQ routing update (Dominik Brodowski)
16738
16739Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
16740support
16741
16742----------------------------------------
1674311 June 2002.  Summary of changes for this release.
16744
16745
167461) ACPI CA Core Subsystem Version 20020611:
16747
16748Fixed a reported problem where constants such as Zero and One
16749appearing within _PRT packages were not handled correctly within
16750the resource manager code.  Originally reported against the ASL
16751compiler because the code generator now optimizes integers to
16752their minimal AML representation (i.e. AML constants if possible.)
16753The _PRT code now handles all AML constant opcodes correctly
16754(Zero, One, Ones, Revision).
16755
16756Fixed a problem with the Concatenate operator in the AML
16757interpreter where a buffer result object was incorrectly marked as
16758not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
16759
16760All package sub-objects are now fully resolved before they are
16761returned from the external ACPI interfaces.  This means that name
16762strings are resolved to object handles, and constant operators
16763(Zero, One, Ones, Revision) are resolved to Integers.
16764
16765Implemented immediate resolution of the AML Constant opcodes
16766(Zero, One, Ones, Revision) to Integer objects upon detection
16767within the AML stream. This has simplified and reduced the
16768generated code size of the subsystem by eliminating about 10
16769switch statements for these constants (which previously were
16770contained in Reference objects.)  The complicating issues are that
16771the Zero opcode is used as a "placeholder" for unspecified
16772optional target operands and stores to constants are defined to be
16773no-ops.
16774
16775Code and Data Size: Current core subsystem library sizes are shown
16776below. These are the code and data sizes for the acpica.lib
16777produced by the Microsoft Visual C++ 6.0 compiler, and these
16778values do not include any ACPI driver or OSPM code.  The debug
16779version of the code includes the debug output trace mechanism and
16780has a larger code and data size.  Note that these values will vary
16781depending on the efficiency of the compiler and the compiler
16782options used during generation.
16783
16784  Previous Release
16785    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
16786    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
16787  Current Release:
16788    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
16789    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
16790
16791
167922) Linux
16793
16794
16795Added preliminary support for obtaining _TRA data for PCI root
16796bridges (Bjorn Helgaas).
16797
16798
167993) iASL Compiler Version X2046:
16800
16801Fixed a problem where the "_DDN" reserved name was defined to be a
16802control method with one argument.  There are no arguments, and
16803_DDN does not have to be a control method.
16804
16805Fixed a problem with the Linux version of the compiler where the
16806source lines printed with error messages were the wrong lines.
16807This turned out to be the "LF versus CR/LF" difference between
16808Windows and Unix.  This appears to be the longstanding issue
16809concerning listing output and error messages.
16810
16811Fixed a problem with the Linux version of compiler where opcode
16812names within error messages were wrong.  This was caused by a
16813slight difference in the output of the Flex tool on Linux versus
16814Windows.
16815
16816Fixed a problem with the Linux compiler where the hex output files
16817contained some garbage data caused by an internal buffer overrun.
16818
16819
16820----------------------------------------
1682117 May 2002.  Summary of changes for this release.
16822
16823
168241) ACPI CA Core Subsystem Version 20020517:
16825
16826Implemented a workaround to an BIOS bug discovered on the HP
16827OmniBook where the FADT revision number and the table size are
16828inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
16829behavior is to fallback to using only the ACPI 1.0 fields of the
16830FADT if the table is too small to be a ACPI 2.0 table as claimed
16831by the revision number.  Although this is a BIOS bug, this is a
16832case where the workaround is simple enough and with no side
16833effects, so it seemed prudent to add it.  A warning message is
16834issued, however.
16835
16836Implemented minimum size checks for the fixed-length ACPI tables -
16837- the FADT and FACS, as well as consistency checks between the
16838revision number and the table size.
16839
16840Fixed a reported problem in the table override support where the
16841new table pointer was incorrectly treated as a physical address
16842instead of a logical address.
16843
16844Eliminated the use of the AE_AML_ERROR exception and replaced it
16845with more descriptive codes.
16846
16847Fixed a problem where an exception would occur if an ASL Field was
16848defined with no named Field Units underneath it (used by some
16849index fields).
16850
16851Code and Data Size: Current core subsystem library sizes are shown
16852below.  These are the code and data sizes for the acpica.lib
16853produced by the Microsoft Visual C++ 6.0 compiler, and these
16854values do not include any ACPI driver or OSPM code.  The debug
16855version of the code includes the debug output trace mechanism and
16856has a larger code and data size.  Note that these values will vary
16857depending on the efficiency of the compiler and the compiler
16858options used during generation.
16859
16860  Previous Release
16861    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
16862    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
16863  Current Release:
16864    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
16865    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
16866
16867
16868
168692) Linux
16870
16871Much work done on ACPI init (MADT and PCI IRQ routing support).
16872(Paul D. and Dominik Brodowski)
16873
16874Fix PCI IRQ-related panic on boot (Sam Revitch)
16875
16876Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
16877
16878Fix "MHz" typo (Dominik Brodowski)
16879
16880Fix RTC year 2000 issue (Dominik Brodowski)
16881
16882Preclude multiple button proc entries (Eric Brunet)
16883
16884Moved arch-specific code out of include/platform/aclinux.h
16885
168863) iASL Compiler Version X2044:
16887
16888Implemented error checking for the string used in the EISAID macro
16889(Usually used in the definition of the _HID object.)  The code now
16890strictly enforces the PnP format - exactly 7 characters, 3
16891uppercase letters and 4 hex digits.
16892
16893If a raw string is used in the definition of the _HID object
16894(instead of the EISAID macro), the string must contain all
16895alphanumeric characters (e.g., "*PNP0011" is not allowed because
16896of the asterisk.)
16897
16898Implemented checking for invalid use of ACPI reserved names for
16899most of the name creation operators (Name, Device, Event, Mutex,
16900OperationRegion, PowerResource, Processor, and ThermalZone.)
16901Previously, this check was only performed for control methods.
16902
16903Implemented an additional check on the Name operator to emit an
16904error if a reserved name that must be implemented in ASL as a
16905control method is used.  We know that a reserved name must be a
16906method if it is defined with input arguments.
16907
16908The warning emitted when a namespace object reference is not found
16909during the cross reference phase has been changed into an error.
16910The "External" directive should be used for names defined in other
16911modules.
16912
16913
169144) Tools and Utilities
16915
16916The 16-bit tools (adump16 and aexec16) have been regenerated and
16917tested.
16918
16919Fixed a problem with the output of both acpidump and adump16 where
16920the indentation of closing parentheses and brackets was not
16921
16922aligned properly with the parent block.
16923
16924
16925----------------------------------------
1692603 May 2002.  Summary of changes for this release.
16927
16928
169291) ACPI CA Core Subsystem Version 20020503:
16930
16931Added support a new OSL interface that allows the host operating
16932
16933system software to override the DSDT found in the firmware -
16934AcpiOsTableOverride.  With this interface, the OSL can examine the
16935version of the firmware DSDT and replace it with a different one
16936if desired.
16937
16938Added new external interfaces for accessing ACPI registers from
16939device drivers and other system software - AcpiGetRegister and
16940AcpiSetRegister.  This was simply an externalization of the
16941existing AcpiHwBitRegister interfaces.
16942
16943Fixed a regression introduced in the previous build where the
16944ASL/AML CreateField operator always returned an error,
16945"destination must be a NS Node".
16946
16947Extended the maximum time (before failure) to successfully enable
16948ACPI mode to 3 seconds.
16949
16950Code and Data Size: Current core subsystem library sizes are shown
16951below.  These are the code and data sizes for the acpica.lib
16952produced by the Microsoft Visual C++ 6.0 compiler, and these
16953values do not include any ACPI driver or OSPM code.  The debug
16954version of the code includes the debug output trace mechanism and
16955has a larger code and data size.  Note that these values will vary
16956depending on the efficiency of the compiler and the compiler
16957options used during generation.
16958
16959  Previous Release
16960    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
16961    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
16962  Current Release:
16963    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
16964    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
16965
16966
169672) Linux
16968
16969Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
16970free. While 3 out of 4 of our in-house systems work fine, the last
16971one still hangs when testing the LAPIC timer.
16972
16973Renamed many files in 2.5 kernel release to omit "acpi_" from the
16974name.
16975
16976Added warning on boot for Presario 711FR.
16977
16978Sleep improvements (Pavel Machek)
16979
16980ACPI can now be built without CONFIG_PCI enabled.
16981
16982IA64: Fixed memory map functions (JI Lee)
16983
16984
169853) iASL Compiler Version X2043:
16986
16987Added support to allow the compiler to be integrated into the MS
16988VC++ development environment for one-button compilation of single
16989files or entire projects -- with error-to-source-line mapping.
16990
16991Implemented support for compile-time constant folding for the
16992Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
16993specification.  This allows the ASL writer to use expressions
16994instead of Integer/Buffer/String constants in terms that must
16995evaluate to constants at compile time and will also simplify the
16996emitted AML in any such sub-expressions that can be folded
16997(evaluated at compile-time.)  This increases the size of the
16998compiler significantly because a portion of the ACPI CA AML
16999interpreter is included within the compiler in order to pre-
17000evaluate constant expressions.
17001
17002
17003Fixed a problem with the "Unicode" ASL macro that caused the
17004compiler to fault.  (This macro is used in conjunction with the
17005_STR reserved name.)
17006
17007Implemented an AML opcode optimization to use the Zero, One, and
17008Ones opcodes where possible to further reduce the size of integer
17009constants and thus reduce the overall size of the generated AML
17010code.
17011
17012Implemented error checking for new reserved terms for ACPI version
170132.0A.
17014
17015Implemented the -qr option to display the current list of ACPI
17016reserved names known to the compiler.
17017
17018Implemented the -qc option to display the current list of ASL
17019operators that are allowed within constant expressions and can
17020therefore be folded at compile time if the operands are constants.
17021
17022
170234) Documentation
17024
17025Updated the Programmer's Reference for new interfaces, data types,
17026and memory allocation model options.
17027
17028Updated the iASL Compiler User Reference to apply new format and
17029add information about new features and options.
17030
17031----------------------------------------
1703219 April 2002.  Summary of changes for this release.
17033
170341) ACPI CA Core Subsystem Version 20020419:
17035
17036The source code base for the Core Subsystem has been completely
17037cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
17038versions.  The Lint option files used are included in the
17039/acpi/generate/lint directory.
17040
17041Implemented enhanced status/error checking across the entire
17042Hardware manager subsystem.  Any hardware errors (reported from
17043the OSL) are now bubbled up and will abort a running control
17044method.
17045
17046
17047Fixed a problem where the per-ACPI-table integer width (32 or 64)
17048was stored only with control method nodes, causing a fault when
17049non-control method code was executed during table loading.  The
17050solution implemented uses a global variable to indicate table
17051width across the entire ACPI subsystem.  Therefore, ACPI CA does
17052not support mixed integer widths across different ACPI tables
17053(DSDT, SSDT).
17054
17055Fixed a problem where NULL extended fields (X fields) in an ACPI
170562.0 ACPI FADT caused the table load to fail.  Although the
17057existing ACPI specification is a bit fuzzy on this topic, the new
17058behavior is to fall back on a ACPI 1.0 field if the corresponding
17059ACPI 2.0 X field is zero (even though the table revision indicates
17060a full ACPI 2.0 table.)  The ACPI specification will be updated to
17061clarify this issue.
17062
17063Fixed a problem with the SystemMemory operation region handler
17064where memory was always accessed byte-wise even if the AML-
17065specified access width was larger than a byte.  This caused
17066problems on systems with memory-mapped I/O.  Memory is now
17067accessed with the width specified.  On systems that do not support
17068non-aligned transfers, a check is made to guarantee proper address
17069alignment before proceeding in order to avoid an AML-caused
17070alignment fault within the kernel.
17071
17072
17073Fixed a problem with the ExtendedIrq resource where only one byte
17074of the 4-byte Irq field was extracted.
17075
17076Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
17077function was out of date and required a rewrite.
17078
17079Code and Data Size: Current core subsystem library sizes are shown
17080below.  These are the code and data sizes for the acpica.lib
17081produced by the Microsoft Visual C++ 6.0 compiler, and these
17082values do not include any ACPI driver or OSPM code.  The debug
17083version of the code includes the debug output trace mechanism and
17084has a larger code and data size.  Note that these values will vary
17085depending on the efficiency of the compiler and the compiler
17086options used during generation.
17087
17088  Previous Release
17089    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
17090    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
17091  Current Release:
17092    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
17093    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
17094
17095
170962) Linux
17097
17098PCI IRQ routing fixes (Dominik Brodowski)
17099
17100
171013) iASL Compiler Version X2042:
17102
17103Implemented an additional compile-time error check for a field
17104unit whose size + minimum access width would cause a run-time
17105access beyond the end-of-region.  Previously, only the field size
17106itself was checked.
17107
17108The Core subsystem and iASL compiler now share a common parse
17109object in preparation for compile-time evaluation of the type
171103/4/5 ASL operators.
17111
17112
17113----------------------------------------
17114Summary of changes for this release: 03_29_02
17115
171161) ACPI CA Core Subsystem Version 20020329:
17117
17118Implemented support for late evaluation of TermArg operands to
17119Buffer and Package objects.  This allows complex expressions to be
17120used in the declarations of these object types.
17121
17122Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
171231.0, if the field was larger than 32 bits, it was returned as a
17124buffer - otherwise it was returned as an integer.  In ACPI 2.0,
17125the field is returned as a buffer only if the field is larger than
1712664 bits.  The TableRevision is now considered when making this
17127conversion to avoid incompatibility with existing ASL code.
17128
17129Implemented logical addressing for AcpiOsGetRootPointer.  This
17130allows an RSDP with either a logical or physical address.  With
17131this support, the host OS can now override all ACPI tables with
17132one logical RSDP.  Includes implementation of  "typed" pointer
17133support to allow a common data type for both physical and logical
17134pointers internally.  This required a change to the
17135AcpiOsGetRootPointer interface.
17136
17137Implemented the use of ACPI 2.0 Generic Address Structures for all
17138GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
17139mapped I/O for these ACPI features.
17140
17141Initialization now ignores not only non-required tables (All
17142tables other than the FADT, FACS, DSDT, and SSDTs), but also does
17143not validate the table headers of unrecognized tables.
17144
17145Fixed a problem where a notify handler could only be
17146installed/removed on an object of type Device.  All "notify"
17147
17148objects are now supported -- Devices, Processor, Power, and
17149Thermal.
17150
17151Removed most verbosity from the ACPI_DB_INFO debug level.  Only
17152critical information is returned when this debug level is enabled.
17153
17154Code and Data Size: Current core subsystem library sizes are shown
17155below.  These are the code and data sizes for the acpica.lib
17156produced by the Microsoft Visual C++ 6.0 compiler, and these
17157values do not include any ACPI driver or OSPM code.  The debug
17158version of the code includes the debug output trace mechanism and
17159has a larger code and data size.  Note that these values will vary
17160depending on the efficiency of the compiler and the compiler
17161options used during generation.
17162
17163  Previous Release
17164    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
17165    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
17166  Current Release:
17167    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
17168    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
17169
17170
171712) Linux:
17172
17173The processor driver (acpi_processor.c) now fully supports ACPI
171742.0-based processor performance control (e.g. Intel(R)
17175SpeedStep(TM) technology) Note that older laptops that only have
17176the Intel "applet" interface are not supported through this.  The
17177'limit' and 'performance' interface (/proc) are fully functional.
17178[Note that basic policy for controlling performance state
17179transitions will be included in the next version of ospmd.]  The
17180idle handler was modified to more aggressively use C2, and PIIX4
17181errata handling underwent a complete overhaul (big thanks to
17182Dominik Brodowski).
17183
17184Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
17185based devices in the ACPI namespace are now dynamically bound
17186(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
17187This allows, among other things, ACPI to resolve bus numbers for
17188subordinate PCI bridges.
17189
17190Enhanced PCI IRQ routing to get the proper bus number for _PRT
17191entries defined underneath PCI bridges.
17192
17193Added IBM 600E to bad bios list due to invalid _ADR value for
17194PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
17195
17196In the process of adding full MADT support (e.g. IOAPIC) for IA32
17197(acpi.c, mpparse.c) -- stay tuned.
17198
17199Added back visual differentiation between fixed-feature and
17200control-method buttons in dmesg.  Buttons are also subtyped (e.g.
17201button/power/PWRF) to simplify button identification.
17202
17203We no longer use -Wno-unused when compiling debug. Please ignore
17204any "_THIS_MODULE defined but not used" messages.
17205
17206Can now shut down the system using "magic sysrq" key.
17207
17208
172093) iASL Compiler version 2041:
17210
17211Fixed a problem where conversion errors for hex/octal/decimal
17212constants were not reported.
17213
17214Implemented a fix for the General Register template Address field.
17215This field was 8 bits when it should be 64.
17216
17217Fixed a problem where errors/warnings were no longer being emitted
17218within the listing output file.
17219
17220Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
17221exactly 4 characters, alphanumeric only.
17222
17223
17224
17225
17226----------------------------------------
17227Summary of changes for this release: 03_08_02
17228
17229
172301) ACPI CA Core Subsystem Version 20020308:
17231
17232Fixed a problem with AML Fields where the use of the "AccessAny"
17233keyword could cause an interpreter error due to attempting to read
17234or write beyond the end of the parent Operation Region.
17235
17236Fixed a problem in the SystemMemory Operation Region handler where
17237an attempt was made to map memory beyond the end of the region.
17238This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
17239errors on some Linux systems.
17240
17241Fixed a problem where the interpreter/namespace "search to root"
17242algorithm was not functioning for some object types.  Relaxed the
17243internal restriction on the search to allow upsearches for all
17244external object types as well as most internal types.
17245
17246
172472) Linux:
17248
17249We now use safe_halt() macro versus individual calls to sti | hlt.
17250
17251Writing to the processor limit interface should now work. "echo 1"
17252will increase the limit, 2 will decrease, and 0 will reset to the
17253
17254default.
17255
17256
172573) ASL compiler:
17258
17259Fixed segfault on Linux version.
17260
17261
17262----------------------------------------
17263Summary of changes for this release: 02_25_02
17264
172651) ACPI CA Core Subsystem:
17266
17267
17268Fixed a problem where the GPE bit masks were not initialized
17269properly, causing erratic GPE behavior.
17270
17271Implemented limited support for multiple calling conventions.  The
17272code can be generated with either the VPL (variable parameter
17273list, or "C") convention, or the FPL (fixed parameter list, or
17274"Pascal") convention.  The core subsystem is about 3.4% smaller
17275when generated with FPL.
17276
17277
172782) Linux
17279
17280Re-add some /proc/acpi/event functionality that was lost during
17281the rewrite
17282
17283Resolved issue with /proc events for fixed-feature buttons showing
17284up as the system device.
17285
17286Fixed checks on C2/C3 latencies to be inclusive of maximum values.
17287
17288Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
17289
17290Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
17291
17292Fixed limit interface & usage to fix bugs with passive cooling
17293hysterisis.
17294
17295Restructured PRT support.
17296
17297
17298----------------------------------------
17299Summary of changes for this label: 02_14_02
17300
17301
173021) ACPI CA Core Subsystem:
17303
17304Implemented support in AcpiLoadTable to allow loading of FACS and
17305FADT tables.
17306
17307Support for the now-obsolete interim 0.71 64-bit ACPI tables has
17308been removed.  All 64-bit platforms should be migrated to the ACPI
173092.0 tables.  The actbl71.h header has been removed from the source
17310tree.
17311
17312All C macros defined within the subsystem have been prefixed with
17313"ACPI_" to avoid collision with other system include files.
17314
17315Removed the return value for the two AcpiOsPrint interfaces, since
17316it is never used and causes lint warnings for ignoring the return
17317value.
17318
17319Added error checking to all internal mutex acquire and release
17320calls.  Although a failure from one of these interfaces is
17321probably a fatal system error, these checks will cause the
17322immediate abort of the currently executing method or interface.
17323
17324Fixed a problem where the AcpiSetCurrentResources interface could
17325fault.  This was a side effect of the deployment of the new memory
17326allocation model.
17327
17328Fixed a couple of problems with the Global Lock support introduced
17329in the last major build.  The "common" (1.0/2.0) internal FACS was
17330being overwritten with the FACS signature and clobbering the
17331Global Lock pointer.  Also, the actual firmware FACS was being
17332unmapped after construction of the "common" FACS, preventing
17333access to the actual Global Lock field within it.  The "common"
17334internal FACS is no longer installed as an actual ACPI table; it
17335is used simply as a global.
17336
17337Code and Data Size: Current core subsystem library sizes are shown
17338below.  These are the code and data sizes for the acpica.lib
17339produced by the Microsoft Visual C++ 6.0 compiler, and these
17340values do not include any ACPI driver or OSPM code.  The debug
17341version of the code includes the debug output trace mechanism and
17342has a larger code and data size.  Note that these values will vary
17343depending on the efficiency of the compiler and the compiler
17344options used during generation.
17345
17346  Previous Release (02_07_01)
17347    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
17348    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
17349  Current Release:
17350    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
17351    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
17352
17353
173542) Linux
17355
17356Updated Linux-specific code for core macro and OSL interface
17357changes described above.
17358
17359Improved /proc/acpi/event. It now can be opened only once and has
17360proper poll functionality.
17361
17362Fixed and restructured power management (acpi_bus).
17363
17364Only create /proc "view by type" when devices of that class exist.
17365
17366Fixed "charging/discharging" bug (and others) in acpi_battery.
17367
17368Improved thermal zone code.
17369
17370
173713) ASL Compiler, version X2039:
17372
17373
17374Implemented the new compiler restriction on ASL String hex/octal
17375escapes to non-null, ASCII values.  An error results if an invalid
17376value is used.  (This will require an ACPI 2.0 specification
17377change.)
17378
17379AML object labels that are output to the optional C and ASM source
17380are now prefixed with both the ACPI table signature and table ID
17381to help guarantee uniqueness within a large BIOS project.
17382
17383
17384----------------------------------------
17385Summary of changes for this label: 02_01_02
17386
173871) ACPI CA Core Subsystem:
17388
17389ACPI 2.0 support is complete in the entire Core Subsystem and the
17390ASL compiler. All new ACPI 2.0 operators are implemented and all
17391other changes for ACPI 2.0 support are complete.  With
17392simultaneous code and data optimizations throughout the subsystem,
17393ACPI 2.0 support has been implemented with almost no additional
17394cost in terms of code and data size.
17395
17396Implemented a new mechanism for allocation of return buffers.  If
17397the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
17398be allocated on behalf of the caller.  Consolidated all return
17399buffer validation and allocation to a common procedure.  Return
17400buffers will be allocated via the primary OSL allocation interface
17401since it appears that a separate pool is not needed by most users.
17402If a separate pool is required for these buffers, the caller can
17403still use the original mechanism and pre-allocate the buffer(s).
17404
17405Implemented support for string operands within the DerefOf
17406operator.
17407
17408Restructured the Hardware and Event managers to be table driven,
17409simplifying the source code and reducing the amount of generated
17410code.
17411
17412Split the common read/write low-level ACPI register bitfield
17413procedure into a separate read and write, simplifying the code
17414considerably.
17415
17416Obsoleted the AcpiOsCallocate OSL interface.  This interface was
17417used only a handful of times and didn't have enough critical mass
17418for a separate interface.  Replaced with a common calloc procedure
17419in the core.
17420
17421Fixed a reported problem with the GPE number mapping mechanism
17422that allows GPE1 numbers to be non-contiguous with GPE0.
17423Reorganized the GPE information and shrunk a large array that was
17424originally large enough to hold info for all possible GPEs (256)
17425to simply large enough to hold all GPEs up to the largest GPE
17426number on the machine.
17427
17428Fixed a reported problem with resource structure alignment on 64-
17429bit platforms.
17430
17431Changed the AcpiEnableEvent and AcpiDisableEvent external
17432interfaces to not require any flags for the common case of
17433enabling/disabling a GPE.
17434
17435Implemented support to allow a "Notify" on a Processor object.
17436
17437Most TBDs in comments within the source code have been resolved
17438and eliminated.
17439
17440
17441Fixed a problem in the interpreter where a standalone parent
17442prefix (^) was not handled correctly in the interpreter and
17443debugger.
17444
17445Removed obsolete and unnecessary GPE save/restore code.
17446
17447Implemented Field support in the ASL Load operator.  This allows a
17448table to be loaded from a named field, in addition to loading a
17449table directly from an Operation Region.
17450
17451Implemented timeout and handle support in the external Global Lock
17452interfaces.
17453
17454Fixed a problem in the AcpiDump utility where pathnames were no
17455longer being generated correctly during the dump of named objects.
17456
17457Modified the AML debugger to give a full display of if/while
17458predicates instead of just one AML opcode at a time.  (The
17459predicate can have several nested ASL statements.)  The old method
17460was confusing during single stepping.
17461
17462Code and Data Size: Current core subsystem library sizes are shown
17463below. These are the code and data sizes for the acpica.lib
17464produced by the Microsoft Visual C++ 6.0 compiler, and these
17465values do not include any ACPI driver or OSPM code.  The debug
17466version of the code includes the debug output trace mechanism and
17467has a larger code and data size.  Note that these values will vary
17468depending on the efficiency of the compiler and the compiler
17469options used during generation.
17470
17471  Previous Release (12_18_01)
17472     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
17473     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
17474   Current Release:
17475     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
17476     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
17477
174782) Linux
17479
17480 Implemented fix for PIIX reverse throttling errata (Processor
17481driver)
17482
17483Added new Limit interface (Processor and Thermal drivers)
17484
17485New thermal policy (Thermal driver)
17486
17487Many updates to /proc
17488
17489Battery "low" event support (Battery driver)
17490
17491Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
17492
17493IA32 - IA64 initialization unification, no longer experimental
17494
17495Menuconfig options redesigned
17496
174973) ASL Compiler, version X2037:
17498
17499Implemented several new output features to simplify integration of
17500AML code into  firmware: 1) Output the AML in C source code with
17501labels for each named ASL object.  The    original ASL source code
17502is interleaved as C comments. 2) Output the AML in ASM source code
17503with labels and interleaved ASL    source. 3) Output the AML in
17504raw hex table form, in either C or ASM.
17505
17506Implemented support for optional string parameters to the
17507LoadTable operator.
17508
17509Completed support for embedded escape sequences within string
17510literals.  The compiler now supports all single character escapes
17511as well as the Octal and Hex escapes.  Note: the insertion of a
17512null byte into a string literal (via the hex/octal escape) causes
17513the string to be immediately terminated.  A warning is issued.
17514
17515Fixed a problem where incorrect AML was generated for the case
17516where an ASL namepath consists of a single parent prefix (
17517
17518) with no trailing name segments.
17519
17520The compiler has been successfully generated with a 64-bit C
17521compiler.
17522
17523
17524
17525
17526----------------------------------------
17527Summary of changes for this label: 12_18_01
17528
175291) Linux
17530
17531Enhanced blacklist with reason and severity fields. Any table's
17532signature may now be used to identify a blacklisted system.
17533
17534Call _PIC control method to inform the firmware which interrupt
17535model the OS is using. Turn on any disabled link devices.
17536
17537Cleaned up busmgr /proc error handling (Andreas Dilger)
17538
17539 2) ACPI CA Core Subsystem:
17540
17541Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
17542while loop)
17543
17544Completed implementation of the ACPI 2.0 "Continue",
17545"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
17546operators.  All new ACPI 2.0 operators are now implemented in both
17547the ASL compiler and the AML interpreter.  The only remaining ACPI
175482.0 task is support for the String data type in the DerefOf
17549operator.  Fixed a problem with AcquireMutex where the status code
17550was lost if the caller had to actually wait for the mutex.
17551
17552Increased the maximum ASL Field size from 64K bits to 4G bits.
17553
17554Completed implementation of the external Global Lock interfaces --
17555AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
17556Handler parameters were added.
17557
17558Completed another pass at removing warnings and issues when
17559compiling with 64-bit compilers.  The code now compiles cleanly
17560with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
17561add and subtract (diff) macros have changed considerably.
17562
17563
17564Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1756564-bit platforms, 32-bits on all others.  This type is used
17566wherever memory allocation and/or the C sizeof() operator is used,
17567and affects the OSL memory allocation interfaces AcpiOsAllocate
17568and AcpiOsCallocate.
17569
17570Implemented sticky user breakpoints in the AML debugger.
17571
17572Code and Data Size: Current core subsystem library sizes are shown
17573below. These are the code and data sizes for the acpica.lib
17574produced by the Microsoft Visual C++ 6.0 compiler, and these
17575values do not include any ACPI driver or OSPM code.  The debug
17576version of the code includes the debug output trace mechanism and
17577has a larger code and data size. Note that these values will vary
17578depending on the efficiency of the compiler and the compiler
17579options used during generation.
17580
17581  Previous Release (12_05_01)
17582     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
17583     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
17584   Current Release:
17585     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
17586     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
17587
17588 3) ASL Compiler, version X2034:
17589
17590Now checks for (and generates an error if detected) the use of a
17591Break or Continue statement without an enclosing While statement.
17592
17593
17594Successfully generated the compiler with the Intel 64-bit C
17595compiler.
17596
17597 ----------------------------------------
17598Summary of changes for this label: 12_05_01
17599
17600 1) ACPI CA Core Subsystem:
17601
17602The ACPI 2.0 CopyObject operator is fully implemented.  This
17603operator creates a new copy of an object (and is also used to
17604bypass the "implicit conversion" mechanism of the Store operator.)
17605
17606The ACPI 2.0 semantics for the SizeOf operator are fully
17607implemented.  The change is that performing a SizeOf on a
17608reference object causes an automatic dereference of the object to
17609tha actual value before the size is evaluated. This behavior was
17610undefined in ACPI 1.0.
17611
17612The ACPI 2.0 semantics for the Extended IRQ resource descriptor
17613have been implemented.  The interrupt polarity and mode are now
17614independently set.
17615
17616Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
17617appearing in Package objects were not properly converted to
17618integers when the internal Package was converted to an external
17619object (via the AcpiEvaluateObject interface.)
17620
17621Fixed a problem with the namespace object deletion mechanism for
17622objects created by control methods.  There were two parts to this
17623problem: 1) Objects created during the initialization phase method
17624parse were not being deleted, and 2) The object owner ID mechanism
17625to track objects was broken.
17626
17627Fixed a problem where the use of the ASL Scope operator within a
17628control method would result in an invalid opcode exception.
17629
17630Fixed a problem introduced in the previous label where the buffer
17631length required for the _PRT structure was not being returned
17632correctly.
17633
17634Code and Data Size: Current core subsystem library sizes are shown
17635below. These are the code and data sizes for the acpica.lib
17636produced by the Microsoft Visual C++ 6.0 compiler, and these
17637values do not include any ACPI driver or OSPM code.  The debug
17638version of the code includes the debug output trace mechanism and
17639has a larger code and data size.  Note that these values will vary
17640depending on the efficiency of the compiler and the compiler
17641options used during generation.
17642
17643  Previous Release (11_20_01)
17644     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
17645     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
17646
17647  Current Release:
17648     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
17649     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
17650
17651 2) Linux:
17652
17653Updated all files to apply cleanly against 2.4.16.
17654
17655Added basic PCI Interrupt Routing Table (PRT) support for IA32
17656(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
17657version supports both static and dynamic PRT entries, but dynamic
17658entries are treated as if they were static (not yet
17659reconfigurable).  Architecture- specific code to use this data is
17660absent on IA32 but should be available shortly.
17661
17662Changed the initialization sequence to start the ACPI interpreter
17663(acpi_init) prior to initialization of the PCI driver (pci_init)
17664in init/main.c.  This ordering is required to support PRT and
17665facilitate other (future) enhancement.  A side effect is that the
17666ACPI bus driver and certain device drivers can no longer be loaded
17667as modules.
17668
17669Modified the 'make menuconfig' options to allow PCI Interrupt
17670Routing support to be included without the ACPI Bus and other
17671device drivers.
17672
17673 3) ASL Compiler, version X2033:
17674
17675Fixed some issues with the use of the new CopyObject and
17676DataTableRegion operators.  Both are fully functional.
17677
17678 ----------------------------------------
17679Summary of changes for this label: 11_20_01
17680
17681 20 November 2001.  Summary of changes for this release.
17682
17683 1) ACPI CA Core Subsystem:
17684
17685Updated Index support to match ACPI 2.0 semantics.  Storing a
17686Integer, String, or Buffer to an Index of a Buffer will store only
17687the least-significant byte of the source to the Indexed buffer
17688byte.  Multiple writes are not performed.
17689
17690Fixed a problem where the access type used in an AccessAs ASL
17691operator was not recorded correctly into the field object.
17692
17693Fixed a problem where ASL Event objects were created in a
17694signalled state. Events are now created in an unsignalled state.
17695
17696The internal object cache is now purged after table loading and
17697initialization to reduce the use of dynamic kernel memory -- on
17698the assumption that object use is greatest during the parse phase
17699of the entire table (versus the run-time use of individual control
17700methods.)
17701
17702ACPI 2.0 variable-length packages are now fully operational.
17703
17704Code and Data Size: Code and Data optimizations have permitted new
17705feature development with an actual reduction in the library size.
17706Current core subsystem library sizes are shown below.  These are
17707the code and data sizes for the acpica.lib produced by the
17708Microsoft Visual C++ 6.0 compiler, and these values do not include
17709any ACPI driver or OSPM code.  The debug version of the code
17710includes the debug output trace mechanism and has a larger code
17711and data size.  Note that these values will vary depending on the
17712efficiency of the compiler and the compiler options used during
17713generation.
17714
17715  Previous Release (11_09_01):
17716     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
17717     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
17718
17719  Current Release:
17720     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
17721     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
17722
17723 2) Linux:
17724
17725Enhanced the ACPI boot-time initialization code to allow the use
17726of Local APIC tables for processor enumeration on IA-32, and to
17727pave the way for a fully MPS-free boot (on SMP systems) in the
17728near future.  This functionality replaces
17729arch/i386/kernel/acpitables.c, which was introduced in an earlier
177302.4.15-preX release.  To enable this feature you must add
17731"acpi_boot=on" to the kernel command line -- see the help entry
17732for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
17733the works...
17734
17735Restructured the configuration options to allow boot-time table
17736parsing support without inclusion of the ACPI Interpreter (and
17737other) code.
17738
17739NOTE: This release does not include fixes for the reported events,
17740power-down, and thermal passive cooling issues (coming soon).
17741
17742 3) ASL Compiler:
17743
17744Added additional typechecking for Fields within restricted access
17745Operation Regions.  All fields within EC and CMOS regions must be
17746declared with ByteAcc. All fields within SMBus regions must be
17747declared with the BufferAcc access type.
17748
17749Fixed a problem where the listing file output of control methods
17750no longer interleaved the actual AML code with the ASL source
17751code.
17752
17753
17754
17755
17756----------------------------------------
17757Summary of changes for this label: 11_09_01
17758
177591) ACPI CA Core Subsystem:
17760
17761Implemented ACPI 2.0-defined support for writes to fields with a
17762Buffer, String, or Integer source operand that is smaller than the
17763target field. In these cases, the source operand is zero-extended
17764to fill the target field.
17765
17766Fixed a problem where a Field starting bit offset (within the
17767parent operation region) was calculated incorrectly if the
17768
17769alignment of the field differed from the access width.  This
17770affected CreateWordField, CreateDwordField, CreateQwordField, and
17771possibly other fields that use the "AccessAny" keyword.
17772
17773Fixed a problem introduced in the 11_02_01 release where indirect
17774stores through method arguments did not operate correctly.
17775
177762) Linux:
17777
17778Implemented boot-time ACPI table parsing support
17779(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
17780facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
17781legacy BIOS interfaces (e.g. MPS) for the configuration of system
17782processors, memory, and interrupts during setup_arch().  Note that
17783this patch does not include the required architecture-specific
17784changes required to apply this information -- subsequent patches
17785will be posted for both IA32 and IA64 to achieve this.
17786
17787Added low-level sleep support for IA32 platforms, courtesy of Pat
17788Mochel. This allows IA32 systems to transition to/from various
17789sleeping states (e.g. S1, S3), although the lack of a centralized
17790driver model and power-manageable drivers will prevent its
17791(successful) use on most systems.
17792
17793Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
17794submenu, unified IA32 and IA64 options, added new "Boot using ACPI
17795tables" option, etc.
17796
17797Increased the default timeout for the EC driver from 1ms to 10ms
17798(1000 cycles of 10us) to try to address AE_TIME errors during EC
17799transactions.
17800
17801 ----------------------------------------
17802Summary of changes for this label: 11_02_01
17803
178041) ACPI CA Core Subsystem:
17805
17806ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
17807(QWordAcc keyword). All ACPI 2.0 64-bit support is now
17808implemented.
17809
17810OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
17811changes to support ACPI 2.0 Qword field access.  Read/Write
17812PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
17813accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
17814the value parameter for the address space handler interface is now
17815an ACPI_INTEGER.  OSL implementations of these interfaces must now
17816handle the case where the Width parameter is 64.
17817
17818Index Fields: Fixed a problem where unaligned bit assembly and
17819disassembly for IndexFields was not supported correctly.
17820
17821Index and Bank Fields:  Nested Index and Bank Fields are now
17822supported. During field access, a check is performed to ensure
17823that the value written to an Index or Bank register is not out of
17824the range of the register.  The Index (or Bank) register is
17825written before each access to the field data. Future support will
17826include allowing individual IndexFields to be wider than the
17827DataRegister width.
17828
17829Fields: Fixed a problem where the AML interpreter was incorrectly
17830attempting to write beyond the end of a Field/OpRegion.  This was
17831a boundary case that occurred when a DWORD field was written to a
17832BYTE access OpRegion, forcing multiple writes and causing the
17833interpreter to write one datum too many.
17834
17835Fields: Fixed a problem with Field/OpRegion access where the
17836starting bit address of a field was incorrectly calculated if the
17837current access type was wider than a byte (WordAcc, DwordAcc, or
17838QwordAcc).
17839
17840Fields: Fixed a problem where forward references to individual
17841FieldUnits (individual Field names within a Field definition) were
17842not resolved during the AML table load.
17843
17844Fields: Fixed a problem where forward references from a Field
17845definition to the parent Operation Region definition were not
17846resolved during the AML table load.
17847
17848Fields: Duplicate FieldUnit names within a scope are now detected
17849during AML table load.
17850
17851Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
17852returned an incorrect name for the root node.
17853
17854Code and Data Size: Code and Data optimizations have permitted new
17855feature development with an actual reduction in the library size.
17856Current core subsystem library sizes are shown below.  These are
17857the code and data sizes for the acpica.lib produced by the
17858Microsoft Visual C++ 6.0 compiler, and these values do not include
17859any ACPI driver or OSPM code.  The debug version of the code
17860includes the debug output trace mechanism and has a larger code
17861and data size.  Note that these values will vary depending on the
17862efficiency of the compiler and the compiler options used during
17863generation.
17864
17865  Previous Release (10_18_01):
17866     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
17867     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
17868
17869  Current Release:
17870     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
17871     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
17872
17873 2) Linux:
17874
17875Improved /proc processor output (Pavel Machek) Re-added
17876MODULE_LICENSE("GPL") to all modules.
17877
17878 3) ASL Compiler version X2030:
17879
17880Duplicate FieldUnit names within a scope are now detected and
17881flagged as errors.
17882
17883 4) Documentation:
17884
17885Programmer Reference updated to reflect OSL and address space
17886handler interface changes described above.
17887
17888----------------------------------------
17889Summary of changes for this label: 10_18_01
17890
17891ACPI CA Core Subsystem:
17892
17893Fixed a problem with the internal object reference count mechanism
17894that occasionally caused premature object deletion. This resolves
17895all of the outstanding problem reports where an object is deleted
17896in the middle of an interpreter evaluation.  Although this problem
17897only showed up in rather obscure cases, the solution to the
17898problem involved an adjustment of all reference counts involving
17899objects attached to namespace nodes.
17900
17901Fixed a problem with Field support in the interpreter where
17902writing to an aligned field whose length is an exact multiple (2
17903or greater) of the field access granularity would cause an attempt
17904to write beyond the end of the field.
17905
17906The top level AML opcode execution functions within the
17907interpreter have been renamed with a more meaningful and
17908consistent naming convention.  The modules exmonad.c and
17909exdyadic.c were eliminated.  New modules are exoparg1.c,
17910exoparg2.c, exoparg3.c, and exoparg6.c.
17911
17912Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
17913
17914Fixed a problem where the AML debugger was causing some internal
17915objects to not be deleted during subsystem termination.
17916
17917Fixed a problem with the external AcpiEvaluateObject interface
17918where the subsystem would fault if the named object to be
17919evaluated referred to a constant such as Zero, Ones, etc.
17920
17921Fixed a problem with IndexFields and BankFields where the
17922subsystem would fault if the index, data, or bank registers were
17923not defined in the same scope as the field itself.
17924
17925Added printf format string checking for compilers that support
17926this feature.  Corrected more than 50 instances of issues with
17927format specifiers within invocations of ACPI_DEBUG_PRINT
17928throughout the core subsystem code.
17929
17930The ASL "Revision" operator now returns the ACPI support level
17931implemented in the core - the value "2" since the ACPI 2.0 support
17932is more than 50% implemented.
17933
17934Enhanced the output of the AML debugger "dump namespace" command
17935to output in a more human-readable form.
17936
17937Current core subsystem library code sizes are shown below.  These
17938
17939are the code and data sizes for the acpica.lib produced by the
17940Microsoft Visual C++ 6.0 compiler, and these values do not include
17941any ACPI driver or OSPM code.  The debug version of the code
17942includes the full debug trace mechanism -- leading to a much
17943
17944larger code and data size.  Note that these values will vary
17945depending on the efficiency of the compiler and the compiler
17946options used during generation.
17947
17948     Previous Label (09_20_01):
17949     Non-Debug Version:    65K Code,     5K Data,     70K Total
17950     Debug Version:       138K Code,    58K Data,    196K Total
17951
17952     This Label:
17953
17954     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
17955     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
17956
17957Linux:
17958
17959Implemented a "Bad BIOS Blacklist" to track machines that have
17960known ASL/AML problems.
17961
17962Enhanced the /proc interface for the thermal zone driver and added
17963support for _HOT (the critical suspend trip point).  The 'info'
17964file now includes threshold/policy information, and allows setting
17965of _SCP (cooling preference) and _TZP (polling frequency) values
17966to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
17967frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
17968preference to the passive/quiet mode (if supported by the ASL).
17969
17970Implemented a workaround for a gcc bug that resuted in an OOPs
17971when loading the control method battery driver.
17972
17973 ----------------------------------------
17974Summary of changes for this label: 09_20_01
17975
17976 ACPI CA Core Subsystem:
17977
17978The AcpiEnableEvent and AcpiDisableEvent interfaces have been
17979modified to allow individual GPE levels to be flagged as wake-
17980enabled (i.e., these GPEs are to remain enabled when the platform
17981sleeps.)
17982
17983The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
17984support wake-enabled GPEs.  This means that upon entering the
17985sleep state, all GPEs that are not wake-enabled are disabled.
17986When leaving the sleep state, these GPEs are re-enabled.
17987
17988A local double-precision divide/modulo module has been added to
17989enhance portability to OS kernels where a 64-bit math library is
17990not available.  The new module is "utmath.c".
17991
17992Several optimizations have been made to reduce the use of CPU
17993stack.  Originally over 2K, the maximum stack usage is now below
179942K at 1860  bytes (1.82k)
17995
17996Fixed a problem with the AcpiGetFirmwareTable interface where the
17997root table pointer was not mapped into a logical address properly.
17998
17999Fixed a problem where a NULL pointer was being dereferenced in the
18000interpreter code for the ASL Notify operator.
18001
18002Fixed a problem where the use of the ASL Revision operator
18003returned an error. This operator now returns the current version
18004of the ACPI CA core subsystem.
18005
18006Fixed a problem where objects passed as control method parameters
18007to AcpiEvaluateObject were always deleted at method termination.
18008However, these objects may end up being stored into the namespace
18009by the called method.  The object reference count mechanism was
18010applied to these objects instead of a force delete.
18011
18012Fixed a problem where static strings or buffers (contained in the
18013AML code) that are declared as package elements within the ASL
18014code could cause a fault because the interpreter would attempt to
18015delete them.  These objects are now marked with the "static
18016object" flag to prevent any attempt to delete them.
18017
18018Implemented an interpreter optimization to use operands directly
18019from the state object instead of extracting the operands to local
18020variables.  This reduces stack use and code size, and improves
18021performance.
18022
18023The module exxface.c was eliminated as it was an unnecessary extra
18024layer of code.
18025
18026Current core subsystem library code sizes are shown below.  These
18027are the code and data sizes for the acpica.lib produced by the
18028Microsoft Visual C++ 6.0 compiler, and these values do not include
18029any ACPI driver or OSPM code.  The debug version of the code
18030includes the full debug trace mechanism -- leading to a much
18031larger code and data size.  Note that these values will vary
18032depending on the efficiency of the compiler and the compiler
18033options used during generation.
18034
18035  Non-Debug Version:  65K Code,   5K Data,   70K Total
18036(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
18037Total  (Previously 195K)
18038
18039Linux:
18040
18041Support for ACPI 2.0 64-bit integers has been added.   All ACPI
18042Integer objects are now 64 bits wide
18043
18044All Acpi data types and structures are now in lower case.  Only
18045Acpi macros are upper case for differentiation.
18046
18047 Documentation:
18048
18049Changes to the external interfaces as described above.
18050
18051 ----------------------------------------
18052Summary of changes for this label: 08_31_01
18053
18054 ACPI CA Core Subsystem:
18055
18056A bug with interpreter implementation of the ASL Divide operator
18057was found and fixed.  The implicit function return value (not the
18058explicit store operands) was returning the remainder instead of
18059the quotient.  This was a longstanding bug and it fixes several
18060known outstanding issues on various platforms.
18061
18062The ACPI_DEBUG_PRINT and function trace entry/exit macros have
18063been further optimized for size.  There are 700 invocations of the
18064DEBUG_PRINT macro alone, so each optimization reduces the size of
18065the debug version of the subsystem significantly.
18066
18067A stack trace mechanism has been implemented.  The maximum stack
18068usage is about 2K on 32-bit platforms.  The debugger command "stat
18069stack" will display the current maximum stack usage.
18070
18071All public symbols and global variables within the subsystem are
18072now prefixed with the string "Acpi".  This keeps all of the
18073symbols grouped together in a kernel map, and avoids conflicts
18074with other kernel subsystems.
18075
18076Most of the internal fixed lookup tables have been moved into the
18077code segment via the const operator.
18078
18079Several enhancements have been made to the interpreter to both
18080reduce the code size and improve performance.
18081
18082Current core subsystem library code sizes are shown below.  These
18083are the code and data sizes for the acpica.lib produced by the
18084Microsoft Visual C++ 6.0 compiler, and these values do not include
18085any ACPI driver or OSPM code.  The debug version of the code
18086includes the full debug trace mechanism which contains over 700
18087invocations of the DEBUG_PRINT macro, 500 function entry macro
18088invocations, and over 900 function exit macro invocations --
18089leading to a much larger code and data size.  Note that these
18090values will vary depending on the efficiency of the compiler and
18091the compiler options used during generation.
18092
18093        Non-Debug Version:  64K Code,   5K Data,   69K Total
18094Debug Version:     137K Code,  58K Data,  195K Total
18095
18096 Linux:
18097
18098Implemented wbinvd() macro, pending a kernel-wide definition.
18099
18100Fixed /proc/acpi/event to handle poll() and short reads.
18101
18102 ASL Compiler, version X2026:
18103
18104Fixed a problem introduced in the previous label where the AML
18105
18106code emitted for package objects produced packages with zero
18107length.
18108
18109 ----------------------------------------
18110Summary of changes for this label: 08_16_01
18111
18112ACPI CA Core Subsystem:
18113
18114The following ACPI 2.0 ASL operators have been implemented in the
18115AML interpreter (These are already supported by the Intel ASL
18116compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
18117ToBuffer.  Support for 64-bit AML constants is implemented in the
18118AML parser, debugger, and disassembler.
18119
18120The internal memory tracking mechanism (leak detection code) has
18121been upgraded to reduce the memory overhead (a separate tracking
18122block is no longer allocated for each memory allocation), and now
18123supports all of the internal object caches.
18124
18125The data structures and code for the internal object caches have
18126been coelesced and optimized so that there is a single cache and
18127memory list data structure and a single group of functions that
18128implement generic cache management.  This has reduced the code
18129size in both the debug and release versions of the subsystem.
18130
18131The DEBUG_PRINT macro(s) have been optimized for size and replaced
18132by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
18133different, because it generates a single call to an internal
18134function.  This results in a savings of about 90 bytes per
18135invocation, resulting in an overall code and data savings of about
1813616% in the debug version of the subsystem.
18137
18138 Linux:
18139
18140Fixed C3 disk corruption problems and re-enabled C3 on supporting
18141machines.
18142
18143Integrated low-level sleep code by Patrick Mochel.
18144
18145Further tweaked source code Linuxization.
18146
18147Other minor fixes.
18148
18149 ASL Compiler:
18150
18151Support for ACPI 2.0 variable length packages is fixed/completed.
18152
18153Fixed a problem where the optional length parameter for the ACPI
181542.0 ToString operator.
18155
18156Fixed multiple extraneous error messages when a syntax error is
18157detected within the declaration line of a control method.
18158
18159 ----------------------------------------
18160Summary of changes for this label: 07_17_01
18161
18162ACPI CA Core Subsystem:
18163
18164Added a new interface named AcpiGetFirmwareTable to obtain any
18165ACPI table via the ACPI signature.  The interface can be called at
18166any time during kernel initialization, even before the kernel
18167virtual memory manager is initialized and paging is enabled.  This
18168allows kernel subsystems to obtain ACPI tables very early, even
18169before the ACPI CA subsystem is initialized.
18170
18171Fixed a problem where Fields defined with the AnyAcc attribute
18172could be resolved to the incorrect address under the following
18173conditions: 1) the field width is larger than 8 bits and 2) the
18174parent operation region is not defined on a DWORD boundary.
18175
18176Fixed a problem where the interpreter is not being locked during
18177namespace initialization (during execution of the _INI control
18178methods), causing an error when an attempt is made to release it
18179later.
18180
18181ACPI 2.0 support in the AML Interpreter has begun and will be
18182ongoing throughout the rest of this year.  In this label, The Mod
18183operator is implemented.
18184
18185Added a new data type to contain full PCI addresses named
18186ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
18187and Function values.
18188
18189 Linux:
18190
18191Enhanced the Linux version of the source code to change most
18192capitalized ACPI type names to lowercase. For example, all
18193instances of ACPI_STATUS are changed to acpi_status.  This will
18194result in a large diff, but the change is strictly cosmetic and
18195aligns the CA code closer to the Linux coding standard.
18196
18197OSL Interfaces:
18198
18199The interfaces to the PCI configuration space have been changed to
18200add the PCI Segment number and to split the single 32-bit combined
18201DeviceFunction field into two 16-bit fields.  This was
18202accomplished by moving the four values that define an address in
18203PCI configuration space (segment, bus, device, and function) to
18204the new ACPI_PCI_ID structure.
18205
18206The changes to the PCI configuration space interfaces led to a
18207reexamination of the complete set of address space access
18208interfaces for PCI, I/O, and Memory.  The previously existing 18
18209interfaces have proven difficult to maintain (any small change
18210must be propagated across at least 6 interfaces) and do not easily
18211allow for future expansion to 64 bits if necessary.  Also, on some
18212systems, it would not be appropriate to demultiplex the access
18213width (8, 16, 32,or 64) before calling the OSL if the
18214corresponding native OS interfaces contain a similar access width
18215parameter.  For these reasons, the 18 address space interfaces
18216have been replaced by these 6 new ones:
18217
18218AcpiOsReadPciConfiguration
18219AcpiOsWritePciConfiguration
18220AcpiOsReadMemory
18221AcpiOsWriteMemory
18222AcpiOsReadPort
18223AcpiOsWritePort
18224
18225Added a new interface named AcpiOsGetRootPointer to allow the OSL
18226to perform the platform and/or OS-specific actions necessary to
18227obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
18228interface will simply call down to the CA core to perform the low-
18229memory search for the table.  On IA-64, the RSDP is obtained from
18230EFI.  Migrating this interface to the OSL allows the CA core to
18231
18232remain OS and platform independent.
18233
18234Added a new interface named AcpiOsSignal to provide a generic
18235"function code and pointer" interface for various miscellaneous
18236signals and notifications that must be made to the host OS.   The
18237first such signals are intended to support the ASL Fatal and
18238Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
18239interface has been obsoleted.
18240
18241The definition of the AcpiFormatException interface has been
18242changed to simplify its use.  The caller no longer must supply a
18243buffer to the call; A pointer to a const string is now returned
18244directly.  This allows the call to be easily used in printf
18245statements, etc. since the caller does not have to manage a local
18246buffer.
18247
18248
18249 ASL Compiler, Version X2025:
18250
18251The ACPI 2.0 Switch/Case/Default operators have been implemented
18252and are fully functional.  They will work with all ACPI 1.0
18253interpreters, since the operators are simply translated to If/Else
18254pairs.
18255
18256The ACPI 2.0 ElseIf operator is implemented and will also work
18257with 1.0 interpreters, for the same reason.
18258
18259Implemented support for ACPI 2.0 variable-length packages.  These
18260packages have a separate opcode, and their size is determined by
18261the interpreter at run-time.
18262
18263Documentation The ACPI CA Programmer Reference has been updated to
18264reflect the new interfaces and changes to existing interfaces.
18265
18266 ------------------------------------------
18267Summary of changes for this label: 06_15_01
18268
18269 ACPI CA Core Subsystem:
18270
18271Fixed a problem where a DWORD-accessed field within a Buffer
18272object would get its byte address inadvertently rounded down to
18273the nearest DWORD.  Buffers are always Byte-accessible.
18274
18275 ASL Compiler, version X2024:
18276
18277Fixed a problem where the Switch() operator would either fault or
18278hang the compiler.  Note however, that the AML code for this ACPI
182792.0 operator is not yet implemented.
18280
18281Compiler uses the new AcpiOsGetTimer interface to obtain compile
18282timings.
18283
18284Implementation of the CreateField operator automatically converts
18285a reference to a named field within a resource descriptor from a
18286byte offset to a bit offset if required.
18287
18288Added some missing named fields from the resource descriptor
18289support. These are the names that are automatically created by the
18290compiler to reference fields within a descriptor.  They are only
18291valid at compile time and are not passed through to the AML
18292interpreter.
18293
18294Resource descriptor named fields are now typed as Integers and
18295subject to compile-time typechecking when used in expressions.
18296
18297 ------------------------------------------
18298Summary of changes for this label: 05_18_01
18299
18300 ACPI CA Core Subsystem:
18301
18302Fixed a couple of problems in the Field support code where bits
18303from adjacent fields could be returned along with the proper field
18304bits. Restructured the field support code to improve performance,
18305readability and maintainability.
18306
18307New DEBUG_PRINTP macro automatically inserts the procedure name
18308into the output, saving hundreds of copies of procedure name
18309strings within the source, shrinking the memory footprint of the
18310debug version of the core subsystem.
18311
18312 Source Code Structure:
18313
18314The source code directory tree was restructured to reflect the
18315current organization of the component architecture.  Some files
18316and directories have been moved and/or renamed.
18317
18318 Linux:
18319
18320Fixed leaking kacpidpc processes.
18321
18322Fixed queueing event data even when /proc/acpi/event is not
18323opened.
18324
18325 ASL Compiler, version X2020:
18326
18327Memory allocation performance enhancement - over 24X compile time
18328improvement on large ASL files.  Parse nodes and namestring
18329buffers are now allocated from a large internal compiler buffer.
18330
18331The temporary .SRC file is deleted unless the "-s" option is
18332specified
18333
18334The "-d" debug output option now sends all output to the .DBG file
18335instead of the console.
18336
18337"External" second parameter is now optional
18338
18339"ElseIf" syntax now properly allows the predicate
18340
18341Last operand to "Load" now recognized as a Target operand
18342
18343Debug object can now be used anywhere as a normal object.
18344
18345ResourceTemplate now returns an object of type BUFFER
18346
18347EISAID now returns an object of type INTEGER
18348
18349"Index" now works with a STRING operand
18350
18351"LoadTable" now accepts optional parameters
18352
18353"ToString" length parameter is now optional
18354
18355"Interrupt (ResourceType," parse error fixed.
18356
18357"Register" with a user-defined region space parse error fixed
18358
18359Escaped backslash at the end of a string ("\\") scan/parse error
18360fixed
18361
18362"Revision" is now an object of type INTEGER.
18363
18364
18365
18366------------------------------------------
18367Summary of changes for this label: 05_02_01
18368
18369Linux:
18370
18371/proc/acpi/event now blocks properly.
18372
18373Removed /proc/sys/acpi. You can still dump your DSDT from
18374/proc/acpi/dsdt.
18375
18376 ACPI CA Core Subsystem:
18377
18378Fixed a problem introduced in the previous label where some of the
18379"small" resource descriptor types were not recognized.
18380
18381Improved error messages for the case where an ASL Field is outside
18382the range of the parent operation region.
18383
18384 ASL Compiler, version X2018:
18385
18386
18387Added error detection for ASL Fields that extend beyond the length
18388of the parent operation region (only if the length of the region
18389is known at compile time.)  This includes fields that have a
18390minimum access width that is smaller than the parent region, and
18391individual field units that are partially or entirely beyond the
18392extent of the parent.
18393
18394
18395
18396------------------------------------------
18397Summary of changes for this label: 04_27_01
18398
18399 ACPI CA Core Subsystem:
18400
18401Fixed a problem where the namespace mutex could be released at the
18402wrong time during execution of AcpiRemoveAddressSpaceHandler.
18403
18404Added optional thread ID output for debug traces, to simplify
18405debugging of multiple threads.  Added context switch notification
18406when the debug code realizes that a different thread is now
18407executing ACPI code.
18408
18409Some additional external data types have been prefixed with the
18410string "ACPI_" for consistency.  This may effect existing code.
18411The data types affected are the external callback typedefs - e.g.,
18412
18413WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
18414
18415 Linux:
18416
18417Fixed an issue with the OSL semaphore implementation where a
18418thread was waking up with an error from receiving a SIGCHLD
18419signal.
18420
18421Linux version of ACPI CA now uses the system C library for string
18422manipulation routines instead of a local implementation.
18423
18424Cleaned up comments and removed TBDs.
18425
18426 ASL Compiler, version X2017:
18427
18428Enhanced error detection and reporting for all file I/O
18429operations.
18430
18431 Documentation:
18432
18433Programmer Reference updated to version 1.06.
18434
18435
18436
18437------------------------------------------
18438Summary of changes for this label: 04_13_01
18439
18440 ACPI CA Core Subsystem:
18441
18442Restructured support for BufferFields and RegionFields.
18443BankFields support is now fully operational.  All known 32-bit
18444limitations on field sizes have been removed.  Both BufferFields
18445and (Operation) RegionFields are now supported by the same field
18446management code.
18447
18448Resource support now supports QWORD address and IO resources. The
1844916/32/64 bit address structures and the Extended IRQ structure
18450have been changed to properly handle Source Resource strings.
18451
18452A ThreadId of -1 is now used to indicate a "mutex not acquired"
18453condition internally and must never be returned by AcpiOsThreadId.
18454This reserved value was changed from 0 since Unix systems allow a
18455thread ID of 0.
18456
18457Linux:
18458
18459Driver code reorganized to enhance portability
18460
18461Added a kernel configuration option to control ACPI_DEBUG
18462
18463Fixed the EC driver to honor _GLK.
18464
18465ASL Compiler, version X2016:
18466
18467Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
18468address space was set to 0, not 0x7f as it should be.
18469
18470 ------------------------------------------
18471Summary of changes for this label: 03_13_01
18472
18473 ACPI CA Core Subsystem:
18474
18475During ACPI initialization, the _SB_._INI method is now run if
18476present.
18477
18478Notify handler fix - notifies are deferred until the parent method
18479completes execution.  This fixes the "mutex already acquired"
18480issue seen occasionally.
18481
18482Part of the "implicit conversion" rules in ACPI 2.0 have been
18483found to cause compatibility problems with existing ASL/AML.  The
18484convert "result-to-target-type" implementation has been removed
18485for stores to method Args and Locals.  Source operand conversion
18486is still fully implemented.  Possible changes to ACPI 2.0
18487specification pending.
18488
18489Fix to AcpiRsCalculatePciRoutingTableLength to return correct
18490length.
18491
18492Fix for compiler warnings for 64-bit compiles.
18493
18494 Linux:
18495
18496/proc output aligned for easier parsing.
18497
18498Release-version compile problem fixed.
18499
18500New kernel configuration options documented in Configure.help.
18501
18502IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
18503context" message.
18504
18505 OSPM:
18506
18507Power resource driver integrated with bus manager.
18508
18509Fixed kernel fault during active cooling for thermal zones.
18510
18511Source Code:
18512
18513The source code tree has been restructured.
18514
18515
18516
18517------------------------------------------
18518Summary of changes for this label: 03_02_01
18519
18520 Linux OS Services Layer (OSL):
18521
18522Major revision of all Linux-specific code.
18523
18524Modularized all ACPI-specific drivers.
18525
18526Added new thermal zone and power resource drivers.
18527
18528Revamped /proc interface (new functionality is under /proc/acpi).
18529
18530New kernel configuration options.
18531
18532 Linux known issues:
18533
18534New kernel configuration options not documented in Configure.help
18535yet.
18536
18537
18538Module dependencies not currently implemented. If used, they
18539should be loaded in this order: busmgr, power, ec, system,
18540processor, battery, ac_adapter, button, thermal.
18541
18542Modules will not load if CONFIG_MODVERSION is set.
18543
18544IBM 600E - entering S5 may reboot instead of shutting down.
18545
18546IBM 600E - Sleep button may generate "Invalid <NULL> context"
18547message.
18548
18549Some systems may fail with "execution mutex already acquired"
18550message.
18551
18552 ACPI CA Core Subsystem:
18553
18554Added a new OSL Interface, AcpiOsGetThreadId.  This was required
18555for the  deadlock detection code. Defined to return a non-zero, 32-
18556bit thread ID for the currently executing thread.  May be a non-
18557zero constant integer on single-thread systems.
18558
18559Implemented deadlock detection for internal subsystem mutexes.  We
18560may add conditional compilation for this code (debug only) later.
18561
18562ASL/AML Mutex object semantics are now fully supported.  This
18563includes multiple acquires/releases by owner and support for the
18564
18565Mutex SyncLevel parameter.
18566
18567A new "Force Release" mechanism automatically frees all ASL
18568Mutexes that have been acquired but not released when a thread
18569exits the interpreter.  This forces conformance to the ACPI spec
18570("All mutexes must be released when an invocation exits") and
18571prevents deadlocked ASL threads.  This mechanism can be expanded
18572(later) to monitor other resource acquisitions if OEM ASL code
18573continues to misbehave (which it will).
18574
18575Several new ACPI exception codes have been added for the Mutex
18576support.
18577
18578Recursive method calls are now allowed and supported (the ACPI
18579spec does in fact allow recursive method calls.)  The number of
18580recursive calls is subject to the restrictions imposed by the
18581SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
18582parameter.
18583
18584Implemented support for the SyncLevel parameter for control
18585methods (ACPI 2.0 feature)
18586
18587Fixed a deadlock problem when multiple threads attempted to use
18588the interpreter.
18589
18590Fixed a problem where the string length of a String package
18591element was not always set in a package returned from
18592AcpiEvaluateObject.
18593
18594Fixed a problem where the length of a String package element was
18595not always included in the length of the overall package returned
18596from AcpiEvaluateObject.
18597
18598Added external interfaces (Acpi*) to the ACPI debug memory
18599manager.  This manager keeps a list of all outstanding
18600allocations, and can therefore detect memory leaks and attempts to
18601free memory blocks more than once. Useful for code such as the
18602power manager, etc.  May not be appropriate for device drivers.
18603Performance with the debug code enabled is slow.
18604
18605The ACPI Global Lock is now an optional hardware element.
18606
18607 ASL Compiler Version X2015:
18608
18609Integrated changes to allow the compiler to be generated on
18610multiple platforms.
18611
18612Linux makefile added to generate the compiler on Linux
18613
18614 Source Code:
18615
18616All platform-specific headers have been moved to their own
18617subdirectory, Include/Platform.
18618
18619New source file added, Interpreter/ammutex.c
18620
18621New header file, Include/acstruct.h
18622
18623 Documentation:
18624
18625The programmer reference has been updated for the following new
18626interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
18627
18628 ------------------------------------------
18629Summary of changes for this label: 02_08_01
18630
18631Core ACPI CA Subsystem: Fixed a problem where an error was
18632incorrectly returned if the return resource buffer was larger than
18633the actual data (in the resource interfaces).
18634
18635References to named objects within packages are resolved to the
18636
18637full pathname string before packages are returned directly (via
18638the AcpiEvaluateObject interface) or indirectly via the resource
18639interfaces.
18640
18641Linux OS Services Layer (OSL):
18642
18643Improved /proc battery interface.
18644
18645
18646Added C-state debugging output and other miscellaneous fixes.
18647
18648ASL Compiler Version X2014:
18649
18650All defined method arguments can now be used as local variables,
18651including the ones that are not actually passed in as parameters.
18652The compiler tracks initialization of the arguments and issues an
18653exception if they are used without prior assignment (just like
18654locals).
18655
18656The -o option now specifies a filename prefix that is used for all
18657output files, including the AML output file.  Otherwise, the
18658default behavior is as follows:  1) the AML goes to the file
18659specified in the DSDT.  2) all other output files use the input
18660source filename as the base.
18661
18662 ------------------------------------------
18663Summary of changes for this label: 01_25_01
18664
18665Core ACPI CA Subsystem: Restructured the implementation of object
18666store support within the  interpreter.  This includes support for
18667the Store operator as well  as any ASL operators that include a
18668target operand.
18669
18670Partially implemented support for Implicit Result-to-Target
18671conversion. This is when a result object is converted on the fly
18672to the type of  an existing target object.  Completion of this
18673support is pending  further analysis of the ACPI specification
18674concerning this matter.
18675
18676CPU-specific code has been removed from the subsystem (hardware
18677directory).
18678
18679New Power Management Timer functions added
18680
18681Linux OS Services Layer (OSL): Moved system state transition code
18682to the core, fixed it, and modified  Linux OSL accordingly.
18683
18684Fixed C2 and C3 latency calculations.
18685
18686
18687We no longer use the compilation date for the version message on
18688initialization, but retrieve the version from AcpiGetSystemInfo().
18689
18690Incorporated for fix Sony VAIO machines.
18691
18692Documentation:  The Programmer Reference has been updated and
18693reformatted.
18694
18695
18696ASL Compiler:  Version X2013: Fixed a problem where the line
18697numbering and error reporting could get out  of sync in the
18698presence of multiple include files.
18699
18700 ------------------------------------------
18701Summary of changes for this label: 01_15_01
18702
18703Core ACPI CA Subsystem:
18704
18705Implemented support for type conversions in the execution of the
18706ASL  Concatenate operator (The second operand is converted to
18707match the type  of the first operand before concatenation.)
18708
18709Support for implicit source operand conversion is partially
18710implemented.   The ASL source operand types Integer, Buffer, and
18711String are freely  interchangeable for most ASL operators and are
18712converted by the interpreter  on the fly as required.  Implicit
18713Target operand conversion (where the  result is converted to the
18714target type before storing) is not yet implemented.
18715
18716Support for 32-bit and 64-bit BCD integers is implemented.
18717
18718Problem fixed where a field read on an aligned field could cause a
18719read  past the end of the field.
18720
18721New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
18722does not return a value, but the caller expects one.  (The ASL
18723compiler flags this as a warning.)
18724
18725ASL Compiler:
18726
18727Version X2011:
187281. Static typechecking of all operands is implemented. This
18729prevents the use of invalid objects (such as using a Package where
18730an Integer is required) at compile time instead of at interpreter
18731run-time.
187322. The ASL source line is printed with ALL errors and warnings.
187333. Bug fix for source EOF without final linefeed.
187344. Debug option is split into a parse trace and a namespace trace.
187355. Namespace output option (-n) includes initial values for
18736integers and strings.
187376. Parse-only option added for quick syntax checking.
187387. Compiler checks for duplicate ACPI name declarations
18739
18740Version X2012:
187411. Relaxed typechecking to allow interchangeability between
18742strings, integers, and buffers.  These types are now converted by
18743the interpreter at runtime.
187442. Compiler reports time taken by each internal subsystem in the
18745debug         output file.
18746
18747
18748 ------------------------------------------
18749Summary of changes for this label: 12_14_00
18750
18751ASL Compiler:
18752
18753This is the first official release of the compiler. Since the
18754compiler requires elements of the Core Subsystem, this label
18755synchronizes everything.
18756
18757------------------------------------------
18758Summary of changes for this label: 12_08_00
18759
18760
18761Fixed a problem where named references within the ASL definition
18762of both OperationRegions and CreateXXXFields did not work
18763properly.  The symptom was an AE_AML_OPERAND_TYPE during
18764initialization of the region/field. This is similar (but not
18765related internally) to the problem that was fixed in the last
18766label.
18767
18768Implemented both 32-bit and 64-bit support for the BCD ASL
18769functions ToBCD and FromBCD.
18770
18771Updated all legal headers to include "2000" in the copyright
18772years.
18773
18774 ------------------------------------------
18775Summary of changes for this label: 12_01_00
18776
18777Fixed a problem where method invocations within the ASL definition
18778of both OperationRegions and CreateXXXFields did not work
18779properly.  The symptom was an AE_AML_OPERAND_TYPE during
18780initialization of the region/field:
18781
18782  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
18783[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
18784(0x3005)
18785
18786Fixed a problem where operators with more than one nested
18787subexpression would fail.  The symptoms were varied, by mostly
18788AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
18789problem that has gone unnoticed until now.
18790
18791  Subtract (Add (1,2), Multiply (3,4))
18792
18793Fixed a problem where AcpiGetHandle didn't quite get fixed in the
18794previous build (The prefix part of a relative path was handled
18795incorrectly).
18796
18797Fixed a problem where Operation Region initialization failed if
18798the operation region name was a "namepath" instead of a simple
18799"nameseg". Symptom was an AE_NO_OPERAND error.
18800
18801Fixed a problem where an assignment to a local variable via the
18802indirect RefOf mechanism only worked for the first such
18803assignment.  Subsequent assignments were ignored.
18804
18805 ------------------------------------------
18806Summary of changes for this label: 11_15_00
18807
18808ACPI 2.0 table support with backwards support for ACPI 1.0 and the
188090.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
18810the AML  interpreter does NOT have support for the new 2.0 ASL
18811grammar terms at this time.
18812
18813All ACPI hardware access is via the GAS structures in the ACPI 2.0
18814FADT.
18815
18816All physical memory addresses across all platforms are now 64 bits
18817wide. Logical address width remains dependent on the platform
18818(i.e., "void *").
18819
18820AcpiOsMapMemory interface changed to a 64-bit physical address.
18821
18822The AML interpreter integer size is now 64 bits, as per the ACPI
188232.0 specification.
18824
18825For backwards compatibility with ACPI 1.0, ACPI tables with a
18826revision number less than 2 use 32-bit integers only.
18827
18828Fixed a problem where the evaluation of OpRegion operands did not
18829always resolve them to numbers properly.
18830
18831------------------------------------------
18832Summary of changes for this label: 10_20_00
18833
18834Fix for CBN_._STA issue.  This fix will allow correct access to
18835CBN_ OpRegions when the _STA returns 0x8.
18836
18837Support to convert ACPI constants (Ones, Zeros, One) to actual
18838values before a package object is returned
18839
18840Fix for method call as predicate to if/while construct causing
18841incorrect if/while behavior
18842
18843Fix for Else block package lengths sometimes calculated wrong (if
18844block > 63 bytes)
18845
18846Fix for Processor object length field, was always zero
18847
18848Table load abort if FACP sanity check fails
18849
18850Fix for problem with Scope(name) if name already exists
18851
18852Warning emitted if a named object referenced cannot be found
18853(resolved) during method execution.
18854
18855
18856
18857
18858
18859------------------------------------------
18860Summary of changes for this label: 9_29_00
18861
18862New table initialization interfaces: AcpiInitializeSubsystem no
18863longer has any parameters AcpiFindRootPointer - Find the RSDP (if
18864necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
18865>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
18866AcpiLoadTables
18867
18868Note: These interface changes require changes to all existing OSDs
18869
18870The PCI_Config default address space handler is always installed
18871at the root namespace object.
18872
18873-------------------------------------------
18874Summary of changes for this label: 09_15_00
18875
18876The new initialization architecture is implemented.  New
18877interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
18878AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
18879
18880(Namespace is automatically loaded when a table is loaded)
18881
18882The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1888352 bytes to 32 bytes.  There is usually one of these for every
18884namespace object, so the memory savings is significant.
18885
18886Implemented just-in-time evaluation of the CreateField operators.
18887
18888Bug fixes for IA-64 support have been integrated.
18889
18890Additional code review comments have been implemented
18891
18892The so-called "third pass parse" has been replaced by a final walk
18893through the namespace to initialize all operation regions (address
18894spaces) and fields that have not yet been initialized during the
18895execution of the various _INI and REG methods.
18896
18897New file - namespace/nsinit.c
18898
18899-------------------------------------------
18900Summary of changes for this label: 09_01_00
18901
18902Namespace manager data structures have been reworked to change the
18903primary  object from a table to a single object.  This has
18904resulted in dynamic memory  savings of 3X within the namespace and
189052X overall in the ACPI CA subsystem.
18906
18907Fixed problem where the call to AcpiEvFindPciRootBuses was
18908inadvertently left  commented out.
18909
18910Reduced the warning count when generating the source with the GCC
18911compiler.
18912
18913Revision numbers added to each module header showing the
18914SourceSafe version of the file.  Please refer to this version
18915number when giving us feedback or comments on individual modules.
18916
18917The main object types within the subsystem have been renamed to
18918clarify their  purpose:
18919
18920ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
18921ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
18922ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
18923
18924NOTE: no changes to the initialization sequence are included in
18925this label.
18926
18927-------------------------------------------
18928Summary of changes for this label: 08_23_00
18929
18930Fixed problem where TerminateControlMethod was being called
18931multiple times per  method
18932
18933Fixed debugger problem where single stepping caused a semaphore to
18934be  oversignalled
18935
18936Improved performance through additional parse object caching -
18937added  ACPI_EXTENDED_OP type
18938
18939-------------------------------------------
18940Summary of changes for this label: 08_10_00
18941
18942Parser/Interpreter integration:  Eliminated the creation of
18943complete parse trees  for ACPI tables and control methods.
18944Instead, parse subtrees are created and  then deleted as soon as
18945they are processed (Either entered into the namespace or  executed
18946by the interpreter).  This reduces the use of dynamic kernel
18947memory  significantly. (about 10X)
18948
18949Exception codes broken into classes and renumbered.  Be sure to
18950recompile all  code that includes acexcep.h.  Hopefully we won't
18951have to renumber the codes  again now that they are split into
18952classes (environment, programmer, AML code,  ACPI table, and
18953internal).
18954
18955Fixed some additional alignment issues in the Resource Manager
18956subcomponent
18957
18958Implemented semaphore tracking in the AcpiExec utility, and fixed
18959several places  where mutexes/semaphores were being unlocked
18960without a corresponding lock  operation.  There are no known
18961semaphore or mutex "leaks" at this time.
18962
18963Fixed the case where an ASL Return operator is used to return an
18964unnamed  package.
18965
18966-------------------------------------------
18967Summary of changes for this label: 07_28_00
18968
18969Fixed a problem with the way addresses were calculated in
18970AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
18971manifested itself when a Field was  created with WordAccess or
18972DwordAccess, but the field unit defined within the  Field was less
18973
18974than a Word or Dword.
18975
18976Fixed a problem in AmlDumpOperands() module's loop to pull
18977operands off of the  operand stack to display information. The
18978problem manifested itself as a TLB  error on 64-bit systems when
18979accessing an operand stack with two or more  operands.
18980
18981Fixed a problem with the PCI configuration space handlers where
18982context was  getting confused between accesses. This required a
18983change to the generic address  space handler and address space
18984setup definitions. Handlers now get both a  global handler context
18985(this is the one passed in by the user when executing
18986AcpiInstallAddressSpaceHandler() and a specific region context
18987that is unique to  each region (For example, the _ADR, _SEG and
18988_BBN values associated with a  specific region). The generic
18989function definitions have changed to the  following:
18990
18991typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
18992UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
18993*HandlerContext, // This used to be void *Context void
18994*RegionContext); // This is an additional parameter
18995
18996typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
18997RegionHandle, UINT32 Function, void *HandlerContext,  void
18998**RegionContext); // This used to be **ReturnContext
18999
19000-------------------------------------------
19001Summary of changes for this label: 07_21_00
19002
19003Major file consolidation and rename.  All files within the
19004interpreter have been  renamed as well as most header files.  This
19005was done to prevent collisions with  existing files in the host
19006OSs -- filenames such as "config.h" and "global.h"  seem to be
19007quite common.  The VC project files have been updated.  All
19008makefiles  will require modification.
19009
19010The parser/interpreter integration continues in Phase 5 with the
19011implementation  of a complete 2-pass parse (the AML is parsed
19012twice) for each table;  This  avoids the construction of a huge
19013parse tree and therefore reduces the amount of  dynamic memory
19014required by the subsystem.  Greater use of the parse object cache
19015means that performance is unaffected.
19016
19017Many comments from the two code reviews have been rolled in.
19018
19019The 64-bit alignment support is complete.
19020
19021-------------------------------------------
19022Summary of changes for this label: 06_30_00
19023
19024With a nod and a tip of the hat to the technology of yesteryear,
19025we've added  support in the source code for 80 column output
19026devices.  The code is now mostly  constrained to 80 columns or
19027less to support environments and editors that 1)  cannot display
19028or print more than 80 characters on a single line, and 2) cannot
19029disable line wrapping.
19030
19031A major restructuring of the namespace data structure has been
19032completed.  The  result is 1) cleaner and more
19033understandable/maintainable code, and 2) a  significant reduction
19034in the dynamic memory requirement for each named ACPI  object
19035(almost half).
19036
19037-------------------------------------------
19038Summary of changes for this label: 06_23_00
19039
19040Linux support has been added.  In order to obtain approval to get
19041the ACPI CA  subsystem into the Linux kernel, we've had to make
19042quite a few changes to the  base subsystem that will affect all
19043users (all the changes are generic and OS- independent).  The
19044effects of these global changes have been somewhat far  reaching.
19045Files have been merged and/or renamed and interfaces have been
19046renamed.   The major changes are described below.
19047
19048Osd* interfaces renamed to AcpiOs* to eliminate namespace
19049pollution/confusion  within our target kernels.  All OSD
19050interfaces must be modified to match the new  naming convention.
19051
19052Files merged across the subsystem.  A number of the smaller source
19053and header  files have been merged to reduce the file count and
19054increase the density of the  existing files.  There are too many
19055to list here.  In general, makefiles that  call out individual
19056files will require rebuilding.
19057
19058Interpreter files renamed.  All interpreter files now have the
19059prefix am*  instead of ie* and is*.
19060
19061Header files renamed:  The acapi.h file is now acpixf.h.  The
19062acpiosd.h file is  now acpiosxf.h.  We are removing references to
19063the acronym "API" since it is  somewhat windowsy. The new name is
19064"external interface" or xface or xf in the  filenames.j
19065
19066
19067All manifest constants have been forced to upper case (some were
19068mixed case.)   Also, the string "ACPI_" has been prepended to many
19069(not all) of the constants,  typedefs, and structs.
19070
19071The globals "DebugLevel" and "DebugLayer" have been renamed
19072"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
19073
19074All other globals within the subsystem are now prefixed with
19075"AcpiGbl_" Internal procedures within the subsystem are now
19076prefixed with "Acpi" (with only  a few exceptions).  The original
19077two-letter abbreviation for the subcomponent  remains after "Acpi"
19078- for example, CmCallocate became AcpiCmCallocate.
19079
19080Added a source code translation/conversion utility.  Used to
19081generate the Linux  source code, it can be modified to generate
19082other types of source as well. Can  also be used to cleanup
19083existing source by removing extraneous spaces and blank  lines.
19084Found in tools/acpisrc/*
19085
19086OsdUnMapMemory was renamed to OsdUnmapMemory and then
19087AcpiOsUnmapMemory.  (UnMap  became Unmap).
19088
19089A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
19090When set to  one, this indicates that the caller wants to use the
19091
19092semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
19093both types.  However, implementers of this  call may want to use
19094different OS primitives depending on the type of semaphore
19095requested.  For example, some operating systems provide separate
19096
19097"mutex" and  "semaphore" interfaces - where the mutex interface is
19098much faster because it  doesn't have all the overhead of a full
19099semaphore implementation.
19100
19101Fixed a deadlock problem where a method that accesses the PCI
19102address space can  block forever if it is the first access to the
19103space.
19104
19105-------------------------------------------
19106Summary of changes for this label: 06_02_00
19107
19108Support for environments that cannot handle unaligned data
19109accesses (e.g.  firmware and OS environments devoid of alignment
19110handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
19111been added (via configurable macros) in  these three areas: -
19112Transfer of data from the raw AML byte stream is done via byte
19113moves instead of    word/dword/qword moves. - External objects are
19114aligned within the user buffer, including package   elements (sub-
19115objects). - Conversion of name strings to UINT32 Acpi Names is now
19116done byte-wise.
19117
19118The Store operator was modified to mimic Microsoft's
19119implementation when storing  to a Buffer Field.
19120
19121Added a check of the BM_STS bit before entering C3.
19122
19123The methods subdirectory has been obsoleted and removed.  A new
19124file, cmeval.c  subsumes the functionality.
19125
19126A 16-bit (DOS) version of AcpiExec has been developed.  The
19127makefile is under  the acpiexec directory.
19128