xref: /dragonfly/sys/contrib/dev/acpica/changes.txt (revision 8716355d)
1----------------------------------------
2
3
430 April 2020. Summary of changes for version 20200430:
5
6
71) ACPICA kernel-resident subsystem:
8
9Cleaned up the coding style of a couple of global variables
10(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers.
11AcpiProtocolLengths was made static, and the definition of
12AcpiGbl_NextCmdNum was moved to acglobal.h.
13
14
152) iASL Compiler/Disassembler and ACPICA tools:
16
17iASL DataTable Compiler:  Fixed a segfault on errors that aren't directly
18associated with a field.
19
20Disassembler: has been made more resilient so that it will continue to
21parse AML even if the AML generates ACPI namespace errors. This enables
22iASL to disassemble some AML that may have been compiled using older
23versions of iASL that no longer compile with newer versions of iASL.
24
25iASL: Fixed the required parameters for _NIH and _NIG. Previously, there
26was a mixup where _NIG required one parameter and _NIH required zero
27parameters. This change swaps these parameter requirements. Now it is
28required that _NIH must be called with one parameter and _NIG requires
29zero parameters.
30
31iASL: Allow use of undefined externals as long as they are protected by
32an if (CondRefOf (...)) block when compiling multiple definition blocks.
33
34iASL: Fixed the type override behavior of named objects that are declared
35as External. External declarations will no longer override the type of
36the actual definition if it already exists.
37
38AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable
39command line wildcard support on Windows. Note: the AcpiNames utility is
40essentially redundant with the AcpiExec utility (using the "namespace"
41command) and is therefore deprecated. It will be removed in future
42releases of ACPICA.
43
44Disassembler: ignore AE_ALREADY_EXISTS status when parsing create*
45operators. The disassembler is intended to emit existing ASL code as-is.
46Therefore, error messages emitted during disassembly should be ignored or
47handled in a way such that the disassembler can continue to parse the
48AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op
49parsing for create operators in order to complete parsing ASL termlists.
50
51iASL DataTable Compiler: IVRS table: fix potentially uninitialized
52variable warning. Some compilers catch potential uninitialized variables.
53This is done by examining branches of if/else statements. This change
54replaces an "else if" with an "else" to fix the uninitialized variable
55warning.
56
57
58----------------------------------------
5926 March 2020. Summary of changes for version 20200326:
60
61
621) ACPICA kernel-resident subsystem:
63
64Performed a code clean-up to prevent build errors on early versions of
65GCC-10.
66
67Added the NHLT table signature. iASL data table compiler/disassembler
68support for this table is coming soon.
69
70
712) iASL Compiler/Disassembler and ACPICA tools:
72
73AcpiExec: Fixed several problems with the namespace initialization file
74(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS
75errors, several seg faults, and enhancements to line parsing within the
76init file. In addition, each object found in the init file and it's new
77value is displayed, as well as any such entries that do not have a
78corresponding name in the namespace. For reference, the syntax for the
79various supported data types are presented below:
80	PCHG 0x777788889999BBBB	// Integer
81	\DEV1.STR1 "XYZ"			// String
82	BUF1 (88 99 AA)			// Buffer
83	PKG1 [0x1111 0x2222]		// Package
84	\BF1 0x7980				// BufferField
85	RCRV 0x0123456789ABCDEF	// Field Unit
86
87iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro
88can be used anywhere in a given ASL file to configure iASL to expect an
89iASL compiler error code on the line where this macro was placed. If the
90error code does not exist, an error is generated. This is intended to be
91used for ACPICA's ASL test suite, but can be used by ASL developers as
92well.
93
94iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD
95IVRS table parsing supported only IVHD type 10h structures. Parsing an
96IVHD type 11h caused the iasl to report unknown subtable type. Add
97necessary structure definition for IVHD type 11h and apply correct
98parsing method based on subtable type. Micha? ?ygowski.
99
100iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name
101According to AMD IOMMU Specification Revision 3.05 the reserved field
102should be IOMMU Feature Reporting. Change the name of the field to the
103correct one. Micha? ?ygowski.
104
105acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch
106based on suggestions by David Seifert and Benjamin Berg.
107
108iASL: table compiler: removed an unused variable (DtCompilerParserResult)
109causing linking errors. Patch based on suggestions by David Seifert and
110Benjamin Berg.
111
112iASL: table compiler: make LexBuffer static to avoid linking errors in
113newer compilers. Patch based on suggestions by David Seifert and Benjamin
114Berg.
115
116iASL: fixed type matching between External and Named objects. External
117object types can only be expressed with ACPI object type values that are
118defined in the ACPI spec. However, iASL uses ACPI object type values that
119are local to ACPICA in addition to the values defined in the ACPI spec.
120This change implements type matching to map some object type values
121specific to ACPICA to ones that are defined in the ACPI spec.
122
123iASL: Dropped the type mismatch compiler error that can arise from
124External declarations to a warning. This warning can occur when there is
125a type difference between the external declaration and the actual object
126declaration (when compiling multiple files/modules simultaneously).
127
128iASL: removed an incorrect error message regarding externals. This change
129removes an incorrect error that is emitted when a duplicate external
130declaration does not contain a type that opens a scope. This is incorrect
131because the duplicate external with conflicting types are already caught
132by iASL and it doesn't make any sense to enforce what this conflicting
133type should be.
134
135AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be
136surrounded by parens. Otherwise, a logical statement that applies a
137logical not operator to this macro could result in a computation that
138applies the operator to the left side of the logical and but not the
139right. Reported-by: John Levon <john.levon@joyent.com>
140
141Fixed a problem with the local version of sprint(): On 32-bit, the
142provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX,
143String + Size will wrap, meaning End < Start, and
144AcpiUtBoundStringOutput() will never output anything as a result. The
145symptom seen of this was acpixtract failing to output anything -- with a
146custom build that included utprint.c. Signed-off-by: John Levon
147<john.levon@joyent.com>
148
149iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the
150ACPI specification.
151
152
153----------------------------------------
15414 February 2020. Summary of changes for version 20200214:
155
156
1571) ACPICA kernel-resident subsystem:
158
159Enable sleep button on ACPI legacy wake:  Hibernation (S4) is triggered
160in a guest when it receives a sleep trigger from the hypervisor. When the
161guest resumes from this power state, it does not see the SleepEnabled
162bit. In other words, the sleepHibernation (S4) is triggered in a guest
163when it receives a sleep trigger from the hypervisor. When the guest
164resumes from this power state, it does not see the SleepEnabled bit. In
165other words, the sleep button is not enabled on waking from an S4 state.
166This causes subsequent invocation of sleep state to fail since the
167guest.button is not enabled on waking from an S4 state. This causes
168subsequent invocation of sleep state to fail in the guest. Fix this
169problem by enabling the sleep button in ACPI legacy wake. From Anchal
170Agarwal <anchalag@amazon.com>.
171
172Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used
173for checking the status bits of all enabled GPEs in one go. It is needed
174to distinguish spurious SCIs from genuine ones when deciding whether or
175not to wake up the system from suspend-to-idle.
176
177Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be
178using HOST in their environment to represent the host name for their
179machines. Avoid this problem by renaming this variable from HOST to
180ACPI_HOST.
181
182MSVC 2017 project files: Enable multiprocessor generation to improve
183build performance.
184
185Added a macro to get the byte width of a Generic Address structure. New
186ACPI_ACCESS_BYTE_WIDTH is in addition to the existing
187ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg.
188
189
1902) iASL Compiler/Disassembler and ACPICA tools:
191
192iASL: Implemented full support for the (optional, rarely used) ReturnType
193and ParameterTypesList for the Method, Function, and External operators.
194For Method declarations, the number of individual ParameterTypes must
195match the declaration of the number of arguments (NumArgs). This also
196Fixes a problem with the External operator where extra/extraneous bytes
197were emitted in the AML code if the optional ReturnType/ParameterTypes
198were specified for a MethodObj declaration.
199New error message:
2001) Method NumArgs count does not match length of ParameterTypes list
201
202iASL: Implemented detection of type mismatches between External
203declarations and named object declarations. Also, detect type mismatches
204between multiple External declarations of the same Name.
205New error messages:
2061) Type mismatch between external declaration and actual object
207declaration detected
2082) Type mismatch between multiple external declarations detected
209
210iASL: Implemented new error messages for External operators that specify
211a ReturnType and/or ParameterTypesList for any object type other than
212control methods (MethodObj).
213New error messages:
2141) Return type is only allowed for Externals declared as MethodObj
2152) Parameter type is only allowed for Externals declared as MethodObj
216
217iASL: Implemented two new remark/warning messages for ASL code that
218creates named objects from within a control method. This is very
219inefficient since the named object must be created and deleted each time
220the method is executed.
221New messages:
2221) Creation of named objects within a method is highly inefficient, use
223globals or method local variables instead (remark)
2242) Static OperationRegion should be declared outside control method
225(warning)
226
227iASL: Improved illegal forward reference detection by adding support to
228detect forward-reference method invocations.
229
230iASL: Detect and issue an error message for NameStrings that contain too
231many individual NameSegs (>255). This is an AML limitation that is
232defined in the ACPI specification.
233New message:
2341) NameString contains too many NameSegs (>255)
235
236acpidump: windows: use GetSystemFirmwareTable API for all tables except
237SSDT. By using this API, acpidump is able to get all tables in the XSDT
238
239iASL: Removed unused parser file and updated msvc2017 project files.
240Removed the obsolete AslCompiler.y from the repository.
241
242iASL: msvc2017: Fixed macros in the file dependency list to prevent
243unnecessary rebuilds. Replace %(Directory) with %(RelativeDir).
244
245Disassembler: Prevent spilling error messages to the output file. All
246errors are directed to the console instead. These error messages
247prevented re-compilation of the resulting disassembled ASL output file
248(.DSL).
249
250
251----------------------------------------
25210 January 2020. Summary of changes for version 20200110:
253
254
2551) ACPICA kernel-resident subsystem:
256
257Updated all copyrights to 2020. This affects all ACPICA source code
258modules.
259
260
2612) iASL Compiler/Disassembler and ACPICA tools:
262
263ASL test suite (ASLTS): Updated all copyrights to 2020.
264
265Tools and utilities: Updated all signon copyrights to 2020.
266
267iASL: fix forward reference analysis for field declarations. Fixes
268forward reference analysis for field declarations by searching the
269parent scope for the named object when the object is not present in
270the current scope.
271
272iASL: Improved the error output for ALREADY_EXISTS errors. Now, the
273full pathname of the name that already exists is printed.
274
275iASL: Enhance duplicate Case() detection for buffers. Add check for
276buffers with no initializer list (these buffers will be filled with
277zeros at runtime.)
278
279
280----------------------------------------
28113 December 2019. Summary of changes for version 20191213:
282
283
2841) ACPICA kernel-resident subsystem:
285
286Return a Buffer object for all fields created via the CreateField
287operator. Previously, an Integer would be returned if the size of
288the field was less than or equal to the current size of an Integer.
289Although this goes against the ACPI specification, it provides
290compatibility with other ACPI implementations. Also updated the
291ASLTS test suite to reflect this new behavior.
292
2932) iASL Compiler/Disassembler and ACPICA tools:
294
295iASL: Implemented detection of (and throw an error for) duplicate
296values for Case statements within a single Switch statement. Duplicate
297Integers, Strings, and Buffers are supported.
298
299iASL: Fix error logging issue during multiple file compilation --
300Switch to the correct input file during error node creation.
301
302iASL: For duplicate named object creation, now emit an error instead
303of a warning - since this will cause a runtime error.
304
305AcpiSrc: Add unix line-ending support for non-Windows builds.
306
307iASL: Add an error condition for an attempt to create a NameString
308with > 255 NameSegs (the max allowable via the AML definition).
309
310
311----------------------------------------
31218 October 2019. Summary of changes for version 20191018:
313
314
3151) ACPICA kernel-resident subsystem:
316
317Debugger: added a new command: ?Fields [address space ID]?. This command
318dumps the contents of all field units that are defined within the
319namespace with a particular address space ID.
320
321Modified the external interface AcpiLoadTable() to return a table index.
322This table index can be used for unloading a table for debugging.
323    ACPI_STATUS
324    AcpiLoadTable (
325        ACPI_TABLE_HEADER       *Table,
326        UINT32                  *TableIndex))
327
328Implemented a new external interface: AcpiUnloadTable() This new function
329takes a table index as an argument and unloads the table. Useful for
330debugging only.
331    ACPI_STATUS
332    AcpiUnloadTable (
333        UINT32                  TableIndex))
334
335Ported the AcpiNames utility to use the new table initialization
336sequence. The utility was broken before this change. Also, it was
337required to include most of the AML interpreter into the utility in order
338to process table initialization (module-level code execution.)
339
340Update for results from running Clang V8.0.1. This fixes all "dead
341assignment" warnings. There are still several "Dereference of NULL
342pointer" warnings, but these have been found to be false positive
343warnings.
344
345
3462) iASL Compiler/Disassembler and ACPICA tools:
347
348iASL: numerous table compiler changes to ensure that the usage of
349yacc/bison syntax is POSIX-compliant.
350
351iASL/disassembler: several simple bug fixes in the data table
352disassembler.
353
354Acpiexec: expanded the initialization file (the -fi option) to initialize
355strings, buffers, packages, and field units.
356
357
358----------------------------------------
35916 August 2019. Summary of changes for version 20190816:
360
361This release is available at https://acpica.org/downloads
362
363
3641) ACPICA kernel-resident subsystem:
365
366Modified the OwnerId mechanism to allow for more Owner Ids. The previous
367limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT
368exceptions on machines with a large number of initialization threads,
369many CPU cores and nested initialization control methods.
370
371Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for
372checking if the given GPE (as represented by a GPE device handle and a
373GPE number) is currently active and dispatching it (if that's the case)
374outside of interrupt context.
375
376Table load: exit the interpreter before initializing objects within the
377new table This prevents re-acquiring the interpreter lock when loading
378tables
379
380Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
381uk Kim
382
383Macros: removed pointer math on a null pointer. Causes warnings on some
384compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR
385instead of using arithmetic.
386
387Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used
388across all "printf-like" internal functions. Also, cleanup all calls to
389such functions (both in 32-bit mode and 64-bit mode) now that they are
390analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
391
392
3932) iASL Compiler/Disassembler and ACPICA tools:
394
395iASL: implemented a new data table compiler flex/bison front-end. This
396change is internal and is not intended to result in changes to the
397compiled code. This new compiler front-end can be invoked using the -tp
398option for now, until the old mechanism is removed.
399
400ASLTS: Implemented a new data table compiler test suite. This test suite
401generates all table templates and compile/disassemble/re-compile/binary-
402compare each file.
403
404iASL: return -1 if AML files were not generated due to compiler errors
405
406iASL: added a warning on use of the now-legacy ASL Processor () keyword.
407
408iASL: added an error on _UID object declaration that returns a String
409within a Processor () declaration. A _UID for a processor must be an
410Integer.
411
412iASL: added a null terminator to name strings that consist only of
413multiple parent prefixes (^)
414
415iASL: added support to compile both ASL and data table files in a single
416command.
417
418Updated the tool generation project files that were recently migrated to
419MSVC 2017 to eliminate all new warnings. The new project files appear in
420the directory \acpica\generate\msvc2017. This change effectively
421deprecates the older project files in \acpica\generate\msvc9.
422
423
424----------------------------------------
42503 July 2019. Summary of changes for version 20190703:
426
427
4281) ACPICA kernel-resident subsystem:
429
430Remove legacy module-level support code. There were still some remnants
431of the legacy module-level code executions. Since we no longer support
432this option, this is essentially dead code and has been removed from the
433ACPICA source.
434
435iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
436scope. If these named objects are declared outside the root scope, they
437will not be invoked by any host Operating System.
438
439Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC
440one) can be enabled in two situations. First, the GPEs with existing _Lxx
441and _Exx methods are enabled implicitly by ACPICA during system
442initialization.  Second, the GPEs without these methods (like GPEs listed
443by _PRW objects for wakeup devices) need to be enabled directly by the
444code that is going to use them (e.g. ACPI power management or device
445drivers).
446
447In the former case, if the status of a given GPE is set to start with,
448its handler method (either _Lxx or _Exx) needs to be invoked to take care
449of the events (possibly) signaled before the GPE was enabled. In the
450latter case, however, the first caller of AcpiEnableGpe() for a given GPE
451should not be expected to care about any events that might be signaled
452through it earlier.  In that case, it is better to clear the status of
453the GPE before enabling it, to prevent stale events from triggering
454unwanted actions (like spurious system resume, for example).
455
456For this reason, modify AcpiEvAddGpeReference() to take an additional
457boolean argument indicating whether or not the GPE status needs to be
458cleared when its reference counter changes from zero to one and make
459AcpiEnableGpe() pass TRUE to it through that new argument.
460
461
4622) iASL Compiler/Disassembler and ACPICA tools:
463
464The tool generation process has been migrated to MSVC 2017, and all
465project files have been upgraded. The new project files appear in the
466directory \acpica\generate\msvc2017. This change effectively deprecates
467the older project files in \acpica\generate\msvc9.
468
469iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
470scope. If these named objects are declared outside the root scope, they
471will not be invoked by any host Operating System
472
473----------------------------------------
47409 May 2019. Summary of changes for version 20190509:
475
476
4771) ACPICA kernel-resident subsystem:
478
479Revert commit  6c43e1a ("ACPICA: Clear status of GPEs before enabling
480them") that causes problems with Thunderbolt controllers to occur if a
481dock device is connected at init time (the xhci_hcd and thunderbolt
482modules crash which prevents peripherals connected through them from
483working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA:
484Dispatch active GPEs at init time") to get undone, so the problem
485addressed by commit ecc1165b8b74 appears again as a result of it.
486
487
4882) iASL Compiler/Disassembler and ACPICA tools:
489
490Reverted iASL: Additional forward reference detection. This change
491reverts forward reference detection for field declarations. The feature
492unintentionally emitted AML bytecode with incorrect package lengths for
493some ASL code related to Fields and OperationRegions. This malformed AML
494can cause systems to crash
495during boot. The malformed AML bytecode is emitted in iASL version
49620190329 and 20190405.
497
498iASL: improve forward reference detection. This change improves forward
499reference detection for named objects inside of scopes. If a parse object
500has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to
501a named object that is declared later in the AML bytecode. This is
502allowed if the reference is inside of a method and the declaration is
503outside of a method like so:
504
505DefinitionBlock(...)
506{
507    Method (TEST)
508    {
509        Return (NUM0)
510    }
511    Name (NUM0,0)
512}
513
514However, if the declaration and reference are both in the same method or
515outside any methods, this is a forward reference and should be marked as
516an error because it would result in runtime errors.
517
518DefinitionBlock(...)
519{
520    Name (BUFF, Buffer (NUM0) {}) // Forward reference
521    Name (NUM0, 0x0)
522
523    Method (TEST)
524    {
525        Local0 = NUM1
526        Name (NUM1, 0x1) // Forward reference
527        return (Local0)
528    }
529}
530
531iASL: Implemented additional buffer overflow analysis for BufferField
532declarations. Check if a buffer index argument to a create buffer field
533operation is beyond the end of the target buffer.
534
535This affects these AML operators:
536
537   AML_CREATE_FIELD_OP
538   AML_CREATE_BIT_FIELD_OP
539   AML_CREATE_BYTE_FIELD_OP
540   AML_CREATE_WORD_FIELD_OP
541   AML_CREATE_DWORD_FIELD_OP
542   AML_CREATE_QWORD_FIELD_OP
543
544 There are three conditions that must be satisfied in order to allow this
545validation at compile time:
546
547   1) The length of the target buffer must be an integer constant
548   2) The index specified in the create* must be an integer constant
549   3) For CreateField, the bit length argument must be non-zero.
550
551Example:
552    Name (BUF1, Buffer() {1,2})
553    CreateField (BUF1, 7, 9, CF03)  // 3: ERR
554
555dsdt.asl     14:     CreateField (BUF1, 7, 9, CF03)  // 3: ERR
556Error    6165 -                           ^ Buffer index beyond end of
557target buffer
558
559
560----------------------------------------
56105 April 2019. Summary of changes for version 20190405:
562
563
5641) ACPICA kernel-resident subsystem:
565
566Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop
567unconditionally clearing ACPI IRQs during suspend/resume") was added
568earlier to stop clearing of event status bits unconditionally on suspend
569and resume paths. Though this change fixed an issue on suspend path, it
570introduced regressions on several resume paths. In the case of S0ix,
571events are enabled as part of device suspend path. If status bits for the
572events are set when they are enabled, it could result in premature wake
573from S0ix. If status is cleared for any event that is being enabled so
574that any stale events are cleared out. In case of S0ix, events are
575enabled as part of device suspend path. If status bits for the events are
576set when they are enabled, it could result in premature wake from S0ix.
577
578This change ensures that status is cleared for any event that is being
579enabled so that any stale events are cleared out.
580
581
5822) iASL Compiler/Disassembler and ACPICA tools:
583
584iASL: Implemented an enhanced multiple file compilation that combines
585named objects from all input files to a single namespace. With this
586feature, any unresolved external declarations as well as duplicate named
587object declarations can be detected during compilation rather than
588generating errors much later at runtime. The following commands are
589examples that utilize this feature:
590    iasl dsdt.asl ssdt.asl
591    iasl dsdt.asl ssdt1.asl ssdt2.asl
592    iasl dsdt.asl ssdt*.asl
593
594----------------------------------------
59529 March 2019. Summary of changes for version 20190329:
596
597
5981) ACPICA kernel-resident subsystem:
599
600Namespace support: Remove the address nodes from global list after method
601termination. The global address list contains pointers to namespace nodes
602that represent Operation Regions. This change properly removes Operation
603Region namespace nodes that are declared dynamically during method
604execution.
605
606Linux: Use a different debug default than ACPICA. There was a divergence
607between Linux and the ACPICA codebases. In order to resolve this
608divergence, Linux now declares its own debug default in aclinux.h
609
610Renamed some internal macros to improve code understanding and
611maintenance. The macros below all operate on single 4-character ACPI
612NameSegs, not generic strings (old -> new):
613    ACPI_NAME_SIZE    -> ACPI_NAMESEG_SIZE
614    ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
615    ACPI_MOVE_NAME    -> ACPI_COPY_NAMESEG
616
617Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
618table.
619
620Test suite: Update makefiles, add PCC operation region support
621
622
6232) iASL Compiler/Disassembler and Tools:
624
625iASL: Implemented additional illegal forward reference detection. Now
626detect and emit an error upon detection of a forward reference from a
627Field to an Operation Region. This will fail at runtime if allowed to
628pass the compiler.
629
630AcpiExec: Add an address list check for dynamic Operation Regions. This
631feature performs a sanity test for each node the global address list.
632This is done in order to ensure that all dynamic operation regions are
633properly removed from the global address list and no dangling pointers
634are left behind.
635
636Disassembler: Improved generation of resource pathnames. This change
637improves the code that generates resource descriptor and resource tag
638pathnames. The original code used a bunch of str* C library functions
639that caused warnings on some compilers.
640
641iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
642function can overwrite buffers if the calling code is not very careful.
643In the case of generating a module/table header, use of memmove is a
644better implementation.
645
646
6473) Status of new features that have not been completed at this time:
648
649iASL: Implementing an enhanced multiple file compilation into a single
650namespace feature (Status): This feature will be released soon, and
651allows multiple ASL files to be compiled into the same single namespace.
652By doing so, any unresolved external declarations as well as duplicate
653named object declarations can be detected during compilation (rather than
654later during runtime). The following commands are examples that utilize
655this feature:
656    iasl dsdt.asl ssdt.asl
657    iasl dsdt.asl ssdt1.asl ssdt2.asl
658    iasl dsdt.asl ssdt*.asl
659
660ASL tutorial status: Feedback is being gathered internally and the
661current plan is to publish this tutorial on the ACPICA website after a
662final review by a tech writer.
663
664----------------------------------------
66515 February 2019. Summary of changes for version 20190215:
666
667
6680) Support for ACPI specification version 6.3:
669
670Add PCC operation region support for the AML interpreter. This adds PCC
671operation region support in the AML interpreter and a default handler for
672acpiexec. The change also renames the PCC region address space keyword to
673PlatformCommChannel.
674
675Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG.
676These methods provide OSPM with health information and device boot
677status.
678
679PDTT: Add TriggerOrder to the PCC Identifier structure. The field value
680defines if the trigger needs to be invoked by OSPM before or at the end
681of kernel crash dump processing/handling operation.
682
683SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT
684is used for describing devices such as heterogeneous processors,
685accelerators, GPUs, and IO devices with integrated compute or DMA
686engines.
687
688MADT: Add support for statistical profiling in GICC. Statistical
689profiling extension (SPE) is an architecture-specific feature for ARM.
690
691MADT: Add online capable flag. If this bit is set, system hardware
692supports enabling this processor during OS runtime.
693
694New Error Disconnect Recover Notification value. There are a number of
695scenarios where system Firmware in collaboration with hardware may
696disconnect one or more devices from the rest of the system for purposes
697of error containment. Firmware can use this new notification value to
698alert OSPM of such a removal.
699
700PPTT: New additional fields in Processor Structure Flags. These flags
701provide more information about processor topology.
702
703NFIT/Disassembler: Change a field name from "Address Range" to "Region
704Type".
705
706HMAT updates: make several existing fields to be reserved as well as
707rename subtable 0 to "memory proximity domain attributes".
708
709GTDT: Add support for new GTDT Revision 3. This revision adds information
710for the EL2 timer.
711
712iASL: Update the HMAT example template for new fields.
713
714iASL: Add support for the new revision of the GTDT (Rev 3).
715
716
7171) ACPICA kernel-resident subsystem:
718
719AML Parser: fix the main AML parse loop to correctly skip erroneous
720extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
721byte extended opcodes. If an error occurs during an AML table load, the
722AML parser will continue loading the table by skipping the offending
723opcode. This implements a "load table at any cost" philosophy.
724
725
7262) iASL Compiler/Disassembler and Tools:
727
728iASL: Add checks for illegal object references, such as a reference
729outside of method to an object within a method. Such an object is only
730temporary.
731
732iASL: Emit error for creation of a zero-length operation region. Such a
733region is rather pointless. If encountered, a runtime error is also
734implemented in the interpreter.
735
736Debugger: Fix a possible fault with the "test objects" command.
737
738iASL: Makefile: support parent directory filenames containing embedded
739spaces.
740
741iASL: Update the TPM2 template to revision 4.
742
743iASL: Add the ability to report specific warnings or remarks as errors.
744
745Disassembler: Disassemble OEMx tables as actual AML byte code.
746Previously, these tables were treated as "unknown table".
747
748iASL: Add definition and disassembly for TPM2 revision 3.
749
750iASL: Add support for TPM2 rev 3 compilation.
751
752
753----------------------------------------
75408 January 2019. Summary of changes for version 20190108:
755
756
7571) ACPICA kernel-resident subsystem:
758
759Updated all copyrights to 2019. This affects all source code modules.
760
761
7622) iASL Compiler/Disassembler and Tools:
763
764ASL test suite (ASLTS): Updated all copyrights to 2019.
765
766Tools: Updated all signon copyrights to 2019.
767
768AcpiExec: Added a new option to dump extra information concerning any
769memory leaks detected by the internal object/cache tracking mechanism. -
770va
771
772iASL: Updated the table template for the TPM2 table to the newest version
773of the table (Revision 4)
774
775
776----------------------------------------
77713 December 2018. Summary of changes for version 20181213:
778
779
7801) ACPICA Kernel-resident Subsystem:
781
782Fixed some buffer length issues with the GenericSerialBus, related to two
783of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
784which are rarely seen in the field. For these, the LEN field of the ASL
785buffer is now ignored. Hans de Goede
786
787Implemented a new object evaluation trace mechanism for control methods
788and data objects. This includes nested control methods. It is
789particularly useful for examining the ACPI execution during system
790initialization since the output is relatively terse. The flag below
791enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
792   #define ACPI_LV_EVALUATION          0x00080000
793
794Examples:
795   Enter evaluation       :  _SB.PCI0._INI (Method)
796   Exit evaluation        :  _SB.PCI0._INI
797   Enter evaluation       :  _OSI (Method)
798   Exit evaluation        :  _OSI
799   Enter evaluation       :  _SB.PCI0.TEST (Method)
800   Nested method call     :     _SB.PCI0.NST1
801   Exit nested method     :     _SB.PCI0.NST1
802   Exit evaluation        :  _SB.PCI0.TEST
803
804Added two recently-defined _OSI strings. See
805https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
806osi.
807   "Windows 2018"
808   "Windows 2018.2"
809
810Update for buffer-to-string conversions via the ToHexString ASL operator.
811A "0x" is now prepended to each of the hex values in the output string.
812This provides compatibility with other ACPI implementations. The ACPI
813specification is somewhat vague on this issue.
814   Example output string after conversion:
815"0x01,0x02,0x03,0x04,0x05,0x06"
816
817Return a run-time error for TermArg expressions within individual package
818elements. Although this is technically supported by the ASL grammar,
819other ACPI implementations do not support this either. Also, this fixes a
820fault if this type of construct is ever encountered (it never has been).
821
822
8232) iASL Compiler/Disassembler and Tools:
824
825iASL: Implemented a new compile option (-ww) that will promote individual
826warnings and remarks to errors. This is intended to enhance the firmware
827build process.
828
829AcpiExec: Implemented a new command-line option (-eo) to support the new
830object evaluation trace mechanism described above.
831
832Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
833instead of a "unknown table" message.
834
835AcpiHelp: Improved support for the "special" predefined names such as
836_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be
837used for "xx" and "x".
838
839----------------------------------------
84031 October 2018. Summary of changes for version 20181031:
841
842
843An Operation Region regression was fixed by properly adding address
844ranges to a global list during initialization. This allows OS to
845accurately check for overlapping regions between native devices (such as
846PCI) and Operation regions as well as checking for region conflicts
847between two Operation Regions.
848
849Added support for the 2-byte extended opcodes in the code/feature that
850attempts to continue parsing during the table load phase. Skip parsing
851Device declarations (and other extended opcodes) when an error occurs
852during parsing. Previously, only single-byte opcodes were supported.
853
854Cleanup: Simplified the module-level code support by eliminating a
855useless global variable (AcpiGbl_GroupModuleLeveCode).
856
857
8582) iASL Compiler/Disassembler and Tools:
859
860iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
861could cause a fault in the preprocessor. This was an inadvertent side-
862effect from moving more allocations/frees to the local cache/memory
863mechanism.
864
865iASL: Enhanced error detection by validating that all NameSeg elements
866within a NamePatch actually exist. The previous behavior was spotty at
867best, and such errors could be improperly ignored at compiler time (never
868at runtime, however. There are two new error messages, as shown in the
869examples below:
870
871dsdt.asl     33:     CreateByteField (TTTT.BXXX, 1, CBF1)
872Error    6161 -                              ^ One or more objects within
873the Pathname do not exist (TTTT.BXXX)
874
875dsdt.asl     34:     CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
876Error    6160 -        One or more prefix Scopes do not exist ^
877(BBBB.CBF1)
878
879iASL: Disassembler/table-compiler: Added support for the static data
880table TPM2 revision 3 (an older version of TPM2). The support has been
881added for the compiler and the disassembler.
882
883Fixed compilation of DOS format data table file on Unix/Linux systems.
884iASL now properly detects line continuations (\) for DOS format data
885table definition language files on when executing on Unix/Linux.
886
887----------------------------------------
88803 October 2018. Summary of changes for version 20181003:
889
890
8912) iASL Compiler/Disassembler and Tools:
892
893Fixed a regression introduced in version 20180927 that could cause the
894compiler to fault, especially with NamePaths containing one or more
895carats (^). Such as: ^^_SB_PCI0
896
897Added a new remark for the Sleep() operator when the sleep time operand
898is larger than one second. This is a very long time for the ASL/BIOS code
899and may not be what was intended by the ASL writer.
900
901----------------------------------------
90227 September 2018. Summary of changes for version 20180927:
903
904
9051) ACPICA kernel-resident subsystem:
906
907Updated the GPE support to clear the status of all ACPI events when
908entering any/all sleep states in order to avoid premature wakeups. In
909theory, this may cause some wakeup events to be missed, but the
910likelihood of this is small. This change restores the original behavior
911of the ACPICA code in order to fix a regression seen from the previous
912"Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
913This regression could cause some systems to incorrectly wake immediately.
914
915Updated the execution of the _REG methods during initialization and
916namespace loading to bring the behavior into closer conformance to the
917ACPI specification and other ACPI implementations:
918
919From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
920    "Control methods must assume all operation regions are inaccessible
921until the _REG(RegionSpace, 1) method is executed"
922
923    "The exceptions to this rule are:
9241.  OSPM must guarantee that the following operation regions are always
925accessible:
926    SystemIO operation regions.
927    SystemMemory operation regions when accessing memory returned by the
928System Address Map reporting interfaces."
929
930Since the state of both the SystemIO and SystemMemory address spaces are
931defined by the specification to never change, this ACPICA change ensures
932that now _REG is never called on them. This solves some problems seen in
933the field and provides compatibility with other ACPI implementations. An
934update to the upcoming new version of the ACPI specification will help
935clarify this behavior.
936
937Updated the implementation of support for the Generic Serial Bus. For the
938"bidirectional" protocols, the internal implementation now automatically
939creates a return data buffer of the maximum size (255). This handles the
940worst-case for data that is returned from the serial bus handler, and
941fixes some problems seen in the field. This new buffer is directly
942returned to the ASL. As such, there is no true "bidirectional" buffer,
943which matches the ACPI specification. This is the reason for the "double
944store" seen in the example ASL code in the specification, shown below:
945
946Word Process Call (AttribProcessCall):
947    OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
948    Field(TOP1, BufferAcc, NoLock, Preserve)
949    {
950        FLD1, 8, // Virtual register at command value 1.
951    }
952
953    Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
954                             // as BUFF
955    CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
956
957    Store(0x5416, DATA)               // Save 0x5416 into the data buffer
958    Store(Store(BUFF, FLD1), BUFF)    // Invoke a write/read Process Call
959transaction
960                           // This is the "double store". The write to
961                           // FLD1 returns a new buffer, which is stored
962                           // back into BUFF with the second Store.
963
964
9652) iASL Compiler/Disassembler and Tools:
966
967iASL: Implemented detection of extraneous/redundant uses of the Offset()
968operator within a Field Unit list. A remark is now issued for these. For
969example, the first two of the Offset() operators below are extraneous.
970Because both the compiler and the interpreter track the offsets
971automatically, these Offsets simply refer to the current offset and are
972unnecessary. Note, when optimization is enabled, the iASL compiler will
973in fact remove the redundant Offset operators and will not emit any AML
974code for them.
975
976    OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
977    Field (OPR1)
978    {
979        Offset (0),     // Never needed
980        FLD1, 32,
981        Offset (4),     // Redundant, offset is already 4 (bytes)
982        FLD2, 8,
983        Offset (64),    // OK use of Offset.
984        FLD3, 16,
985    }
986dsdt.asl     14:         Offset (0),
987Remark   2158 -                 ^ Unnecessary/redundant use of Offset
988operator
989
990dsdt.asl     16:         Offset (4),
991Remark   2158 -                 ^ Unnecessary/redundant use of Offset
992operator
993
994----------------------------------------
99510 August 2018. Summary of changes for version 20180810:
996
997
9981) ACPICA kernel-resident subsystem:
999
1000Initial ACPI table loading: Attempt to continue loading ACPI tables
1001regardless of malformed AML. Since migrating table initialization to the
1002new module-level code support, the AML interpreter rejected tables upon
1003any ACPI error encountered during table load. This is a problem because
1004non-serious ACPI errors during table load do not necessarily mean that
1005the entire definition block (DSDT or SSDT) is invalid. This change
1006improves the table loading by ignoring some types of errors that can be
1007generated by incorrect AML. This can range from object type errors, scope
1008errors, and index errors.
1009
1010Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
1011during suspend/resume. The status of ACPI events is no longer cleared
1012when entering the ACPI S5 system state (power off) which caused some
1013systems to power up immediately after turning off power in certain
1014situations. This was a functional regression. It was fixed by clearing
1015the status of all ACPI events again when entering S5 (for system-wide
1016suspend or hibernation the clearing of the status of all events is not
1017desirable, as it might cause the kernel to miss wakeup events sometimes).
1018Rafael Wysocki.
1019
1020
10212) iASL Compiler/Disassembler and Tools:
1022
1023AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
1024elements listed in the initialization file were previously initialized
1025after the table load and before executing module-level code blocks.
1026Recent changes in the module-level code support means that the table load
1027becomes a large control method execution. If fields are used within
1028module-level code and we are executing with the -fi option, the
1029initialization values were used to initialize the namespace object(s)
1030only after the table was finished loading. This change Provides an early
1031initialization of objects specified in the initialization file so that
1032field unit values are populated during the table load (not after the
1033load).
1034
1035AcpiExec: Fixed a small memory leak regression that could result in
1036warnings during exit of the utility. These warnings were similar to
1037these:
1038    0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
1039    0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
1040
1041----------------------------------------
104229 June 2018. Summary of changes for version 20180629:
1043
1044
10451) iASL Compiler/Disassembler and Tools:
1046
1047iASL: Fixed a regression related to the use of the ASL External
1048statement. Error checking for the use of the External() statement has
1049been relaxed. Previously, a restriction on the use of External meant that
1050the referenced named object was required to be defined in a different
1051table (an SSDT). Thus it would be an error to declare an object as an
1052external and then define the same named object in the same table. For
1053example:
1054    DefinitionBlock (...)
1055    {
1056        External (DEV1)
1057        Device (DEV1){...} // This was an error
1058    }
1059However, this behavior has caused regressions in some existing ASL code,
1060because there is code that depends on named objects and externals (with
1061the same name) being declared in the same table. This change will allow
1062the ASL code above to compile without errors or warnings.
1063
1064iASL: Implemented ASL language extensions for four operators to make some
1065of their arguments optional instead of required:
1066    1) Field (RegionName, AccessType, LockRule, UpdateRule)
1067    2) BankField (RegionName, BankName, BankValue,
1068                AccessType, LockRule, UpdateRule)
1069    3) IndexField (IndexName, DataName,
1070                AccessType, LockRule, UpdateRule)
1071For the Field operators above, the AccessType, LockRule, and UpdateRule
1072are now optional arguments. The default values are:
1073        AccessType: AnyAcc
1074        LockRule:   NoLock
1075        UpdateRule: Preserve
1076    4) Mutex (MutexName, SyncLevel)
1077For this operator, the SyncLevel argument is now optional. This argument
1078is rarely used in any meaningful way by ASL code, and thus it makes sense
1079to make it optional. The default value is:
1080        SyncLevel:  0
1081
1082iASL: Attempted use of the ASL Unload() operator now results in the
1083following warning:
1084    "Unload is not supported by all operating systems"
1085This is in fact very true, and the Unload operator may be completely
1086deprecated in the near future.
1087
1088AcpiExec: Fixed a regression for the -fi option (Namespace initialization
1089file. Recent changes in the ACPICA module-level code support altered the
1090table load/initialization sequence . This means that the table load has
1091become a large method execution of the table itself. If Operation Region
1092Fields are used within any module-level code and the -fi option was
1093specified, the initialization values were populated only after the table
1094had completely finished loading (and thus the module-level code had
1095already been executed). This change moves the initialization of objects
1096listed in the initialization file to before the table is executed as a
1097method. Field unit values are now initialized before the table execution
1098is performed.
1099
1100----------------------------------------
110131 May 2018. Summary of changes for version 20180531:
1102
1103
11041) ACPICA kernel-resident Subsystem:
1105
1106Implemented additional support to help ensure that a DSDT or SSDT is
1107fully loaded even if errors are incurred during the load. The majority of
1108the problems that are seen is the failure of individual AML operators
1109that occur during execution of any module-level code (MLC) existing in
1110the table. This support adds a mechanism to abort the current ASL
1111statement (AML opcode), emit an error message, and to simply move on to
1112the next opcode -- instead of aborting the entire table load. This is
1113different than the execution of a control method where the entire method
1114is aborted upon any error. The goal is to perform a very "best effort" to
1115load the ACPI tables. The most common MLC errors that have been seen in
1116the field are direct references to unresolved ASL/AML symbols (referenced
1117directly without the use of the CondRefOf operator to validate the
1118symbol). This new ACPICA behavior is now compatible with other ACPI
1119implementations.
1120
1121Interpreter: The Unload AML operator is no longer supported for the
1122reasons below. An AE_NOT_IMPLEMENTED exception is returned.
11231) A correct implementation on at least some hosts may not be possible.
11242) Other ACPI implementations do not correctly/fully support it.
11253) It requires host device driver support which is not known to exist.
1126    (To properly support namespace unload out from underneath.)
11274) This AML operator has never been seen in the field.
1128
1129Parser: Added a debug option to dump AML parse sub-trees as they are
1130being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
1131ACPI_DB_PARSE_TREES.
1132
1133Debugger: Reduced the verbosity for errors incurred during table load and
1134module-level code execution.
1135
1136Completed an investigation into adding a namespace node "owner list"
1137instead of the current "owner ID" associated with namespace nodes. This
1138list would link together all nodes that are owned by an individual
1139control method. The purpose would be to enhance control method execution
1140by speeding up cleanup during method exit (all namespace nodes created by
1141a method are deleted upon method termination.) Currently, the entire
1142namespace must be searched for matching owner IDs if (and only if) the
1143method creates named objects outside of the local scope. However, by far
1144the most common case is that methods create objects locally, not outside
1145the method scope. There is already an ACPICA optimization in place that
1146only searches the entire namespace in the rare case of a method creating
1147objects elsewhere in the namespace. Therefore, it is felt that the
1148overhead of adding an additional pointer to each namespace node to
1149implement the owner list makes this feature unnecessary.
1150
1151
11522) iASL Compiler/Disassembler and Tools:
1153
1154iASL, Disassembler, and Template generator: Implemented support for
1155Revision D of the IORT table. Adds a new subtable that is used to specify
1156SMMUv3 PMCGs. rmurphy-arm.
1157
1158Disassembler: Restored correct table header validation for the "special"
1159ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
1160table header and must be special-cased. This was a regression that has
1161been present for apparently a long time.
1162
1163AcpiExec: Reduced verbosity of the local exception handler implemented
1164within acpiexec. This handler is invoked by ACPICA upon any exceptions
1165generated during control method execution. A new option was added: -vh
1166restores the original verbosity level if desired.
1167
1168AcpiExec: Changed the default base from decimal to hex for the -x option
1169(set debug level). This simplifies the use of this option and matches the
1170behavior of the corresponding iASL -x option.
1171
1172AcpiExec: Restored a force-exit on multiple control-c (sigint)
1173interrupts. This allows program termination even if other issues cause
1174the control-c to fail.
1175
1176ASL test suite (ASLTS): Added tests for the recently implemented package
1177element resolution mechanism that allows forward references to named
1178objects from individual package elements (this mechanism provides
1179compatibility with other ACPI implementations.)
1180
1181
1182----------------------------------------
11838 May 2018. Summary of changes for version 20180508:
1184
1185
11861) ACPICA kernel-resident subsystem:
1187
1188Completed the new (recently deployed) package resolution mechanism for
1189the Load and LoadTable ASL/AML operators. This fixes a regression that
1190was introduced in version 20180209 that could result in an
1191AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
1192(SSDT) that contains package objects.
1193
1194
11952) iASL Compiler/Disassembler and Tools:
1196
1197AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
11981 MB. This change allows for table offsets within the acpidump file to be
1199up to 8 characters. These changes are backwards compatible with existing
1200acpidump files.
1201
1202
1203----------------------------------------
120427 April 2018. Summary of changes for version 20180427:
1205
1206
12071) ACPICA kernel-resident subsystem:
1208
1209Debugger: Added support for Package objects in the "Test Objects"
1210command. This command walks the entire namespace and evaluates all named
1211data objects (Integers, Strings, Buffers, and now Packages).
1212
1213Improved error messages for the namespace root node. Originally, the root
1214was referred to by the confusing string "\___". This has been replaced by
1215"Namespace Root" for clarification.
1216
1217Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
1218Ian King <colin.king@canonical.com>.
1219
1220
12212) iASL Compiler/Disassembler and Tools:
1222
1223iASL: Implemented support to detect and flag illegal forward references.
1224For compatibility with other ACPI implementations, these references are
1225now illegal at the root level of the DSDT or SSDTs. Forward references
1226have always been illegal within control methods. This change should not
1227affect existing ASL/AML code because of the fact that these references
1228have always been illegal in the other ACPI implementation.
1229
1230iASL: Added error messages for the case where a table OEM ID and OEM
1231TABLE ID strings are longer than the ACPI-defined length. Previously,
1232these strings were simply silently truncated.
1233
1234iASL: Enhanced the -tc option (which creates an AML hex file in C,
1235suitable for import into a firmware project):
1236  1) Create a unique name for the table, to simplify use of multiple
1237SSDTs.
1238  2) Add a protection #ifdef in the file, similar to a .h header file.
1239With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd,
1240evan.lloyd@arm.com
1241
1242AcpiExec: Added a new option, -df, to disable the local fault handler.
1243This is useful during debugging, where it may be desired to drop into a
1244debugger on a fault.
1245
1246----------------------------------------
124713 March 2018. Summary of changes for version 20180313:
1248
1249
12501) ACPICA kernel-resident subsystem:
1251
1252Implemented various improvements to the GPE support:
1253
12541) Dispatch all active GPEs at initialization time so that no GPEs are
1255lost.
12562) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
1257before devices are enumerated.
12583) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
1259IRQs are not lost.
12604) Add parallel GPE handling to eliminate the possibility of dispatching
1261the same GPE twice.
12625) Dispatch any pending GPEs after enabling for the first time.
1263
1264AcpiGetObjectInfo - removed support for the _STA method. This was causing
1265problems on some platforms.
1266
1267Added a new _OSI string, "Windows 2017.2".
1268
1269Cleaned up and simplified the module-level code support. These changes
1270are in preparation for the eventual removal of the legacy MLC support
1271(deferred execution), replaced by the new MLC architecture which executes
1272the MLC as a table is loaded (DSDT/SSDTs).
1273
1274Changed a compile-time option to a runtime option. Changes the option to
1275ignore ACPI table load-time package resolution errors into a runtime
1276option. Used only for platforms that generate many AE_NOT_FOUND errors
1277during boot. AcpiGbl_IgnorePackageResolutionErrors.
1278
1279Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
1280ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
1281compilation errors from unused variables (seen with some compilers).
1282
1283
12842) iASL Compiler/Disassembler and Tools:
1285
1286ASLTS: parallelized execution in order to achieve an (approximately) 2X
1287performance increase.
1288
1289ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
1290error reporting.
1291
1292----------------------------------------
129309 February 2018. Summary of changes for version 20180209:
1294
1295
12961) ACPICA kernel-resident subsystem:
1297
1298Completed the final integration of the recent changes to Package Object
1299handling and the module-level AML code support. This allows forward
1300references from individual package elements when the package object is
1301declared from within module-level code blocks. Provides compatibility
1302with other ACPI implementations.
1303
1304The new architecture for the AML module-level code has been completed and
1305is now the default for the ACPICA code. This new architecture executes
1306the module-level code in-line as the ACPI table is loaded/parsed instead
1307of the previous architecture which deferred this code until after the
1308table was fully loaded. This solves some ASL code ordering issues and
1309provides compatibility with other ACPI implementations. At this time,
1310there is an option to fallback to the earlier architecture, but this
1311support is deprecated and is planned to be completely removed later this
1312year.
1313
1314Added a compile-time option to ignore AE_NOT_FOUND exceptions during
1315resolution of named reference elements within Package objects. Although
1316this is potentially a serious problem, it can generate a lot of
1317noise/errors on platforms whose firmware carries around a bunch of unused
1318Package objects. To disable these errors, define
1319ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
1320errors are always reported for ACPICA applications such as AcpiExec.
1321
1322Fixed a regression related to the explicit type-conversion AML operators
1323(ToXXXX). The regression was introduced early in 2017 but was not seen
1324until recently because these operators are not fully supported by other
1325ACPI implementations and are thus rarely used by firmware developers. The
1326operators are defined by the ACPI specification to not implement the
1327"implicit result object conversion". The regression incorrectly
1328introduced this object conversion for the following explicit conversion
1329operators:
1330    ToInteger
1331    ToString
1332    ToBuffer
1333    ToDecimalString
1334    ToHexString
1335    ToBCD
1336    FromBCD
1337
1338
13392) iASL Compiler/Disassembler and Tools:
1340
1341iASL: Fixed a problem with the compiler constant folding feature as
1342related to the ToXXXX explicit conversion operators. These operators do
1343not support the "implicit result object conversion" by definition. Thus,
1344ASL expressions that use these operators cannot be folded to a simple
1345Store operator because Store implements the implicit conversion. This
1346change uses the CopyObject operator for the ToXXXX operator folding
1347instead. CopyObject is defined to not implement implicit result
1348conversions and is thus appropriate for folding the ToXXXX operators.
1349
1350iASL: Changed the severity of an error condition to a simple warning for
1351the case where a symbol is declared both locally and as an external
1352symbol. This accommodates existing ASL code.
1353
1354AcpiExec: The -ep option to enable the new architecture for module-level
1355code has been removed. It is replaced by the -dp option which instead has
1356the opposite effect: it disables the new architecture (the default) and
1357enables the legacy architecture. When the legacy code is removed in the
1358future, the -dp option will be removed also.
1359
1360----------------------------------------
136105 January 2018. Summary of changes for version 20180105:
1362
1363
13641) ACPICA kernel-resident subsystem:
1365
1366Updated all copyrights to 2018. This affects all source code modules.
1367
1368Fixed a possible build error caused by an unresolved reference to the
1369AcpiUtSafeStrncpy function.
1370
1371Removed NULL pointer arithmetic in the various pointer manipulation
1372macros. All "(void *) NULL" constructs are converted to "(void *) 0".
1373This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
1374
1375Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
1376Mittal.
1377
1378
13792) iASL Compiler/Disassembler and Tools:
1380
1381ASLTS: Updated all copyrights to 2018.
1382
1383Tools: Updated all signon copyrights to 2018.
1384
1385AcpiXtract: Fixed a regression related to ACPI table signatures where the
1386signature was truncated to 3 characters (instead of 4).
1387
1388AcpiExec: Restore the original terminal mode after the use of the -v and
1389-vd options.
1390
1391ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
1392
1393----------------------------------------
139414 December 2017. Summary of changes for version 20171214:
1395
1396
13971) ACPICA kernel-resident subsystem:
1398
1399Fixed a regression in the external (public) AcpiEvaluateObjectTyped
1400interface where the optional "pathname" argument had inadvertently become
1401a required argument returning an error if omitted (NULL pointer
1402argument).
1403
1404Fixed two possible memory leaks related to the recently developed "late
1405resolution" of reference objects within ASL Package Object definitions.
1406
1407Added two recently defined _OSI strings: "Windows 2016" and "Windows
14082017". Mario Limonciello.
1409
1410Implemented and deployed a safer version of the C library function
1411strncpy:  AcpiUtSafeStrncpy. The intent is to at least prevent the
1412creation of unterminated strings as a possible result of a standard
1413strncpy.
1414
1415Cleaned up and restructured the global variable file (acglobal.h). There
1416are many changes, but no functional changes.
1417
1418
14192) iASL Compiler/Disassembler and Tools:
1420
1421iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
1422optional OemData field at the end of the table was incorrectly required
1423for proper compilation. It is now correctly an optional field.
1424
1425ASLTS: The entire suite was converted from standard ASL to the ASL+
1426language, using the ASL-to-ASL+ converter which is integrated into the
1427iASL compiler. A binary compare of all output files has verified the
1428correctness of the conversion.
1429
1430iASL: Fixed the source code build for platforms where "char" is unsigned.
1431This affected the iASL lexer only. Jung-uk Kim.
1432
1433----------------------------------------
143410 November 2017. Summary of changes for version 20171110:
1435
1436
14371) ACPICA kernel-resident subsystem:
1438
1439This release implements full support for ACPI 6.2A:
1440    NFIT - Added a new subtable, "Platform Capabilities Structure"
1441No other changes to ACPICA were required, since ACPI 6.2A is primarily an
1442errata release of the specification.
1443
1444Other ACPI table changes:
1445    IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
1446    PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
1447Linton
1448
1449Utilities: Modified the string/integer conversion functions to use
1450internal 64-bit divide support instead of a native divide. On 32-bit
1451platforms, a 64-bit divide typically requires a library function which
1452may not be present in the build (kernel or otherwise).
1453
1454Implemented a targeted error message for timeouts returned from the
1455Embedded Controller device driver. This is seen frequently enough to
1456special-case an AE_TIME returned from an EC operation region access:
1457    "Timeout from EC hardware or EC device driver"
1458
1459Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
1460runtime error messages have the identical prefix.
1461
1462
14632) iASL Compiler/Disassembler and Tools:
1464
1465AcpiXtract: Fixed a problem with table header detection within the
1466acpidump file. Processing a table could be ended early if a 0x40 (@)
1467appears in the original binary table, resulting in the @ symbol appearing
1468in the decoded ASCII field at the end of the acpidump text line. The
1469symbol caused acpixtract to incorrectly think it had reached the end of
1470the current table and the beginning of a new table.
1471
1472AcpiXtract: Added an option (-f) to ignore some errors during table
1473extraction. This initial implementation ignores non-ASCII and non-
1474printable characters found in the acpidump text file.
1475
1476TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
1477for ASLTS. This feature is used to track memory allocations from
1478different memory caches within the ACPICA code. At the end of an ASLTS
1479run, these memory statistics are recorded and stored in a log file.
1480
1481Debugger (user-space version): Implemented a simple "Background" command.
1482Creates a new thread to execute a control method in the background, while
1483control returns to the debugger prompt to allow additional commands.
1484    Syntax: Background <Namepath> [Arguments]
1485
1486----------------------------------------
148729 September 2017. Summary of changes for version 20170929:
1488
1489
14901) ACPICA kernel-resident subsystem:
1491
1492Redesigned and implemented an improved ASL While() loop timeout
1493mechanism. This mechanism is used to prevent infinite loops in the kernel
1494AML interpreter caused by either non-responsive hardware or incorrect AML
1495code. The new implementation uses AcpiOsGetTimer instead of a simple
1496maximum loop count, and is thus more accurate and constant across
1497different machines. The default timeout is currently 30 seconds, but this
1498may be adjusted later.
1499
1500Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
1501better reflect the new implementation of the loop timeout mechanism.
1502
1503Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
1504and to fix an off-by-one error. Jung-uk Kim.
1505
1506Fixed an EFI build problem by updating the makefiles to for a new file
1507that was added, utstrsuppt.c
1508
1509
15102) iASL Compiler/Disassembler and Tools:
1511
1512Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
1513includes support in the table disassembler, compiler, and template
1514generator.
1515
1516iASL: Added an exception for an illegal type of recursive method
1517invocation. If a method creates named objects, the first recursive call
1518will fail at runtime. This change adds an error detection at compile time
1519to catch the problem up front. Note: Marking such a method as
1520"serialized" will not help with this problem, because the same thread can
1521acquire the method mutex more than once. Example compiler and runtime
1522output:
1523
1524    Method (MTH1)
1525    {
1526        Name (INT1, 1)
1527        MTH1 ()
1528    }
1529
1530    dsdt.asl     22: MTH1 ()
1531    Error    6152 -  ^ Illegal recursive call to method
1532                       that creates named objects (MTH1)
1533
1534Previous runtime exception:
1535    ACPI Error: [INT1] Namespace lookup failure,
1536    AE_ALREADY_EXISTS (20170831/dswload2-465)
1537
1538iASL: Updated support for External() opcodes to improve namespace
1539management and error detection. These changes are related to issues seen
1540with multiple-segment namespace pathnames within External declarations,
1541such as below:
1542
1543    External(\_SB.PCI0.GFX0, DeviceObj)
1544    External(\_SB.PCI0.GFX0.ALSI)
1545
1546iASL: Implemented support for multi-line error/warning messages. This
1547enables more detailed and helpful error messages as below, from the
1548initial deployment for the duplicate names error:
1549
1550    DSDT.iiii   1692:       Device(PEG2) {
1551    Error    6074 -                  ^ Name already exists in scope
1552(PEG2)
1553
1554        Original name creation/declaration below:
1555        DSDT.iiii     93:   External(\_SB.PCI0.PEG2, DeviceObj)
1556
1557AcpiXtract: Added additional flexibility to support differing input hex
1558dump formats. Specifically, hex dumps that contain partial disassembly
1559and/or comments within the ACPI table data definition. There exist some
1560dump utilities seen in the field that create this type of hex dump (such
1561as Simics). For example:
1562
1563    DSDT @ 0xdfffd0c0 (10999 bytes)
1564        Signature DSDT
1565        Length 10999
1566        Revision 1
1567        Checksum 0xf3 (Ok)
1568        OEM_ID BXPC
1569        OEM_table_id BXDSDT
1570        OEM_revision 1
1571        Creator_id 1280593481
1572        Creator_revision 537399345
1573      0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
1574      ...
1575      2af0: 5f 4c 30 46 00 a4 01
1576
1577Test suite: Miscellaneous changes/fixes:
1578    More cleanup and simplification of makefiles
1579    Continue compilation of test cases after a compile failure
1580    Do not perform binary compare unless both files actually exist
1581
1582iASL: Performed some code/module restructuring. Moved all memory
1583allocation functions to new modules. Two new files, aslallocate.c and
1584aslcache.c
1585
1586----------------------------------------
158731 August 2017. Summary of changes for version 20170831:
1588
1589
15901) ACPICA kernel-resident subsystem:
1591
1592Implemented internal support for full 64-bit addresses that appear in all
1593Generic Address Structure (GAS) structures. Previously, only the lower 32
1594bits were used. Affects the use of GAS structures in the FADT and other
1595tables, as well as the GAS structures passed to the AcpiRead and
1596AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
1597
1598Added header support for the PDTT ACPI table (Processor Debug Trigger
1599Table). Full support in the iASL Data Table Compiler and disassembler is
1600forthcoming.
1601
1602
16032) iASL Compiler/Disassembler and Tools:
1604
1605iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
1606Properties Topology Table) where a flag bit was specified in the wrong
1607bit position ("Line Size Valid", bit 6).
1608
1609iASL: Implemented support for Octal integer constants as defined by the
1610ASL language grammar, per the ACPI specification. Any integer constant
1611that starts with a zero is an octal constant. For example,
1612    Store (037777, Local0) /* Octal constant */
1613    Store (0x3FFF, Local0) /* Hex equivalent */
1614    Store (16383,  Local0) /* Decimal equivalent */
1615
1616iASL: Improved overflow detection for 64-bit string conversions during
1617compilation of integer constants. "Overflow" in this case means a string
1618that represents an integer that is too large to fit into a 64-bit value.
1619Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
1620the low-order 32 bits with a warning, as previously implemented. Several
1621new exceptions are defined that indicate a 64-bit overflow, as well as
1622the base (radix) that was used during the attempted conversion. Examples:
1623    Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF        // AE_HEX_OVERFLOW
1624    Local0 = 01111222233334444555566667777     // AE_OCTAL_OVERFLOW
1625    Local0 = 11112222333344445555666677778888  // AE_DECIMAL_OVERFLOW
1626
1627iASL: Added a warning for the case where a ResourceTemplate is declared
1628with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
1629this case, the resulting template is created with a single END_TAG
1630descriptor, which is essentially useless.
1631
1632iASL: Expanded the -vw option (ignore specific warnings/remarks) to
1633include compilation error codes as well.
1634
1635----------------------------------------
163628 July 2017. Summary of changes for version 20170728:
1637
1638
16391) ACPICA kernel-resident subsystem:
1640
1641Fixed a regression seen with small resource descriptors that could cause
1642an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
1643
1644AML interpreter: Implemented a new feature that allows forward references
1645from individual named references within package objects that are
1646contained within blocks of "module-level code". This provides
1647compatibility with other ACPI implementations and supports existing
1648firmware that depends on this feature. Example:
1649
1650    Name (ABCD, 1)
1651    If (ABCD)                       /* An If() at module-level */
1652    {
1653        Name (PKG1, Package()
1654        {
1655            INT1                    /* Forward reference to object INT1
1656*/
1657        })
1658        Name (INT1, 0x1234)
1659    }
1660
1661AML Interpreter: Fixed a problem with the Alias() operator where aliases
1662to some ASL objects were not handled properly. Objects affected are:
1663Mutex, Event, and OperationRegion.
1664
1665AML Debugger: Enhanced to properly handle AML Alias objects. These
1666objects have one level of indirection which was not fully supported by
1667the debugger.
1668
1669Table Manager: Added support to detect and ignore duplicate SSDTs within
1670the XSDT/RSDT. This error in the XSDT has been seen in the field.
1671
1672EFI and EDK2 support:
1673    Enabled /WX flag for MSVC builds
1674    Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
1675    Added local support for 64-bit multiply and shift operations
1676    Added support to compile acpidump.efi on Windows
1677    Added OSL function stubs for interfaces not used under EFI
1678
1679Added additional support for the _DMA predefined name. _DMA returns a
1680buffer containing a resource template. This change add support within the
1681resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
1682resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
1683
1684
16852) iASL Compiler/Disassembler and Tools:
1686
1687iASL: Fixed a problem where the internal input line buffer(s) could
1688overflow if there are very long lines in the input ASL source code file.
1689Implemented buffer management that automatically increases the size of
1690the buffers as necessary.
1691
1692iASL: Added an option (-vx) to "expect" particular remarks, warnings and
1693errors. If the specified exception is not raised during compilation, the
1694compiler emits an error. This is intended to support the ASL test suite,
1695but may be useful in other contexts.
1696
1697iASL: Implemented a new predefined macro, __METHOD__, which returns a
1698string containing the name of the current control method that is being
1699compiled.
1700
1701iASL: Implemented debugger and table compiler support for the SDEI ACPI
1702table (Software Delegated Exception Interface). James Morse
1703<james.morse@arm.com>
1704
1705Unix/Linux makefiles: Added an option to disable compile optimizations.
1706The disable occurs when the NOOPT flag is set to TRUE.
1707theracermaster@gmail.com
1708
1709Acpidump: Added support for multiple DSDT and FACS tables. This can occur
1710when there are different tables for 32-bit versus 64-bit.
1711
1712Enhanced error reporting for the ASL test suite (ASLTS) by removing
1713unnecessary/verbose text, and emit the actual line number where an error
1714has occurred. These changes are intended to improve the usefulness of the
1715test suite.
1716
1717----------------------------------------
171829 June 2017. Summary of changes for version 20170629:
1719
1720
17211) ACPICA kernel-resident subsystem:
1722
1723Tables: Implemented a deferred ACPI table verification. This is useful
1724for operating systems where the tables cannot be verified in the early
1725initialization stage due to early memory mapping limitations on some
1726architectures. Lv Zheng.
1727
1728Tables: Removed the signature validation for dynamically loaded tables.
1729Provides compatibility with other ACPI implementations. Previously, only
1730SSDT tables were allowed, as per the ACPI specification. Now, any table
1731signature can be used via the Load() operator. Lv Zheng.
1732
1733Tables: Fixed several mutex issues that could cause errors during table
1734acquisition. Lv Zheng.
1735
1736Tables: Fixed a problem where an ACPI warning could be generated if a
1737null pointer was passed to the AcpiPutTable interface. Lv Zheng.
1738
1739Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
1740AcpiPutTable interfaces. This applies to the "late stage" table loading
1741when the use of AcpiPutTable is no longer required (since the system
1742memory manager is fully running and available). Lv Zheng.
1743
1744Fixed/Reverted a regression during processing of resource descriptors
1745that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
1746exception in this case.
1747
1748Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
1749I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
1750
1751Interpreter: Fixed a possible fault if an Alias operator with an invalid
1752or duplicate target is encountered during Alias creation in
1753AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
1754
1755Added an option to use designated initializers for function pointers.
1756Kees Cook <keescook@google.com>
1757
1758
17592) iASL Compiler/Disassembler and Tools:
1760
1761iASL: Allow compilation of External declarations with target pathnames
1762that refer to existing named objects within the table. Erik Schmauss.
1763
1764iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
1765FieldUnit name also is declared via External in the same table. Erik
1766Schmauss.
1767
1768iASL: Allow existing scope names within pathnames used in External
1769statements. For example:
1770    External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
1771    Device (ABCD)
1772
1773iASL: IORT ACPI table: Implemented changes required to decode the new
1774Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
1775compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
1776
1777Disassembler: Don't abort disassembly on errors from External()
1778statements. Erik Schmauss.
1779
1780Disassembler: fixed a possible fault when one of the Create*Field
1781operators references a Resource Template. ACPICA Bugzilla 1396.
1782
1783iASL: In the source code, resolved some naming inconsistences across the
1784parsing support. Fixes confusion between "Parse Op" and "Parse Node".
1785Adds a new file, aslparseop.c
1786
1787----------------------------------------
178831 May 2017. Summary of changes for version 20170531:
1789
1790
17910) ACPI 6.2 support:
1792
1793The ACPI specification version 6.2 has been released and is available at
1794http://uefi.org/specifications
1795
1796This version of ACPICA fully supports the ACPI 6.2 specification. Changes
1797are summarized below.
1798
1799New ACPI tables (Table Compiler/Disassembler/Templates):
1800    HMAT (Heterogeneous Memory Attributes Table)
1801    WSMT (Windows SMM Security Mitigation Table)
1802    PPTT (Processor Properties Topology Table)
1803
1804New subtables for existing ACPI tables:
1805    HEST (New subtable, Arch-deferred machine check)
1806    SRAT (New subtable, Arch-specific affinity structure)
1807    PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
1808
1809Simple updates for existing ACPI tables:
1810    BGRT (two new flag bits)
1811    HEST (New bit defined for several subtables, GHES_ASSIST)
1812
1813New Resource Descriptors and Resource macros (Compiler/Disassembler):
1814    PinConfig()
1815    PinFunction()
1816    PinGroup()
1817    PinGroupConfig()
1818    PinGroupFunction()
1819    New type for hardware error notification (section 18.3.2.9)
1820
1821New predefined names/methods (Compiler/Interpreter):
1822    _HMA (Heterogeneous Memory Attributes)
1823    _LSI (Label Storage Information)
1824    _LSR (Label Storage Read)
1825    _LSW (Label Storage Write)
1826
1827ASL grammar/macro changes (Compiler):
1828    For() ASL macro, implemented with the AML while operator
1829    Extensions to Concatenate operator
1830    Support for multiple definition blocks in same ASL file
1831    Clarification for Buffer operator
1832    Allow executable AML code underneath all scopes (Devices, etc.)
1833    Clarification/change for the _OSI return value
1834    ASL grammar update for reference operators
1835    Allow a zero-length string for AML filename in DefinitionBlock
1836
1837Miscellaneous:
1838    New device object notification value
1839    Remove a notify value (0x0C) for graceful shutdown
1840    New UUIDs for processor/cache properties and
1841        physical package property
1842    New _HID, ACPI0014 (Wireless Power Calibration Device)
1843
1844
18451) ACPICA kernel-resident subsystem:
1846
1847Added support to disable ACPI events on hardware-reduced platforms.
1848Eliminates error messages of the form "Could not enable fixed event". Lv
1849Zheng
1850
1851Fixed a problem using Device/Thermal objects with the ObjectType and
1852DerefOf ASL operators. This support had not been fully/properly
1853implemented.
1854
1855Fixed a problem where if a Buffer object containing a resource template
1856was longer than the actual resource template, an error was generated --
1857even though the AML is legal. This case has been seen in the field.
1858
1859Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
1860The values for DUAL_PIC and MULTIPLE_APIC were reversed.
1861
1862Added header file changes for the TPM2 ACPI table. Update to new version
1863of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
1864
1865Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
1866These interfaces are intended to be used only in conjunction with the
1867predefined _DLM method (Device Lock Method). "This object appears in a
1868device scope when AML access to the device must be synchronized with the
1869OS environment".
1870
1871Example Code and Data Size: These are the sizes for the OS-independent
1872acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1873debug version of the code includes the debug output trace mechanism and
1874has a much larger code and data size.
1875
1876  Current Release:
1877    Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
1878    Debug Version:     204.0K Code, 84.3K Data, 288.3K Total
1879  Previous Release:
1880    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
1881    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
1882
1883
18842) iASL Compiler/Disassembler and Tools:
1885
1886iASL: Fixed a problem where an External() declaration could not refer to
1887a Field Unit. Erik Schmauss.
1888
1889Disassembler: Improved support for the Switch/Case operators. This
1890feature will disassemble AML code back to the original Switch operators
1891when possible, instead of an If..Else sequence. David Box
1892
1893iASL and disassembler: Improved the handling of multiple extraneous
1894parentheses for both ASL input and disassembled ASL output.
1895
1896Improved the behavior of the iASL compiler and disassembler to detect
1897improper use of external declarations
1898
1899Disassembler: Now aborts immediately upon detection of an unknown AML
1900opcode. The AML parser has no real way to recover from this, and can
1901result in the creation of an ill-formed parse tree that causes errors
1902later during the disassembly.
1903
1904All tools: Fixed a problem where the Unix application OSL did not handle
1905control-c correctly. For example, a control-c could incorrectly wake the
1906debugger.
1907
1908AcpiExec: Improved the Control-C handling and added a handler for
1909segmentation faults (SIGSEGV). Supports both Windows and Unix-like
1910environments.
1911
1912Reduced the verbosity of the generic unix makefiles. Previously, each
1913compilation displayed the full set of compiler options. This has been
1914eliminated as the options are easily inspected within the makefiles. Each
1915compilation now results in a single line of output.
1916
1917----------------------------------------
191803 March 2017. Summary of changes for version 20170303:
1919
1920
19210) ACPICA licensing:
1922
1923The licensing information at the start of each source code module has
1924been updated. In addition to the Intel license, the dual GPLv2/BSD
1925license has been added for completeness. Now, a single version of the
1926source code should be suitable for all ACPICA customers. This is the
1927major change for this release since it affects all source code modules.
1928
1929
19301) ACPICA kernel-resident subsystem:
1931
1932Fixed two issues with the common asltypes.h header that could cause
1933problems in some environments: (Kim Jung-uk)
1934    Removed typedef for YY_BUFFER_STATE ?
1935       Fixes an error with earlier versions of Flex.
1936    Removed use of FILE typedef (which is only defined in stdio.h)
1937
1938
19392) iASL Compiler/Disassembler and Tools:
1940
1941Disassembler: fixed a regression introduced in 20170224. A fix for a
1942memory leak related to resource descriptor tags (names) could fault when
1943the disassembler was generated with 64-bit compilers.
1944
1945The ASLTS test suite has been updated to implement a new testing
1946architecture. During generation of the suite from ASL source, both the
1947ASL and ASL+ compilers are now validated, as well as the disassembler
1948itself (Erik Schmauss). The architecture executes as follows:
1949
1950    For every ASL source module:
1951        Compile (legacy ASL compilation)
1952        Disassemble the resulting AML to ASL+ source code
1953        Compile the new ASL+ module
1954        Perform a binary compare on the legacy AML and the new ASL+ AML
1955    The ASLTS suite then executes normally using the AML binaries.
1956
1957----------------------------------------
195824 February 2017. Summary of changes for version 20170224:
1959
1960
19611) ACPICA kernel-resident subsystem:
1962
1963Interpreter: Fixed two issues with the control method return value auto-
1964repair feature, where an attempt to double-delete an internal object
1965could result in an ACPICA warning (for _CID repair and others). No fault
1966occurs, however, because the attempted deletion (actually a release to an
1967internal cache) is detected and ignored via object poisoning.
1968
1969Debugger: Fixed an AML interpreter mutex issue during the single stepping
1970of control methods. If certain debugger commands are executed during
1971stepping, a mutex acquire/release error could occur. Lv Zheng.
1972
1973Fixed some issues generating ACPICA with the Intel C compiler by
1974restoring the original behavior and compiler-specific include file in
1975acenv.h. Lv Zheng.
1976
1977Example Code and Data Size: These are the sizes for the OS-independent
1978acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1979debug version of the code includes the debug output trace mechanism and
1980has a much larger code and data size.
1981
1982  Current Release:
1983    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
1984    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
1985  Previous Release:
1986    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
1987    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
1988
1989
19902) iASL Compiler/Disassembler and Tools:
1991
1992iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
1993tool has been designed, implemented, and included in this release. The
1994key feature of this utility is that the original comments within the
1995input ASL file are preserved during the conversion process, and included
1996within the converted ASL+ file -- thus creating a transparent conversion
1997of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
1998
1999    Usage: iasl -ca <ASL-filename>  // Output is a .dsl file with
2000converted code
2001
2002iASL/Disassembler: Improved the detection and correct disassembly of
2003Switch/Case operators. This feature detects sequences of if/elseif/else
2004operators that originated from ASL Switch/Case/Default operators and
2005emits the original operators. David Box.
2006
2007iASL: Improved the IORT ACPI table support in the following areas. Lv
2008Zheng:
2009    Clear MappingOffset if the MappingCount is zero.
2010    Fix the disassembly of the SMMU GSU interrupt offset.
2011    Update the template file for the IORT table.
2012
2013Disassembler: Enhanced the detection and disassembly of resource
2014template/descriptor within a Buffer object. An EndTag descriptor is now
2015required to have a zero second byte, since all known ASL compilers emit
2016this. This helps eliminate incorrect decisions when a buffer is
2017disassembled (false positives on resource templates).
2018
2019----------------------------------------
202019 January 2017. Summary of changes for version 20170119:
2021
2022
20231) General ACPICA software:
2024
2025Entire source code base: Added the 2017 copyright to all source code
2026legal/licensing module headers and utility/tool signons. This includes
2027the standard Linux dual-license header. This affects virtually every file
2028in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
2029the ACPICA test suite.
2030
2031
20322) iASL Compiler/Disassembler and Tools:
2033
2034iASL: Removed/fixed an inadvertent remark when a method argument
2035containing a reference is used as a target operand within the method (and
2036never used as a simple argument), as in the example below. Jeffrey Hugo.
2037
2038    dsdt.asl   1507:    Store(0x1, Arg0)
2039    Remark   2146 -                ^ Method Argument is never used (Arg0)
2040
2041All tools: Removed the bit width of the compiler that generated the tool
2042from the common signon for all user space tools. This proved to be
2043confusing and unnecessary. This includes similar removal of HARDWARE_NAME
2044from the generic makefiles (Thomas Petazzoni). Example below.
2045
2046    Old:
2047    ASL+ Optimizing Compiler version 20170119-32
2048    ASL+ Optimizing Compiler version 20170119-64
2049
2050    New:
2051    ASL+ Optimizing Compiler version 20170119
2052
2053----------------------------------------
205422 December 2016. Summary of changes for version 20161222:
2055
2056
20571) ACPICA kernel-resident subsystem:
2058
2059AML Debugger: Implemented a new mechanism to simplify and enhance
2060debugger integration into all environments, including kernel debuggers
2061and user-space utilities, as well as remote debug services. This
2062mechanism essentially consists of new OSL interfaces to support debugger
2063initialization/termination, as well as wait/notify interfaces to perform
2064the debugger handshake with the host. Lv Zheng.
2065
2066    New OSL interfaces:
2067        AcpiOsInitializeDebugger (void)
2068        AcpiOsTerminateDebugger (void)
2069        AcpiOsWaitCommandReady (void)
2070        AcpiOsNotifyCommandComplete (void)
2071
2072    New OS services layer:
2073        osgendbg.c -- Example implementation, and used for AcpiExec
2074
2075Update for Generic Address Space (GAS) support: Although the AccessWidth
2076and/or BitOffset fields of the GAS are not often used, this change now
2077fully supports these fields. This affects the internal support for FADT
2078registers, registers in other ACPI data tables, and the AcpiRead and
2079AcpiWrite public interfaces. Lv Zheng.
2080
2081Sleep support: In order to simplify integration of ACPI sleep for the
2082various host operating systems, a new OSL interface has been introduced.
2083AcpiOsEnterSleep allows the host to perform any required operations
2084before the final write to the sleep control register(s) is performed by
2085ACPICA. Lv Zheng.
2086
2087    New OSL interface:
2088        AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
2089
2090    Called from these internal interfaces:
2091        AcpiHwLegacySleep
2092        AcpiHwExtendedSleep
2093
2094EFI support: Added a very small EFI/ACPICA example application. Provides
2095a simple demo for EFI integration, as well as assisting with resolution
2096of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
2097
2098    source/tools/efihello/efihello.c
2099
2100Local C library: Implemented several new functions to enhance ACPICA
2101portability, for environments where these clib functions are not
2102available (such as EFI). Lv Zheng:
2103    putchar
2104    getchar
2105    strpbrk
2106    strtok
2107    memmove
2108
2109Fixed a regression where occasionally a valid resource descriptor was
2110incorrectly detected as invalid at runtime, and a
2111AE_AML_NO_RESOURCE_END_TAG was returned.
2112
2113Fixed a problem with the recently implemented support that enables
2114control method invocations as Target operands to many ASL operators.
2115Warnings of this form: "Needed type [Reference], found [Processor]" were
2116seen at runtime for some method invocations.
2117
2118Example Code and Data Size: These are the sizes for the OS-independent
2119acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2120debug version of the code includes the debug output trace mechanism and
2121has a much larger code and data size.
2122
2123  Current Release:
2124    Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
2125    Debug Version:     201.7K Code, 82.7K Data, 284.4K Total
2126  Previous Release:
2127    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
2128    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
2129
2130
21312) iASL Compiler/Disassembler and Tools:
2132
2133Disassembler: Enhanced output by adding the capability to detect and
2134disassemble ASL Switch/Case statements back to the original ASL source
2135code instead of if/else blocks. David Box.
2136
2137AcpiHelp: Split a large file into separate files based upon
2138functionality/purpose. New files are:
2139    ahaml.c
2140    ahasl.c
2141
2142----------------------------------------
214317 November 2016. Summary of changes for version 20161117:
2144
2145
21461) ACPICA kernel-resident subsystem:
2147
2148Table Manager: Fixed a regression introduced in 20160729, "FADT support
2149cleanup". This was an attempt to remove all references in the source to
2150the FADT version 2, which never was a legal version number. It was
2151skipped because it was an early version of 64-bit support that was
2152eventually abandoned for the current 64-bit support.
2153
2154Interpreter: Fixed a problem where runtime implicit conversion was
2155incorrectly disabled for the ASL operators below. This brings the
2156behavior into compliance with the ACPI specification:
2157    FromBCD
2158    ToBCD
2159    ToDecimalString
2160    ToHexString
2161    ToInteger
2162    ToBuffer
2163
2164Table Manager: Added a new public interface, AcpiPutTable, used to
2165release and free an ACPI table returned by AcpiGetTable and related
2166interfaces. Lv Zheng.
2167
2168Example Code and Data Size: These are the sizes for the OS-independent
2169acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2170debug version of the code includes the debug output trace mechanism and
2171has a much larger code and data size.
2172
2173  Current Release:
2174    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
2175    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
2176  Previous Release:
2177    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
2178    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
2179
2180
21812) iASL Compiler/Disassembler and Tools:
2182
2183Disassembler: Fixed a regression for disassembly of Resource Template.
2184Detection of templates in the AML stream missed some types of templates.
2185
2186iASL: Fixed a problem where an Access Size error was returned for the PCC
2187address space when the AccessSize of the GAS register is greater than a
2188DWORD. Hoan Tran.
2189
2190iASL: Implemented several grammar changes for the operators below. These
2191changes are slated for the next version of the ACPI specification:
2192    RefOf        - Disallow method invocation as an operand
2193    CondRefOf    - Disallow method invocation as an operand
2194    DerefOf      - Disallow operands that use the result from operators
2195that
2196                   do not return a reference (Changed TermArg to
2197SuperName).
2198
2199iASL: Control method invocations are now allowed for Target operands, as
2200per the ACPI specification. Removed error for using a control method
2201invocation as a Target operand.
2202
2203Disassembler: Improved detection of Resource Templates, Unicode, and
2204Strings within Buffer objects. These subtypes do not contain a specific
2205opcode to indicate the originating ASL code, and they must be detected by
2206other means within the disassembler.
2207
2208iASL: Implemented an optimization improvement for 32-bit ACPI tables
2209(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
2210only after 64-bit to 32-bit truncation. A truncation warning message is
2211still emitted, however.
2212
2213AcpiXtract: Implemented handling for both types of line terminators (LF
2214or CR/LF) so that it can accept AcpiDump output files from any system.
2215Peter Wu.
2216
2217AcpiBin: Added two new options for comparing AML files:
2218    -a: compare and display ALL mismatches
2219    -o: start compare at this offset into the second file
2220
2221----------------------------------------
222230 September 2016. Summary of changes for version 20160930:
2223
2224
22251) ACPICA kernel-resident subsystem:
2226
2227Fixed a regression in the internal AcpiTbFindTable function where a non
2228AE_OK exception could inadvertently be returned even if the function did
2229not fail. This problem affects the following operators:
2230    DataTableRegion
2231    LoadTable
2232
2233Fixed a regression in the LoadTable operator where a load to any
2234namespace location other than the root no longer worked properly.
2235
2236Increased the maximum loop count value that will result in the
2237AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
2238prevent infinite loops within the AML interpreter and thus the host OS
2239kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
22401,048,575).
2241
2242Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
2243acpixf.h file. This allows hosts to easily configure the maximum loop
2244count at runtime.
2245
2246Removed an illegal character in the strtoul64.c file. This character
2247caused errors with some C compilers.
2248
2249Example Code and Data Size: These are the sizes for the OS-independent
2250acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2251debug version of the code includes the debug output trace mechanism and
2252has a much larger code and data size.
2253
2254  Current Release:
2255    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
2256    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
2257  Previous Release:
2258    Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
2259    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
2260
2261
22622) iASL Compiler/Disassembler and Tools:
2263
2264Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
2265the simpler ASL ElseIf keyword. During the conversion, a trailing If
2266block could be lost and missing from the disassembled output.
2267
2268iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
2269the missing rule caused a parse error when using the Index operator as an
2270operand to ObjectType. This construct now compiles properly. Example:
2271    ObjectType(PKG1[4]).
2272
2273iASL: Correctly handle unresolved symbols in the hardware map file (-lm
2274option). Previously, unresolved symbols could cause a protection fault.
2275Such symbols are now marked as unresolved in the map file.
2276
2277iASL: Implemented support to allow control method invocations as an
2278operand to the ASL DeRefOf operator. Example:
2279    DeRefOf(MTH1(Local0))
2280
2281Disassembler: Improved support for the ToPLD ASL macro. Detection of a
2282possible _PLD buffer now includes examination of both the normal buffer
2283length (16 or 20) as well as the surrounding AML package length.
2284
2285Disassembler: Fixed a problem with the decoding of complex expressions
2286within the Divide operator for ASL+. For the case where both the quotient
2287and remainder targets are specified, the entire statement cannot be
2288disassembled. Previously, the output incorrectly contained a mix of ASL-
2289and ASL+ operators. This mixed statement causes a syntax error when
2290compiled. Example:
2291    Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly
2292disassembled to:
2293    Divide (INT1 + 6, 128, RSLT, QUOT)
2294
2295iASL/Tools: Added support to process AML and non-AML ACPI tables
2296consistently. For the disassembler and AcpiExec, allow all types of ACPI
2297tables (AML and data tables). For the iASL -e option, allow only AML
2298tables (DSDT/SSDT).
2299
2300----------------------------------------
230131 August 2016. Summary of changes for version 20160831:
2302
2303
23041) ACPICA kernel-resident subsystem:
2305
2306Improve support for the so-called "module-level code", which is defined
2307to be math, logical and control AML opcodes that appear outside of any
2308control method. This change improves the support by adding more opcodes
2309that can be executed in the manner. Some other issues have been solved,
2310and the ASL grammar changes to support such code under all scope
2311operators (Device, etc.) are complete. Lv Zheng.
2312
2313UEFI support: these OSL functions have been implemented. This is an
2314additional step toward supporting the AcpiExec utility natively (with
2315full hardware access) under UEFI. Marcelo Ferreira.
2316    AcpiOsReadPciConfiguration
2317    AcpiOsWritePciConfiguration
2318
2319Fixed a possible mutex error during control method auto-serialization. Lv
2320Zheng.
2321
2322Updated support for the Generic Address Structure by fully implementing
2323all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
2324Zheng.
2325
2326Updated the return value for the internal _OSI method. Instead of
23270xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
2328for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
2329implementations, and will be reflected and clarified in the next version
2330of the ACPI specification.
2331
2332Implemented two new table events that can be passed to an ACPICA table
2333handler. These events are used to indicate a table installation or
2334uninstallation. These events are used in addition to existed table load
2335and unload events. Lv Zheng.
2336
2337Implemented a cleanup for all internal string-to-integer conversions.
2338Consolidate multiple versions of this functionality and limit possible
2339bases to either 10 or 16 to simplify the code. Adds a new file,
2340utstrtoul64.
2341
2342Cleanup the inclusion order of the various compiler-specific headers.
2343This simplifies build configuration management. The compiler-specific
2344headers are now split out from the host-specific headers. Lv Zheng.
2345
2346Example Code and Data Size: These are the sizes for the OS-independent
2347acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2348debug version of the code includes the debug output trace mechanism and
2349has a much larger code and data size.
2350
2351  Current Release:
2352    Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
2353    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
2354
2355
23562) iASL Compiler/Disassembler and Tools:
2357
2358iASL/AcpiExec: Added a command line option to display the build date/time
2359of the tool (-vd). This can be useful to verify that the correct version
2360of the tools are being used.
2361
2362AML Debugger: Implemented a new subcommand ("execute predef") to execute
2363all predefined control methods and names within the current namespace.
2364This can be useful for debugging problems with ACPI tables and the ACPI
2365namespace.
2366
2367----------------------------------------
236829 July 2016. Summary of changes for version 20160729:
2369
2370
23711) ACPICA kernel-resident subsystem:
2372
2373Implemented basic UEFI support for the various ACPICA tools. This
2374includes:
23751) An OSL to implement the various AcpiOs* interfaces on UEFI.
23762) Support to obtain the ACPI tables on UEFI.
23773) Local implementation of required C library functions not available on
2378UEFI.
23794) A front-end (main) function for the tools for UEFI-related
2380initialization.
2381
2382The initial deployment of this support is the AcpiDump utility executing
2383as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
2384Current environments supported are Linux/Unix. MSVC generation is not
2385supported at this time. See the generate/efi/README file for build
2386instructions. Lv Zheng.
2387
2388Future plans include porting the AcpiExec utility to execute natively on
2389the platform with I/O and memory access. This will allow viewing/dump of
2390the platform namespace and native execution of ACPI control methods that
2391access the actual hardware. To fully implement this support, the OSL
2392functions below must be implemented with UEFI interfaces. Any community
2393help in the implementation of these functions would be appreciated:
2394    AcpiOsReadPort
2395    AcpiOsWritePort
2396    AcpiOsReadMemory
2397    AcpiOsWriteMemory
2398    AcpiOsReadPciConfiguration
2399    AcpiOsWritePciConfiguration
2400
2401Restructured and standardized the C library configuration for ACPICA,
2402resulting in the various configuration options below. This includes a
2403global restructuring of the compiler-dependent and platform-dependent
2404include files. These changes may affect the existing platform-dependent
2405configuration files on some hosts. Lv Zheng.
2406
2407The current C library configuration options appear below. For any issues,
2408it may be helpful to examine the existing compiler-dependent and
2409platform-dependent files as examples. Lv Zheng.
2410
24111) Linux kernel:
2412    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2413library.
2414    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
24152) Unix/Windows/BSD applications:
2416    ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
2417library.
2418    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
24193) UEFI applications:
2420    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2421library.
2422    ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
24234) UEFI applications (EDK2/StdLib):
2424    ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
2425    ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
2426
2427
2428AML interpreter: "module-level code" support. Allows for execution of so-
2429called "executable" AML code (math/logical operations, etc.) outside of
2430control methods not just at the module level (top level) but also within
2431any scope declared outside of a control method - Scope{}, Device{},
2432Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
2433
2434Simplified the configuration of the "maximum AML loops" global option by
2435adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
2436modified at runtime.
2437
2438
2439Example Code and Data Size: These are the sizes for the OS-independent
2440acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2441debug version of the code includes the debug output trace mechanism and
2442has a much larger code and data size.
2443
2444  Current Release:
2445    Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
2446    Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
2447
2448
24492) iASL Compiler/Disassembler and Tools:
2450
2451iASL: Add full support for the RASF ACPI table (RAS Features Table).
2452Includes disassembler, data table compiler, and header support.
2453
2454iASL Expand "module-level code" support. Allows for
2455compilation/disassembly of so-called "executable" AML code (math/logical
2456operations, etc.) outside of control methods not just at the module level
2457(top level) but also within any scope declared outside of a control
2458method - Scope{}, Device{}, Processor{}, PowerResource{}, and
2459ThermalZone{}.
2460
2461AcpiDump: Added support for dumping all SSDTs on newer versions of
2462Windows. These tables are now easily available -- SSDTs are not available
2463through the registry on older versions.
2464
2465----------------------------------------
246627 May 2016. Summary of changes for version 20160527:
2467
2468
24691) ACPICA kernel-resident subsystem:
2470
2471Temporarily reverted the new arbitrary bit length/alignment support in
2472AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
2473a number of regressions with the new code that need to be fully resolved
2474and tested before this support can be finally integrated into ACPICA.
2475Apologies for any inconveniences these issues may have caused.
2476
2477The ACPI message macros are not configurable (ACPI_MSG_ERROR,
2478ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
2479and ACPI_MSG_BIOS_WARNING). Lv Zheng.
2480
2481Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
2482option. Adds a new return macro, return_STR. Junk-uk Kim.
2483
2484Example Code and Data Size: These are the sizes for the OS-independent
2485acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2486debug version of the code includes the debug output trace mechanism and
2487has a much larger code and data size.
2488
2489  Current Release:
2490    Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
2491    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2492  Previous Release:
2493    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2494    Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
2495
2496----------------------------------------
249722 April 2016. Summary of changes for version 20160422:
2498
24991) ACPICA kernel-resident subsystem:
2500
2501Fixed a regression in the GAS (generic address structure) arbitrary bit
2502support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
2503and incorrect return values. Lv Zheng. ACPICA BZ 1270.
2504
2505ACPI 6.0: Added support for new/renamed resource macros. One new argument
2506was added to each of these macros, and the original name has been
2507deprecated. The AML disassembler will always disassemble to the new
2508names. Support for the new macros was added to iASL, disassembler,
2509resource manager, and the acpihelp utility. ACPICA BZ 1274.
2510
2511    I2cSerialBus  -> I2cSerialBusV2
2512    SpiSerialBus  -> SpiSerialBusV2
2513    UartSerialBus -> UartSerialBusV2
2514
2515ACPI 6.0: Added support for a new integer field that was appended to the
2516package object returned by the _BIX method. This adds iASL compile-time
2517and AML runtime error checking. ACPICA BZ 1273.
2518
2519ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
2520Subspace Type2" (Headers, Disassembler, and data table compiler).
2521
2522Example Code and Data Size: These are the sizes for the OS-independent
2523acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2524debug version of the code includes the debug output trace mechanism and
2525has a much larger code and data size.
2526
2527  Current Release:
2528    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2529    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2530  Previous Release:
2531    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2532    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2533
2534
25352) iASL Compiler/Disassembler and Tools:
2536
2537iASL: Implemented an ASL grammar extension to allow/enable executable
2538"module-level code" to be created and executed under the various
2539operators that create new scopes. This type of AML code is already
2540supported in all known AML interpreters, and the grammar change will
2541appear in the next version of the ACPI specification. Simplifies the
2542conditional runtime creation of named objects under these object types:
2543
2544    Device
2545    PowerResource
2546    Processor
2547    Scope
2548    ThermalZone
2549
2550iASL: Implemented a new ASL extension, a "For" loop macro to add greater
2551ease-of-use to the ASL language. The syntax is similar to the
2552corresponding C operator, and is implemented with the existing AML While
2553opcode -- thus requiring no changes to existing AML interpreters.
2554
2555    For (Initialize, Predicate, Update) {TermList}
2556
2557Grammar:
2558    ForTerm :=
2559        For (
2560            Initializer    // Nothing | TermArg => ComputationalData
2561            Predicate      // Nothing | TermArg => ComputationalData
2562            Update         // Nothing | TermArg => ComputationalData
2563        ) {TermList}
2564
2565
2566iASL: The _HID/_ADR detection and validation has been enhanced to search
2567under conditionals in order to allow these objects to be conditionally
2568created at runtime.
2569
2570iASL: Fixed several issues with the constant folding feature. The
2571improvement allows better detection and resolution of statements that can
2572be folded at compile time. ACPICA BZ 1266.
2573
2574iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
2575conversion to the ASL ElseIf operator where incorrect ASL code could be
2576generated.
2577
2578iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
2579sometimes an extra (and extraneous) set of parentheses were emitted for
2580some combinations of operators. Although this did not cause any problems
2581with recompilation of the disassembled code, it made the code more
2582difficult to read. David Box. ACPICA BZ 1231.
2583
2584iASL: Changed to ignore the unreferenced detection for predefined names
2585of resource descriptor elements, when the resource descriptor is
2586created/defined within a control method.
2587
2588iASL: Disassembler: Fix a possible fault with externally declared Buffer
2589objects.
2590
2591----------------------------------------
259218 March 2016. Summary of changes for version 20160318:
2593
25941) ACPICA kernel-resident subsystem:
2595
2596Added support for arbitrary bit lengths and bit offsets for registers
2597defined by the Generic Address Structure. Previously, only aligned bit
2598lengths of 8/16/32/64 were supported. This was sufficient for many years,
2599but recently some machines have been seen that require arbitrary bit-
2600level support. ACPICA BZ 1240. Lv Zheng.
2601
2602Fixed an issue where the \_SB._INI method sometimes must be evaluated
2603before any _REG methods are evaluated. Lv Zheng.
2604
2605Implemented several changes related to ACPI table support
2606(Headers/Disassembler/TableCompiler):
2607NFIT: For ACPI 6.1, updated to add some additional new fields and
2608constants.
2609FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
26106).
2611DMAR: Added new constants per the 10/2014 DMAR spec.
2612IORT: Added new subtable per the 10/2015 IORT spec.
2613HEST: For ACPI 6.1, added new constants and new subtable.
2614DBG2: Added new constants per the 12/2015 DBG2 spec.
2615FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
2616ACPICA BZ 1249.
2617ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
2618
2619Updated header support for the DMAR table to match the current version of
2620the related spec.
2621
2622Added extensions to the ASL Concatenate operator to allow any ACPI object
2623to be passed as an operand. Any object other than Integer/String/Buffer
2624simply returns a string containing the object type. This extends the
2625usefulness of the Printf macros. Previously, Concatenate would abort the
2626control method if a non-data object was encountered.
2627
2628ACPICA source code: Deployed the C "const" keyword across the source code
2629where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
2630
2631Example Code and Data Size: These are the sizes for the OS-independent
2632acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2633debug version of the code includes the debug output trace mechanism and
2634has a much larger code and data size.
2635
2636  Current Release:
2637    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2638    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2639  Previous Release:
2640    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2641    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
2642
2643
26442) iASL Compiler/Disassembler and Tools:
2645
2646iASL/Disassembler: Improved the heuristic used to determine the number of
2647arguments for an externally defined control method (a method in another
2648table). Although this is an improvement, there is no deterministic way to
2649"guess" the number of method arguments. Only the ACPI 6.0 External opcode
2650will completely solve this problem as it is deployed (automatically) in
2651newer BIOS code.
2652
2653iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
2654statements that could cause errors when the disassembled file is
2655compiled. ACPICA BZ 1243. David Box.
2656
2657iASL: Fixed a regression caused by the merger of the two versions of the
2658local strtoul64. Because of a dependency on a global variable, strtoul64
2659could return an error for integers greater than a 32-bit value. ACPICA BZ
26601260.
2661
2662iASL: Fixed a regression where a fault could occur for an ASL Return
2663statement if it invokes a control method that is not resolved. ACPICA BZ
26641264.
2665
2666AcpiXtract: Improved input file validation: detection of binary files and
2667non-acpidump text files.
2668
2669----------------------------------------
267012 February 2016. Summary of changes for version 20160212:
2671
26721) ACPICA kernel-resident subsystem:
2673
2674Implemented full support for the ACPI 6.1 specification (released in
2675January). This version of the specification is available at:
2676http://www.uefi.org/specifications
2677
2678Only a relatively small number of changes were required in ACPICA to
2679support ACPI 6.1, in these areas:
2680- New predefined names
2681- New _HID values
2682- A new subtable for HEST
2683- A few other header changes for new values
2684
2685Ensure \_SB_._INI is executed before any _REG methods are executed. There
2686appears to be existing BIOS code that relies on this behavior. Lv Zheng.
2687
2688Reverted a change made in version 20151218 which enabled method
2689invocations to be targets of various ASL operators (SuperName and Target
2690grammar elements). While the new behavior is supported by the ACPI
2691specification, other AML interpreters do not support this behavior and
2692never will. The ACPI specification will be updated for ACPI 6.2 to remove
2693this support. Therefore, the change was reverted to the original ACPICA
2694behavior.
2695
2696ACPICA now supports the GCC 6 compiler.
2697
2698Current Release: (Note: build changes increased sizes)
2699    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2700    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
2701Previous Release:
2702    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2703    Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
2704
2705
27062) iASL Compiler/Disassembler and Tools:
2707
2708Completed full support for the ACPI 6.0 External() AML opcode. The
2709compiler emits an external AML opcode for each ASL External statement.
2710This opcode is used by the disassembler to assist with the disassembly of
2711external control methods by specifying the required number of arguments
2712for the method. AML interpreters do not use this opcode. To ensure that
2713interpreters do not even see the opcode, a block of one or more external
2714opcodes is surrounded by an "If(0)" construct. As this feature becomes
2715commonly deployed in BIOS code, the ability of disassemblers to correctly
2716disassemble AML code will be greatly improved. David Box.
2717
2718iASL: Implemented support for an optional cross-reference output file.
2719The -lx option will create a the cross-reference file with the suffix
2720"xrf". Three different types of cross-reference are created in this file:
2721- List of object references made from within each control method
2722- Invocation (caller) list for each user-defined control method
2723- List of references to each non-method object in the namespace
2724
2725iASL: Method invocations as ASL Target operands are now disallowed and
2726flagged as errors in preparation for ACPI 6.2 (see the description of the
2727problem above).
2728
2729----------------------------------------
27308 January 2016. Summary of changes for version 20160108:
2731
27321) ACPICA kernel-resident subsystem:
2733
2734Updated all ACPICA copyrights and signons to 2016: Added the 2016
2735copyright to all source code module headers and utility/tool signons.
2736This includes the standard Linux dual-license header. This affects
2737virtually every file in the ACPICA core subsystem, iASL compiler, all
2738ACPICA utilities, and the ACPICA test suite.
2739
2740Fixed a regression introduced in version 20151218 concerning the
2741execution of so-called module-level ASL/AML code. Namespace objects
2742created under a module-level If() construct were not properly/fully
2743entered into the namespace and could cause an interpreter fault when
2744accessed.
2745
2746Example Code and Data Size: These are the sizes for the OS-independent
2747acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2748debug version of the code includes the debug output trace mechanism and
2749has a much larger code and data size.
2750
2751Current Release:
2752    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2753    Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
2754  Previous Release:
2755    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2756    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
2757
2758
27592) iASL Compiler/Disassembler and Tools:
2760
2761Fixed a problem with the compilation of the GpioIo and GpioInt resource
2762descriptors. The _PIN field name was incorrectly defined to be an array
2763of 32-bit values, but the _PIN values are in fact 16 bits each. This
2764would cause incorrect bit width warnings when using Word (16-bit) fields
2765to access the descriptors.
2766
2767
2768----------------------------------------
276918 December 2015. Summary of changes for version 20151218:
2770
27711) ACPICA kernel-resident subsystem:
2772
2773Implemented per-AML-table execution of "module-level code" as individual
2774ACPI tables are loaded into the namespace during ACPICA initialization.
2775In other words, any module-level code within an AML table is executed
2776immediately after the table is loaded, instead of batched and executed
2777after all of the tables have been loaded. This provides compatibility
2778with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
2779David Box.
2780
2781To fully support the feature above, the default operation region handlers
2782for the SystemMemory, SystemIO, and PCI_Config address spaces are now
2783installed before any ACPI tables are loaded. This enables module-level
2784code to access these address spaces during the table load and module-
2785level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
2786Box.
2787
2788Implemented several changes to the internal _REG support in conjunction
2789with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
2790utilities for the changes above. Although these tools were changed, host
2791operating systems that simply use the default handlers for SystemMemory,
2792SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
2793
2794For example, in the code below, DEV1 is conditionally added to the
2795namespace by the DSDT via module-level code that accesses an operation
2796region. The SSDT references DEV1 via the Scope operator. DEV1 must be
2797created immediately after the DSDT is loaded in order for the SSDT to
2798successfully reference DEV1. Previously, this code would cause an
2799AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
2800fully supported by ACPICA.
2801
2802    DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
2803    {
2804        OperationRegion (OPR1, SystemMemory, 0x400, 32)
2805        Field (OPR1, AnyAcc, NoLock, Preserve)
2806        {
2807            FLD1, 1
2808        }
2809        If (FLD1)
2810        {
2811            Device (\DEV1)
2812            {
2813            }
2814        }
2815    }
2816    DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
2817    {
2818        External (\DEV1, DeviceObj)
2819        Scope (\DEV1)
2820        {
2821        }
2822    }
2823
2824Fixed an AML interpreter problem where control method invocations were
2825not handled correctly when the invocation was itself a SuperName argument
2826to another ASL operator. In these cases, the method was not invoked.
2827ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
2828argument:
2829    Store
2830    Acquire, Wait
2831    CondRefOf, RefOf
2832    Decrement, Increment
2833    Load, Unload
2834    Notify
2835    Signal, Release, Reset
2836    SizeOf
2837
2838Implemented automatic String-to-ObjectReference conversion support for
2839packages returned by predefined names (such as _DEP). A common BIOS error
2840is to add double quotes around an ObjectReference namepath, which turns
2841the reference into an unexpected string object. This support detects the
2842problem and corrects it before the package is returned to the caller that
2843invoked the method. Lv Zheng.
2844
2845Implemented extensions to the Concatenate operator. Concatenate now
2846accepts any type of object, it is not restricted to simply
2847Integer/String/Buffer. For objects other than these 3 basic data types,
2848the argument is treated as a string containing the name of the object
2849type. This expands the utility of Concatenate and the Printf/Fprintf
2850macros. ACPICA BZ 1222.
2851
2852Cleaned up the output of the ASL Debug object. The timer() value is now
2853optional and no longer emitted by default. Also, the basic data types of
2854Integer/String/Buffer are simply emitted as their values, without a data
2855type string -- since the data type is obvious from the output. ACPICA BZ
28561221.
2857
2858Example Code and Data Size: These are the sizes for the OS-independent
2859acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2860debug version of the code includes the debug output trace mechanism and
2861has a much larger code and data size.
2862
2863  Current Release:
2864    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2865    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
2866  Previous Release:
2867    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
2868    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
2869
2870
28712) iASL Compiler/Disassembler and Tools:
2872
2873iASL: Fixed some issues with the ASL Include() operator. This operator
2874was incorrectly defined in the iASL parser rules, causing a new scope to
2875be opened for the code within the include file. This could lead to
2876several issues, including allowing ASL code that is technically illegal
2877and not supported by AML interpreters. Note, this does not affect the
2878related #include preprocessor operator. ACPICA BZ 1212.
2879
2880iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
2881operator is essentially an ASL macro since there is no AML opcode
2882associated with it. The code emitted by the iASL compiler for ElseIf is
2883an Else opcode followed immediately by an If opcode. The disassembler
2884will now emit an ElseIf if it finds an Else immediately followed by an
2885If. This simplifies the decoded ASL, especially for deeply nested
2886If..Else and large Switch constructs. Thus, the disassembled code more
2887closely follows the original source ASL. ACPICA BZ 1211. Example:
2888
2889    Old disassembly:
2890        Else
2891        {
2892            If (Arg0 == 0x02)
2893            {
2894                Local0 = 0x05
2895            }
2896        }
2897
2898    New disassembly:
2899        ElseIf (Arg0 == 0x02)
2900        {
2901            Local0 = 0x05
2902        }
2903
2904AcpiExec: Added support for the new module level code behavior and the
2905early region installation. This required a small change to the
2906initialization, since AcpiExec must install its own operation region
2907handlers.
2908
2909AcpiExec: Added support to make the debug object timer optional. Default
2910is timer disabled. This cleans up the debug object output -- the timer
2911data is rarely used.
2912
2913AcpiExec: Multiple ACPI tables are now loaded in the order that they
2914appear on the command line. This can be important when there are
2915interdependencies/references between the tables.
2916
2917iASL/Templates. Add support to generate template files with multiple
2918SSDTs within a single output file. Also added ommand line support to
2919specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
29201223, 1225.
2921
2922
2923----------------------------------------
292424 November 2015. Summary of changes for version 20151124:
2925
29261) ACPICA kernel-resident subsystem:
2927
2928Fixed a possible regression for a previous update to FADT handling. The
2929FADT no longer has a fixed table ID, causing some issues with code that
2930was hardwired to a specific ID. Lv Zheng.
2931
2932Fixed a problem where the method auto-serialization could interfere with
2933the current SyncLevel. This change makes the auto-serialization support
2934transparent to the SyncLevel support and management.
2935
2936Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
2937interface is intended for early access to the namespace during the
2938initial namespace device discovery walk. The _SUB method has been seen to
2939access operation regions in some cases, causing errors because the
2940operation regions are not fully initialized.
2941
2942AML Debugger: Fixed some issues with the terminate/quit/exit commands
2943that can cause faults. Lv Zheng.
2944
2945AML Debugger: Add thread ID support so that single-step mode only applies
2946to the AML Debugger thread. This prevents runtime errors within some
2947kernels. Lv Zheng.
2948
2949Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
2950methods that are invoked by this interface are optional, removed warnings
2951emitted for the case where one or more of these methods do not exist.
2952ACPICA BZ 1208, original change by Prarit Bhargava.
2953
2954Made a major pass through the entire ACPICA source code base to
2955standardize formatting that has diverged a bit over time. There are no
2956functional changes, but this will of course cause quite a few code
2957differences from the previous ACPICA release.
2958
2959Example Code and Data Size: These are the sizes for the OS-independent
2960acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2961debug version of the code includes the debug output trace mechanism and
2962has a much larger code and data size.
2963
2964  Current Release:
2965    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
2966    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
2967  Previous Release:
2968    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2969    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
2970
2971
29722) iASL Compiler/Disassembler and Tools:
2973
2974iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
2975definition blocks within a single ASL file and the resulting AML file.
2976Support for this type of file was also added to the various tools that
2977use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
2978example code below shows two definition blocks within the same file:
2979
2980    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
29810x12345678)
2982    {
2983    }
2984    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
2985    {
2986    }
2987
2988iASL: Enhanced typechecking for the Name() operator. All expressions for
2989the value of the named object must be reduced/folded to a single constant
2990at compile time, as per the ACPI specification (the AML definition of
2991Name()).
2992
2993iASL: Fixed some code indentation issues for the -ic and -ia options (C
2994and assembly headers). Now all emitted code correctly begins in column 1.
2995
2996iASL: Added an error message for an attempt to open a Scope() on an
2997object defined in an SSDT. The DSDT is always loaded into the namespace
2998first, so any attempt to open a Scope on an SSDT object will fail at
2999runtime.
3000
3001
3002----------------------------------------
300330 September 2015. Summary of changes for version 20150930:
3004
30051) ACPICA kernel-resident subsystem:
3006
3007Debugger: Implemented several changes and bug fixes to assist support for
3008the in-kernel version of the AML debugger. Lv Zheng.
3009- Fix the "predefined" command for in-kernel debugger.
3010- Do not enter debug command loop for the help and version commands.
3011- Disallow "execute" command during execution/single-step of a method.
3012
3013Interpreter: Updated runtime typechecking for all operators that have
3014target operands. The operand is resolved and validated that it is legal.
3015For example, the target cannot be a non-data object such as a Device,
3016Mutex, ThermalZone, etc., as per the ACPI specification.
3017
3018Debugger: Fixed the double-mutex user I/O handshake to work when local
3019deadlock detection is enabled.
3020
3021Debugger: limited display of method locals and arguments (LocalX and
3022ArgX) to only those that have actually been initialized. This prevents
3023lines of extraneous output.
3024
3025Updated the definition of the NFIT table to correct the bit polarity of
3026one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
3027
3028Example Code and Data Size: These are the sizes for the OS-independent
3029acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3030debug version of the code includes the debug output trace mechanism and
3031has a much larger code and data size.
3032
3033  Current Release:
3034    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3035    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
3036  Previous Release:
3037    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
3038    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
3039
3040
30412) iASL Compiler/Disassembler and Tools:
3042
3043iASL: Improved the compile-time typechecking for operands of many of the
3044ASL operators:
3045
3046-- Added an option to disable compiler operand/operator typechecking (-
3047ot).
3048
3049-- For the following operators, the TermArg operands are now validated
3050when possible to be Integer data objects: BankField, OperationRegion,
3051DataTableRegion, Buffer, and Package.
3052
3053-- Store (Source, Target): Both the source and target operands are
3054resolved and checked that the operands are both legal. For example,
3055neither operand can be a non-data object such as a Device, Mutex,
3056ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
3057operator can be used to store an object to any type of target object.
3058
3059-- Store (Source, Target): If the source is a Package object, the target
3060must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
3061is a Package, the source must also be a Package.
3062
3063-- Store (Source, Target): A warning is issued if the source and target
3064resolve to the identical named object.
3065
3066-- Store (Source, <method invocation>): An error is generated for the
3067target method invocation, as this construct is not supported by the AML
3068interpreter.
3069
3070-- For all ASL math and logic operators, the target operand must be a
3071data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
3072includes the function return value also.
3073
3074-- External declarations are also included in the typechecking where
3075possible. External objects defined using the UnknownObj keyword cannot be
3076typechecked, however.
3077
3078iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
3079operator:
3080- Legacy code: Index(PKG1, 3)
3081- New ASL+ code: PKG1[3]
3082This completes the ACPI 6.0 ASL+ support as it was the only operator not
3083supported.
3084
3085iASL: Fixed the file suffix for the preprocessor output file (.i). Two
3086spaces were inadvertently appended to the filename, causing file access
3087and deletion problems on some systems.
3088
3089ASL Test Suite (ASLTS): Updated the master makefile to generate all
3090possible compiler output files when building the test suite -- thus
3091exercising these features of the compiler. These files are automatically
3092deleted when the test suite exits.
3093
3094
3095----------------------------------------
309618 August 2015. Summary of changes for version 20150818:
3097
30981) ACPICA kernel-resident subsystem:
3099
3100Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
3101Zheng. ACPICA BZ 1186.
3102
3103Completed development to ensure that the ACPICA Disassembler and Debugger
3104are fully standalone components of ACPICA. Removed cross-component
3105dependences. Lv Zheng.
3106
3107The max-number-of-AML-loops is now runtime configurable (previously was
3108compile-time only). This is essentially a loop timeout to force-abort
3109infinite AML loops. ACPCIA BZ 1192.
3110
3111Debugger: Cleanup output to dump ACPI names and namepaths without any
3112trailing underscores. Lv Zheng. ACPICA BZ 1135.
3113
3114Removed unnecessary conditional compilations across the Debugger and
3115Disassembler components where entire modules could be left uncompiled.
3116
3117The aapits test is deprecated and has been removed from the ACPICA git
3118tree. The test has never been completed and has not been maintained, thus
3119becoming rather useless. ACPICA BZ 1015, 794.
3120
3121A batch of small changes to close bugzilla and other reports:
3122- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
3123- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
3124- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
3125- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
3126Moore.
3127- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
3128ACPICA BZ 1184.
3129- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
3130operators.
3131- Debugger: Split debugger initialization/termination interfaces. Lv
3132Zheng.
3133- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
3134identification.
3135- AcpiExec: Add debug message during _REG method phase during table
3136load/init.
3137- AcpiNames: Fix a regression where some output was missing and no longer
3138emitted.
3139- Debugger: General cleanup and simplification. Lv Zheng.
3140- Disassembler: Cleanup use of several global option variables. Lv Zheng.
3141
3142Example Code and Data Size: These are the sizes for the OS-independent
3143acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3144debug version of the code includes the debug output trace mechanism and
3145has a much larger code and data size.
3146
3147  Current Release:
3148    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
3149    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
3150  Previous Release:
3151    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
3152    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
3153
3154
31552) iASL Compiler/Disassembler and Tools:
3156
3157AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
3158were not handled properly and caused load errors. Now, properly invoke
3159and use the ACPICA auto-reallocate mechanism for ACPI table data
3160structures. ACPICA BZ 1188
3161
3162AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
3163BZ 1190.
3164
3165AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
3166AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
3167executed during initialization. ACPICA BZ 1187, 1189.
3168
3169iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
3170that corresponds to each disassembled ASL statement, to simplify
3171debugging. ACPICA BZ 1191.
3172
3173Debugger: Add option to the "objects" command to display a summary of the
3174current namespace objects (Object type and count). This is displayed if
3175the command is entered with no arguments.
3176
3177AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
3178
3179
3180----------------------------------------
318117 July 2015. Summary of changes for version 20150717:
3182
31831) ACPICA kernel-resident subsystem:
3184
3185Improved the partitioning between the Debugger and Disassembler
3186components. This allows the Debugger to be used standalone within kernel
3187code without the Disassembler (which is used for single stepping also).
3188This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
3189
3190Debugger: Implemented a new command to trace the execution of control
3191methods (Trace). This is especially useful for the in-kernel version of
3192the debugger when file I/O may not be available for method trace output.
3193See the ACPICA reference for more information. Lv Zheng.
3194
3195Moved all C library prototypes (used for the local versions of these
3196functions when requested) to a new header, acclib.h
3197Cleaned up the use of non-ANSI C library functions. These functions are
3198implemented locally in ACPICA. Moved all such functions to a common
3199source file, utnonansi.c
3200
3201Debugger: Fixed a problem with the "!!" command (get last command
3202executed) where the debugger could enter an infinite loop and eventually
3203crash.
3204
3205Removed the use of local macros that were used for some of the standard C
3206library functions to automatically cast input parameters. This mostly
3207affected the is* functions where the input parameter is defined to be an
3208int. This required a few modifications to the main ACPICA source code to
3209provide casting for these functions and eliminate possible compiler
3210warnings for these parameters.
3211
3212Across the source code, added additional status/error checking to resolve
3213issues discovered by static source code analysis tools such as Coverity.
3214
3215Example Code and Data Size: These are the sizes for the OS-independent
3216acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3217debug version of the code includes the debug output trace mechanism and
3218has a much larger code and data size.
3219
3220  Current Release:
3221    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
3222    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
3223  Previous Release:
3224    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3225    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
3226
3227
32282) iASL Compiler/Disassembler and Tools:
3229
3230iASL: Fixed a regression where the device map file feature no longer
3231worked properly when used in conjunction with the disassembler. It only
3232worked properly with the compiler itself.
3233
3234iASL: Implemented a new warning for method LocalX variables that are set
3235but never used (similar to a C compiler such as gcc). This also applies
3236to ArgX variables that are not defined by the parent method, and are
3237instead (legally) used as local variables.
3238
3239iASL/Preprocessor: Finished the pass-through of line numbers from the
3240preprocessor to the compiler. This ensures that compiler errors/warnings
3241have the correct original line numbers and filenames, regardless of any
3242#include files.
3243
3244iASL/Preprocessor: Fixed a couple of issues with comment handling and the
3245pass-through of comments to the preprocessor output file (which becomes
3246the compiler input file). Also fixed a problem with // comments that
3247appear after a math expression.
3248
3249iASL: Added support for the TCPA server table to the table compiler and
3250template generator. (The client table was already previously supported)
3251
3252iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
3253identify the iASL compiler.
3254
3255Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
3256multiple times. The new names are ACPI_SIGN_NEGATIVE and
3257ACPI_SIGN_POSITIVE.
3258
3259AcpiHelp: Update to expand help messages for the iASL preprocessor
3260directives.
3261
3262
3263----------------------------------------
326419 June 2015. Summary of changes for version 20150619:
3265
3266Two regressions in version 20150616 have been addressed:
3267
3268Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
3269etc.) This update changes ACPICA to only use the standard headers for
3270functions, or the prototypes for the local versions of the C library
3271functions. Across the source code, this required some additional casts
3272for some Clib invocations for portability. Moved all local prototypes to
3273a new file, acclib.h
3274
3275Fixes several problems with recent changes to the handling of the FACS
3276table that could cause some systems not to boot.
3277
3278
3279----------------------------------------
328016 June 2015. Summary of changes for version 20150616:
3281
3282
32831) ACPICA kernel-resident subsystem:
3284
3285Across the entire ACPICA source code base, the various macros for the C
3286library functions (such as ACPI_STRLEN, etc.) have been removed and
3287replaced by the standard C library names (strlen, etc.) The original
3288purpose for these macros is no longer applicable. This simplification
3289reduces the number of macros used in the ACPICA source code
3290significantly, improving readability and maintainability.
3291
3292Implemented support for a new ACPI table, the OSDT. This table, the
3293"override" SDT, can be loaded directly by the host OS at boot time. It
3294enables the replacement of existing namespace objects that were installed
3295via the DSDT and/or SSDTs. The primary purpose for this is to replace
3296buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
3297for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
3298Moore.
3299
3300Added support for systems with (improperly) two FACS tables -- a "32-bit"
3301table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
3302X field). This change will support both automatically. There continues to
3303be systems found with this issue. This support requires a change to the
3304AcpiSetFirmwareWakingVector interface. Also, a public global variable has
3305been added to allow the host to select which FACS is desired
3306(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
3307details Lv Zheng.
3308
3309Added a new feature to allow for systems that do not contain an FACS.
3310Although this is already supported on hardware-reduced platforms, the
3311feature has been extended for all platforms. The reasoning is that we do
3312not want to abort the entire ACPICA initialization just because the
3313system is seriously buggy and has no FACS.
3314
3315Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
3316not correctly transcribed from the ACPI specification in ACPICA version
331720150515.
3318
3319Implemented support for the _CLS object in the AcpiGetObjectInfo external
3320interface.
3321
3322Updated the definitions of the TCPA and TPM2 ACPI tables to the more
3323recent TCG ACPI Specification, December 14, 2014. Table disassembler and
3324compiler also updated. Note: The TCPA "server" table is not supported by
3325the disassembler/table-compiler at this time.
3326
3327ACPI 6.0: Added definitions for the new GIC version field in the MADT.
3328
3329Example Code and Data Size: These are the sizes for the OS-independent
3330acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3331debug version of the code includes the debug output trace mechanism and
3332has a much larger code and data size.
3333
3334  Current Release:
3335    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3336    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
3337  Previous Release:
3338    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
3339    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
3340
3341
33422) iASL Compiler/Disassembler and Tools:
3343
3344Disassembler: Fixed a problem with the new symbolic operator disassembler
3345where incorrect ASL code could be emitted in some cases for the "non-
3346commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
3347ShiftRight. The actual problem cases seem to be rather unusual in common
3348ASL code, however. David Box.
3349
3350Modified the linux version of acpidump to obtain ACPI tables from not
3351just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
3352Zheng.
3353
3354iASL: Fixed a problem where the user preprocessor output file (.i)
3355contained extra data that was not expected. The compiler was using this
3356file as a temporary file and passed through #line directives in order to
3357keep compiler error messages in sync with the input file and line number
3358across multiple include files. The (.i) is no longer a temporary file as
3359the compiler uses a new, different file for the original purpose.
3360
3361iASL: Fixed a problem where comments within the original ASL source code
3362file were not passed through to the preprocessor output file, nor any
3363listing files.
3364
3365iASL: Fixed some issues for the handling of the "#include" preprocessor
3366directive and the similar (but not the same) "Include" ASL operator.
3367
3368iASL: Add support for the new OSDT in both the disassembler and compiler.
3369
3370iASL: Fixed a problem with the constant folding support where a Buffer
3371object could be incorrectly generated (incorrectly formed) during a
3372conversion to a Store() operator.
3373
3374AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
3375description text for the _REV predefined name. _REV now permanently
3376returns 2, as per the ACPI 6.0 specification.
3377
3378Debugger: Enhanced the output of the Debug ASL object for references
3379produced by the Index operator. For Buffers and strings, only output the
3380actual byte pointed to by the index. For packages, only print the single
3381package element decoded by the index. Previously, the entire
3382buffer/string/package was emitted.
3383
3384iASL/Table-compiler: Fixed a regression where the "generic" data types
3385were no longer recognized, causing errors.
3386
3387
3388----------------------------------------
338915 May 2015. Summary of changes for version 20150515:
3390
3391This release implements most of ACPI 6.0 as described below.
3392
33931) ACPICA kernel-resident subsystem:
3394
3395Implemented runtime argument checking and return value checking for all
3396new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
3397_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
3398
3399Example Code and Data Size: These are the sizes for the OS-independent
3400acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3401debug version of the code includes the debug output trace mechanism and
3402has a much larger code and data size.
3403
3404  Current Release:
3405    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
3406    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
3407  Previous Release:
3408    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
3409    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
3410
3411
34122) iASL Compiler/Disassembler and Tools:
3413
3414iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
3415names (argument count validation and return value typechecking.)
3416
3417iASL disassembler and table compiler: implemented support for all new
3418ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
3419
3420iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
3421tables: FADT, MADT.
3422
3423iASL preprocessor: Added a new directive to enable inclusion of binary
3424blobs into ASL code. The new directive is #includebuffer. It takes a
3425binary file as input and emits a named ascii buffer object into the ASL
3426code.
3427
3428AcpiHelp: Added support for all new ACPI 6.0 predefined names.
3429
3430AcpiHelp: Added a new option, -d, to display all iASL preprocessor
3431directives.
3432
3433AcpiHelp: Added a new option, -t, to display all known/supported ACPI
3434tables.
3435
3436
3437----------------------------------------
343810 April 2015. Summary of changes for version 20150410:
3439
3440Reverted a change introduced in version 20150408 that caused
3441a regression in the disassembler where incorrect operator
3442symbols could be emitted.
3443
3444
3445----------------------------------------
344608 April 2015. Summary of changes for version 20150408:
3447
3448
34491) ACPICA kernel-resident subsystem:
3450
3451Permanently set the return value for the _REV predefined name. It now
3452returns 2 (was 5). This matches other ACPI implementations. _REV will be
3453deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
3454for ACPI 2.0 and later. It should never be used to differentiate or
3455identify operating systems.
3456
3457Added the "Windows 2015" string to the _OSI support. ACPICA will now
3458return TRUE to a query with this string.
3459
3460Fixed several issues with the local version of the printf function.
3461
3462Added the C99 compiler option (-std=c99) to the Unix makefiles.
3463
3464  Current Release:
3465    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
3466    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
3467  Previous Release:
3468    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3469    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3470
3471
34722) iASL Compiler/Disassembler and Tools:
3473
3474iASL: Implemented an enhancement to the constant folding feature to
3475transform the parse tree to a simple Store operation whenever possible:
3476    Add (2, 3, X) ==> is converted to: Store (5, X)
3477    X = 2 + 3     ==> is converted to: Store (5, X)
3478
3479Updated support for the SLIC table (Software Licensing Description Table)
3480in both the Data Table compiler and the disassembler. The SLIC table
3481support now conforms to "Microsoft Software Licensing Tables (SLIC and
3482MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
3483following the ACPI header is now defined to be "Proprietary Data", and as
3484such, can only be entered or displayed as a hex data block.
3485
3486Implemented full support for the MSDM table as described in the document
3487above. Note: The format of MSDM is similar to SLIC. Any MSDM data
3488following the ACPI header is defined to be "Proprietary Data", and can
3489only be entered or displayed as a hex data block.
3490
3491Implemented the -Pn option for the iASL Table Compiler (was only
3492implemented for the ASL compiler). This option disables the iASL
3493preprocessor.
3494
3495Disassembler: For disassembly of Data Tables, added a comment field
3496around the Ascii equivalent data that is emitted as part of the "Raw
3497Table Data" block. This prevents the iASL Preprocessor from possible
3498confusion if/when the table is compiled.
3499
3500Disassembler: Added an option (-df) to force the disassembler to assume
3501that the table being disassembled contains valid AML. This feature is
3502useful for disassembling AML files that contain ACPI signatures other
3503than DSDT or SSDT (such as OEMx or other signatures).
3504
3505Changes for the EFI version of the tools:
35061) Fixed a build error/issue
35072) Fixed a cast warning
3508
3509iASL: Fixed a path issue with the __FILE__ operator by making the
3510directory prefix optional within the internal SplitInputFilename
3511function.
3512
3513Debugger: Removed some unused global variables.
3514
3515Tests: Updated the makefile for proper generation of the AAPITS suite.
3516
3517
3518----------------------------------------
351904 February 2015. Summary of changes for version 20150204:
3520
3521ACPICA kernel-resident subsystem:
3522
3523Updated all ACPICA copyrights and signons to 2014. Added the 2014
3524copyright to all module headers and signons, including the standard Linux
3525header. This affects virtually every file in the ACPICA core subsystem,
3526iASL compiler, all ACPICA utilities, and the test suites.
3527
3528Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
3529A raw gpe handling mechanism was created to allow better handling of GPE
3530storms that aren't easily managed by the normal handler. The raw handler
3531allows disabling/renabling of the the GPE so that interrupt storms can be
3532avoided in cases where events cannot be timely serviced. In this
3533scenario, handlers should use the AcpiSetGpe() API to disable/enable the
3534GPE. This API will leave the reference counts undisturbed, thereby
3535preventing unintentional clearing of the GPE when the intent in only to
3536temporarily disable it. Raw handlers allow enabling and disabling of a
3537GPE by removing GPE register locking. As such, raw handlers much provide
3538their own locks while using GPE API's to protect access to GPE data
3539structures.
3540Lv Zheng
3541
3542Events: Always modify GPE registers under the GPE lock.
3543Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
3544values. Reported as bug by joe.liu@apple.com.
3545
3546Unix makefiles: Separate option to disable optimizations and
3547_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
3548NOOPT disable option and creates a separate flag (NOFORTIFY) for this
3549purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
3550errors when building ACPICA. This allows disabling the option without
3551also having to disable optimazations.
3552David Box
3553
3554  Current Release:
3555    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3556    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
3557
3558--
3559--------------------------------------
356007 November 2014. Summary of changes for version 20141107:
3561
3562This release is available at https://acpica.org/downloads
3563
3564This release introduces and implements language extensions to ASL that
3565provide support for symbolic ("C-style") operators and expressions. These
3566language extensions are known collectively as ASL+.
3567
3568
35691) iASL Compiler/Disassembler and Tools:
3570
3571Disassembler: Fixed a problem with disassembly of the UartSerialBus
3572macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
3573Box.
3574
3575Disassembler: Fixed the Unicode macro support to add escape sequences.
3576All non-printable ASCII values are emitted as escape sequences, as well
3577as the standard escapes for quote and backslash. Ensures that the
3578disassembled macro can be correctly recompiled.
3579
3580iASL: Added Printf/Fprintf macros for formatted output. These macros are
3581translated to existing AML Concatenate and Store operations. Printf
3582writes to the ASL Debug object. Fprintf allows the specification of an
3583ASL name as the target. Only a single format specifier is required, %o,
3584since the AML interpreter dynamically converts objects to the required
3585type. David E. Box.
3586
3587    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3588                 (Concatenate (Concatenate (Concatenate ("", Arg0),
3589                 ": Unexpected value for "), Arg1), ", "), Arg2),
3590                 " at line "), Arg3), Debug)
3591
3592    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
3593                 Arg0, Arg1, Arg2, Arg3)
3594
3595    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3596                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
3597
3598    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
3599
3600iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
3601ASL parse tree before the AML code is generated. This allows blocks of
3602ASL code to be removed in order to help locate and identify problem
3603devices and/or code. David E. Box.
3604
3605AcpiExec: Added support (-fi) for an optional namespace object
3606initialization file. This file specifies initial values for namespace
3607objects as necessary for debugging and testing different ASL code paths
3608that may be taken as a result of BIOS options.
3609
3610
36112) Overview of symbolic operator support for ASL (ASL+)
3612-------------------------------------------------------
3613
3614As an extension to the ASL language, iASL implements support for symbolic
3615(C-style) operators for math and logical expressions. This can greatly
3616simplify ASL code as well as improve both readability and
3617maintainability. These language extensions can exist concurrently with
3618all legacy ASL code and expressions.
3619
3620The symbolic extensions are 100% compatible with existing AML
3621interpreters, since no new AML opcodes are created. To implement the
3622extensions, the iASL compiler transforms the symbolic expressions into
3623the legacy ASL/AML equivalents at compile time.
3624
3625Full symbolic expressions are supported, along with the standard C
3626precedence and associativity rules.
3627
3628Full disassembler support for the symbolic expressions is provided, and
3629creates an automatic migration path for existing ASL code to ASL+ code
3630via the disassembly process. By default, the disassembler now emits ASL+
3631code with symbolic expressions. An option (-dl) is provided to force the
3632disassembler to emit legacy ASL code if desired.
3633
3634Below is the complete list of the currently supported symbolic operators
3635with examples. See the iASL User Guide for additional information.
3636
3637
3638ASL+ Syntax      Legacy ASL Equivalent
3639-----------      ---------------------
3640
3641    // Math operators
3642
3643Z = X + Y        Add (X, Y, Z)
3644Z = X - Y        Subtract (X, Y, Z)
3645Z = X * Y        Multiply (X, Y, Z)
3646Z = X / Y        Divide (X, Y, , Z)
3647Z = X % Y        Mod (X, Y, Z)
3648Z = X << Y       ShiftLeft (X, Y, Z)
3649Z = X >> Y       ShiftRight (X, Y, Z)
3650Z = X & Y        And (X, Y, Z)
3651Z = X | Y        Or (X, Y, Z)
3652Z = X ^ Y        Xor (X, Y, Z)
3653Z = ~X           Not (X, Z)
3654X++              Increment (X)
3655X--              Decrement (X)
3656
3657    // Logical operators
3658
3659(X == Y)         LEqual (X, Y)
3660(X != Y)         LNotEqual (X, Y)
3661(X < Y)          LLess (X, Y)
3662(X > Y)          LGreater (X, Y)
3663(X <= Y)         LLessEqual (X, Y)
3664(X >= Y)         LGreaterEqual (X, Y)
3665(X && Y)         LAnd (X, Y)
3666(X || Y)         LOr (X, Y)
3667(!X)             LNot (X)
3668
3669    // Assignment and compound assignment operations
3670
3671X = Y           Store (Y, X)
3672X += Y          Add (X, Y, X)
3673X -= Y          Subtract (X, Y, X)
3674X *= Y          Multiply (X, Y, X)
3675X /= Y          Divide (X, Y, , X)
3676X %= Y          Mod (X, Y, X)
3677X <<= Y         ShiftLeft (X, Y, X)
3678X >>= Y         ShiftRight (X, Y, X)
3679X &= Y          And (X, Y, X)
3680X |= Y          Or (X, Y, X)
3681X ^= Y          Xor (X, Y, X)
3682
3683
36843) ASL+ Examples:
3685-----------------
3686
3687Legacy ASL:
3688        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
3689            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
36900x03FB),
3691            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
3692        {
3693            And (MEMB, 0xFFFFFFF0, SRMB)
3694            Store (MEMB, Local2)
3695            Store (PDBM, Local1)
3696            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
3697            Store (SRMB, MEMB)
3698            Or (PDBM, 0x02, PDBM)
3699        }
3700
3701ASL+ version:
3702        If (((R510 & 0x03FB) == 0x02E0) ||
3703            ((R520 & 0x03FB) == 0x02E0) ||
3704            ((R530 & 0x03FB) == 0x02E0) ||
3705            ((R540 & 0x03FB) == 0x02E0))
3706        {
3707            SRMB = (MEMB & 0xFFFFFFF0)
3708            Local2 = MEMB
3709            Local1 = PDBM
3710            PDBM &= 0xFFFFFFFFFFFFFFF9
3711            MEMB = SRMB
3712            PDBM |= 0x02
3713        }
3714
3715Legacy ASL:
3716        Store (0x1234, Local1)
3717        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
3718        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
3719        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
3720        Store (Index (PKG1, 0x03), Local6)
3721        Store (Add (Local3, Local2), Debug)
3722        Add (Local1, 0x0F, Local2)
3723        Add (Local1, Multiply (Local2, Local3), Local2)
3724        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
3725
3726ASL+ version:
3727        Local1 = 0x1234
3728        Local3 = (((Local1 + TEST) + 0x20) * Local2)
3729        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
3730        Local3 = (Local1 + (TEST + (0x20 * Local2)))
3731        Local6 = Index (PKG1, 0x03)
3732        Debug = (Local3 + Local2)
3733        Local2 = (Local1 + 0x0F)
3734        Local2 = (Local1 + (Local2 * Local3))
3735        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
3736
3737
3738----------------------------------------
373926 September 2014. Summary of changes for version 20140926:
3740
37411) ACPICA kernel-resident subsystem:
3742
3743Updated the GPIO operation region handler interface (GeneralPurposeIo).
3744In order to support GPIO Connection objects with multiple pins, along
3745with the related Field objects, the following changes to the interface
3746have been made: The Address is now defined to be the offset in bits of
3747the field unit from the previous invocation of a Connection. It can be
3748viewed as a "Pin Number Index" into the connection resource descriptor.
3749The BitWidth is the exact bit width of the field. It is usually one bit,
3750but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
3751additional information and examples.
3752
3753GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
3754corresponding _Lxx/_Exx methods are disabled (they may have been enabled
3755by the firmware), so that they cannot fire until they are enabled via
3756AcpiUpdateAllGpes. Rafael J. Wysocki.
3757
3758Added a new return flag for the Event/GPE status interfaces --
3759AcpiGetEventStatus and AcpiGetGpeStatus. The new
3760ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
3761GPE currently has a handler associated with it, and can thus actually
3762affect the system. Lv Zheng.
3763
3764Example Code and Data Size: These are the sizes for the OS-independent
3765acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3766debug version of the code includes the debug output trace mechanism and
3767has a much larger code and data size.
3768
3769  Current Release:
3770    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
3771    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
3772  Previous Release:
3773    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3774    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3775
37762) iASL Compiler/Disassembler and Tools:
3777
3778iASL: Fixed a memory allocation/free regression introduced in 20140828
3779that could cause the compiler to crash. This was introduced inadvertently
3780during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
37811113.
3782
3783iASL: Removed two error messages that have been found to create false
3784positives, until they can be fixed and fully validated (ACPICA BZ 1112):
37851) Illegal forward reference within a method
37862) Illegal reference across two methods
3787
3788iASL: Implemented a new option (-lm) to create a hardware mapping file
3789that summarizes all GPIO, I2C, SPI, and UART connections. This option
3790works for both the compiler and disassembler. See the iASL compiler user
3791guide for additional information and examples (section 6.4.6).
3792
3793AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
3794version 2. This corrects the AE_BAD_HEADER exception seen on systems with
3795a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
3796
3797AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
3798unless STDIN is actually a terminal. Assists with batch-mode processing.
3799ACPICA BZ 1114.
3800
3801Disassembler/AcpiHelp: Added another large group of recognized _HID
3802values.
3803
3804
3805----------------------------------------
380628 August 2014. Summary of changes for version 20140828:
3807
38081) ACPICA kernel-resident subsystem:
3809
3810Fixed a problem related to the internal use of the Timer() operator where
3811a 64-bit divide could cause an attempted link to a double-precision math
3812library. This divide is not actually necessary, so the code was
3813restructured to eliminate it. Lv Zheng.
3814
3815ACPI 5.1: Added support for the runtime validation of the _DSD package
3816(similar to the iASL support).
3817
3818ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
3819SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
3820
3821Example Code and Data Size: These are the sizes for the OS-independent
3822acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3823debug version of the code includes the debug output trace mechanism and
3824has a much larger code and data size.
3825
3826  Current Release:
3827    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3828    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3829  Previous Release:
3830    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
3831    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
3832
38332) iASL Compiler/Disassembler and Tools:
3834
3835AcpiExec: Fixed a problem on unix systems where the original terminal
3836state was not always properly restored upon exit. Seen when using the -v
3837option. ACPICA BZ 1104.
3838
3839iASL: Fixed a problem with the validation of the ranges/length within the
3840Memory24 resource descriptor. There was a boundary condition when the
3841range was equal to the (length -1) caused by the fact that these values
3842are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
3843
3844Disassembler: Fixed a problem with the GpioInt descriptor interrupt
3845polarity
3846flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
3847is
3848now supported properly.
3849
3850ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
3851in the disassembler, data table compiler, and table template generator.
3852
3853iASL: Added a requirement for Device() objects that one of either a _HID
3854or _ADR must exist within the scope of a Device, as per the ACPI
3855specification. Remove a similar requirement that was incorrectly in place
3856for the _DSD object.
3857
3858iASL: Added error detection for illegal named references within control
3859methods that would cause runtime failures. Now trapped as errors are: 1)
3860References to objects within a non-parent control method. 2) Forward
3861references (within a method) -- for control methods, AML interpreters use
3862a one-pass parse of control methods. ACPICA BZ 1008.
3863
3864iASL: Added error checking for dependencies related to the _PSx power
3865methods. ACPICA BZ 1029.
38661) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
3867_PS3.
38682) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
3869scope.
3870
3871iASL and table compiler: Cleanup miscellaneous memory leaks by fully
3872deploying the existing object and string caches and adding new caches for
3873the table compiler.
3874
3875iASL: Split the huge parser source file into multiple subfiles to improve
3876manageability. Generation now requires the M4 macro preprocessor, which
3877is part of the Bison distribution on both unix and windows platforms.
3878
3879AcpiSrc: Fixed and removed all extraneous warnings generated during
3880entire ACPICA source code scan and/or conversion.
3881
3882
3883----------------------------------------
3884
388524 July 2014. Summary of changes for version 20140724:
3886
3887The ACPI 5.1 specification has been released and is available at:
3888http://uefi.org/specs/access
3889
3890
38910) ACPI 5.1 support in ACPICA:
3892
3893ACPI 5.1 is fully supported in ACPICA as of this release.
3894
3895New predefined names. Support includes iASL and runtime ACPICA
3896validation.
3897    _CCA (Cache Coherency Attribute).
3898    _DSD (Device-Specific Data). David Box.
3899
3900Modifications to existing ACPI tables. Support includes headers, iASL
3901Data Table compiler, disassembler, and the template generator.
3902    FADT - New fields and flags. Graeme Gregory.
3903    GTDT - One new subtable and new fields. Tomasz Nowicki.
3904    MADT - Two new subtables. Tomasz Nowicki.
3905    PCCT - One new subtable.
3906
3907Miscellaneous.
3908    New notification type for System Resource Affinity change events.
3909
3910
39111) ACPICA kernel-resident subsystem:
3912
3913Fixed a regression introduced in 20140627 where a fault can happen during
3914the deletion of Alias AML namespace objects. The problem affected both
3915the core ACPICA and the ACPICA tools including iASL and AcpiExec.
3916
3917Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
3918simple mechanism to enable wake GPEs that have no associated handler or
3919control method. Rafael Wysocki.
3920
3921Updated the AcpiEnableGpe interface to disallow the enable if there is no
3922handler or control method associated with the particular GPE. This will
3923help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
3924
3925Updated GPE handling and dispatch by disabling the GPE before clearing
3926the status bit for edge-triggered GPEs. Lv Zheng.
3927
3928Added Timer() support to the AML Debug object. The current timer value is
3929now displayed with each invocation of (Store to) the debug object to
3930enable simple generation of execution times for AML code (method
3931execution for example.) ACPICA BZ 1093.
3932
3933Example Code and Data Size: These are the sizes for the OS-independent
3934acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3935debug version of the code includes the debug output trace mechanism and
3936has a much larger code and data size.
3937
3938  Current Release:
3939    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
3940    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
3941  Previous Release:
3942    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
3943    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
3944
3945
39462) iASL Compiler/Disassembler and Tools:
3947
3948Fixed an issue with the recently added local printf implementation,
3949concerning width/precision specifiers that could cause incorrect output.
3950Lv Zheng. ACPICA BZ 1094.
3951
3952Disassembler: Added support to detect buffers that contain UUIDs and
3953disassemble them to an invocation of the ToUUID operator. Also emit
3954commented descriptions of known ACPI-related UUIDs.
3955
3956AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
3957-u. Adds three new files.
3958
3959iASL: Update table compiler and disassembler for DMAR table changes that
3960were introduced in September 2013. With assistance by David Woodhouse.
3961
3962----------------------------------------
396327 June 2014. Summary of changes for version 20140627:
3964
39651) ACPICA kernel-resident subsystem:
3966
3967Formatted Output: Implemented local versions of standard formatted output
3968utilities such as printf, etc. Over time, it has been discovered that
3969there are in fact many portability issues with printf, and the addition
3970of this feature will fix/prevent these issues once and for all. Some
3971known issues are summarized below:
3972
39731) Output of 64-bit values is not portable. For example, UINT64 is %ull
3974for the Linux kernel and is %uI64 for some MSVC versions.
39752) Invoking printf consistently in a manner that is portable across both
397632-bit and 64-bit platforms is difficult at best in many situations.
39773) The output format for pointers varies from system to system (leading
3978zeros especially), and leads to inconsistent output from ACPICA across
3979platforms.
39804) Certain platform-specific printf formats may conflict with ACPICA use.
39815) If there is no local C library available, ACPICA now has local support
3982for printf.
3983
3984-- To address these printf issues in a complete manner, ACPICA now
3985directly implements a small subset of printf format specifiers, only
3986those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
3987
3988Implemented support for ACPICA generation within the EFI environment.
3989Initially, the AcpiDump utility is supported in the UEFI shell
3990environment. Lv Zheng.
3991
3992Added a new external interface, AcpiLogError, to improve ACPICA
3993portability. This allows the host to redirect error messages from the
3994ACPICA utilities. Lv Zheng.
3995
3996Added and deployed new OSL file I/O interfaces to improve ACPICA
3997portability:
3998  AcpiOsOpenFile
3999  AcpiOsCloseFile
4000  AcpiOsReadFile
4001  AcpiOsWriteFile
4002  AcpiOsGetFileOffset
4003  AcpiOsSetFileOffset
4004There are C library implementations of these functions in the new file
4005service_layers/oslibcfs.c -- however, the functions can be implemented by
4006the local host in any way necessary. Lv Zheng.
4007
4008Implemented a mechanism to disable/enable ACPI table checksum validation
4009at runtime. This can be useful when loading tables very early during OS
4010initialization when it may not be possible to map the entire table in
4011order to compute the checksum. Lv Zheng.
4012
4013Fixed a buffer allocation issue for the Generic Serial Bus support.
4014Originally, a fixed buffer length was used. This change allows for
4015variable-length buffers based upon the protocol indicated by the field
4016access attributes. Reported by Lan Tianyu. Lv Zheng.
4017
4018Fixed a problem where an object detached from a namespace node was not
4019properly terminated/cleared and could cause a circular list problem if
4020reattached. ACPICA BZ 1063. David Box.
4021
4022Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
4023
4024Fixed a possible memory leak in an error return path within the function
4025AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
4026
4027Example Code and Data Size: These are the sizes for the OS-independent
4028acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4029debug version of the code includes the debug output trace mechanism and
4030has a much larger code and data size.
4031
4032  Current Release:
4033    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
4034    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
4035  Previous Release:
4036    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
4037    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
4038
4039
40402) iASL Compiler/Disassembler and Tools:
4041
4042Disassembler: Add dump of ASCII equivalent text within a comment at the
4043end of each line of the output for the Buffer() ASL operator.
4044
4045AcpiDump: Miscellaneous changes:
4046  Fixed repetitive table dump in -n mode.
4047  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
4048the ACPI 2.0 GUID fails.
4049
4050iASL: Fixed a problem where the compiler could fault if incorrectly given
4051an acpidump output file as input. ACPICA BZ 1088. David Box.
4052
4053AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
4054they are invoked without any arguments.
4055
4056Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
40571086. Colin Ian King.
4058
4059Disassembler: Cleaned up a block of code that extracts a parent Op
4060object. Added a comment that explains that the parent is guaranteed to be
4061valid in this case. ACPICA BZ 1069.
4062
4063
4064----------------------------------------
406524 April 2014. Summary of changes for version 20140424:
4066
40671) ACPICA kernel-resident subsystem:
4068
4069Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
4070Some of these tables are known to contain a trailing NULL entry. Lv
4071Zheng.
4072
4073Removed an extraneous error message for the case where there are a large
4074number of system GPEs (> 124). This was the "32-bit FADT register is too
4075long to convert to GAS struct" message, which is irrelevant for GPEs
4076since the GPEx_BLK_LEN fields of the FADT are always used instead of the
4077(limited capacity) GAS bit length. Also, several changes to ensure proper
4078support for GPE numbers > 255, where some "GPE number" fields were 8-bits
4079internally.
4080
4081Implemented and deployed additional configuration support for the public
4082ACPICA external interfaces. Entire classes of interfaces can now be
4083easily modified or configured out, replaced by stubbed inline functions
4084by default. Lv Zheng.
4085
4086Moved all public ACPICA runtime configuration globals to the public
4087ACPICA external interface file for convenience. Also, removed some
4088obsolete/unused globals. See the file acpixf.h. Lv Zheng.
4089
4090Documentation: Added a new section to the ACPICA reference describing the
4091maximum number of GPEs that can be supported by the FADT-defined GPEs in
4092block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
4093reference.
4094
4095Example Code and Data Size: These are the sizes for the OS-independent
4096acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4097debug version of the code includes the debug output trace mechanism and
4098has a much larger code and data size.
4099
4100  Current Release:
4101    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
4102    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
4103  Previous Release:
4104    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
4105    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
4106
4107
41082) iASL Compiler/Disassembler and Tools:
4109
4110iASL and disassembler: Add full support for the LPIT table (Low Power
4111Idle Table). Includes support in the disassembler, data table compiler,
4112and template generator.
4113
4114AcpiDump utility:
41151) Add option to force the use of the RSDT (over the XSDT).
41162) Improve validation of the RSDP signature (use 8 chars instead of 4).
4117
4118iASL: Add check for predefined packages that are too large.  For
4119predefined names that contain subpackages, check if each subpackage is
4120too large. (Check for too small already exists.)
4121
4122Debugger: Updated the GPE command (which simulates a GPE by executing the
4123GPE code paths in ACPICA). The GPE device is now optional, and defaults
4124to the GPE 0/1 FADT-defined blocks.
4125
4126Unix application OSL: Update line-editing support. Add additional error
4127checking and take care not to reset terminal attributes on exit if they
4128were never set. This should help guarantee that the terminal is always
4129left in the previous state on program exit.
4130
4131
4132----------------------------------------
413325 March 2014. Summary of changes for version 20140325:
4134
41351) ACPICA kernel-resident subsystem:
4136
4137Updated the auto-serialize feature for control methods. This feature
4138automatically serializes all methods that create named objects in order
4139to prevent runtime errors. The update adds support to ignore the
4140currently executing AML SyncLevel when invoking such a method, in order
4141to prevent disruption of any existing SyncLevel priorities that may exist
4142in the AML code. Although the use of SyncLevels is relatively rare, this
4143change fixes a regression where an AE_AML_MUTEX_ORDER exception can
4144appear on some machines starting with the 20140214 release.
4145
4146Added a new external interface to allow the host to install ACPI tables
4147very early, before the namespace is even created. AcpiInstallTable gives
4148the host additional flexibility for ACPI table management. Tables can be
4149installed directly by the host as if they had originally appeared in the
4150XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
4151(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
4152with additional internal restructuring and cleanup. See the ACPICA
4153Reference for interface details. Lv Zheng.
4154
4155Added validation of the checksum for all incoming dynamically loaded
4156tables (via external interfaces or via AML Load/LoadTable operators). Lv
4157Zheng.
4158
4159Updated the use of the AcpiOsWaitEventsComplete interface during Notify
4160and GPE handler removal. Restructured calls to eliminate possible race
4161conditions. Lv Zheng.
4162
4163Added a warning for the use/execution of the ASL/AML Unload (table)
4164operator. This will help detect and identify machines that use this
4165operator if and when it is ever used. This operator has never been seen
4166in the field and the usage model and possible side-effects of the drastic
4167runtime action of a full table removal are unknown.
4168
4169Reverted the use of #pragma push/pop which was introduced in the 20140214
4170release. It appears that push and pop are not implemented by enough
4171compilers to make the use of this feature feasible for ACPICA at this
4172time. However, these operators may be deployed in a future ACPICA
4173release.
4174
4175Added the missing EXPORT_SYMBOL macros for the install and remove SCI
4176handler interfaces.
4177
4178Source code generation:
41791) Disabled the use of the "strchr" macro for the gcc-specific
4180generation. For some versions of gcc, this macro can periodically expose
4181a compiler bug which in turn causes compile-time error(s).
41822) Added support for PPC64 compilation. Colin Ian King.
4183
4184Example Code and Data Size: These are the sizes for the OS-independent
4185acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4186debug version of the code includes the debug output trace mechanism and
4187has a much larger code and data size.
4188
4189  Current Release:
4190    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
4191    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
4192  Previous Release:
4193    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
4194    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
4195
4196
41972) iASL Compiler/Disassembler and Tools:
4198
4199Disassembler: Added several new features to improve the readability of
4200the resulting ASL code. Extra information is emitted within comment
4201fields in the ASL code:
42021) Known _HID/_CID values are decoded to descriptive text.
42032) Standard values for the Notify() operator are decoded to descriptive
4204text.
42053) Target operands are expanded to full pathnames (in a comment) when
4206possible.
4207
4208Disassembler: Miscellaneous updates for extern() handling:
42091) Abort compiler if file specified by -fe option does not exist.
42102) Silence unnecessary warnings about argument count mismatches.
42113) Update warning messages concerning unresolved method externals.
42124) Emit "UnknownObj" keyword for externals whose type cannot be
4213determined.
4214
4215AcpiHelp utility:
42161) Added the -a option to display both the ASL syntax and the AML
4217encoding for an input ASL operator. This effectively displays all known
4218information about an ASL operator with one AcpiHelp invocation.
42192) Added substring match support (similar to a wildcard) for the -i
4220(_HID/PNP IDs) option.
4221
4222iASL/Disassembler: Since this tool does not yet support execution on big-
4223endian machines, added detection of endianness and an error message if
4224execution is attempted on big-endian. Support for big-endian within iASL
4225is a feature that is on the ACPICA to-be-done list.
4226
4227AcpiBin utility:
42281) Remove option to extract binary files from an acpidump; this function
4229is made obsolete by the AcpiXtract utility.
42302) General cleanup of open files and allocated buffers.
4231
4232
4233----------------------------------------
423414 February 2014. Summary of changes for version 20140214:
4235
42361) ACPICA kernel-resident subsystem:
4237
4238Implemented a new mechanism to proactively prevent problems with ill-
4239behaved reentrant control methods that create named ACPI objects. This
4240behavior is illegal as per the ACPI specification, but is nonetheless
4241frequently seen in the field. Previously, this could lead to an
4242AE_ALREADY_EXISTS exception if the method was actually entered by more
4243than one thread. This new mechanism detects such methods at table load
4244time and marks them "serialized" to prevent reentrancy. A new global
4245option, AcpiGbl_AutoSerializeMethods, has been added to disable this
4246feature if desired. This mechanism and global option obsoletes and
4247supersedes the previous AcpiGbl_SerializeAllMethods option.
4248
4249Added the "Windows 2013" string to the _OSI support. ACPICA will now
4250respond TRUE to _OSI queries with this string. It is the stated policy of
4251ACPICA to add new strings to the _OSI support as soon as possible after
4252they are defined. See the full ACPICA _OSI policy which has been added to
4253the utilities/utosi.c file.
4254
4255Hardened/updated the _PRT return value auto-repair code:
42561) Do not abort the repair on a single subpackage failure, continue to
4257check all subpackages.
42582) Add check for the minimum subpackage length (4).
42593) Properly handle extraneous NULL package elements.
4260
4261Added support to avoid the possibility of infinite loops when traversing
4262object linked lists. Never allow an infinite loop, even in the face of
4263corrupted object lists.
4264
4265ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
4266pack(pop) directives to ensure that the ACPICA headers are independent of
4267compiler settings or other host headers.
4268
4269Example Code and Data Size: These are the sizes for the OS-independent
4270acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4271debug version of the code includes the debug output trace mechanism and
4272has a much larger code and data size.
4273
4274  Current Release:
4275    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
4276    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
4277  Previous Release:
4278    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
4279    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
4280
4281
42822) iASL Compiler/Disassembler and Tools:
4283
4284iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
4285first reserved field was incorrectly forced to have a value of zero. This
4286change correctly forces the field to have a value of one. ACPICA BZ 1081.
4287
4288Debugger: Added missing support for the "Extra" and "Data" subobjects
4289when displaying object data.
4290
4291Debugger: Added support to display entire object linked lists when
4292displaying object data.
4293
4294iASL: Removed the obsolete -g option to obtain ACPI tables from the
4295Windows registry. This feature has been superseded by the acpidump
4296utility.
4297
4298
4299----------------------------------------
430014 January 2014. Summary of changes for version 20140114:
4301
43021) ACPICA kernel-resident subsystem:
4303
4304Updated all ACPICA copyrights and signons to 2014. Added the 2014
4305copyright to all module headers and signons, including the standard Linux
4306header. This affects virtually every file in the ACPICA core subsystem,
4307iASL compiler, all ACPICA utilities, and the test suites.
4308
4309Improved parameter validation for AcpiInstallGpeBlock. Added the
4310following checks:
43111) The incoming device handle refers to type ACPI_TYPE_DEVICE.
43122) There is not already a GPE block attached to the device.
4313Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
4314device.
4315
4316Correctly support "references" in the ACPI_OBJECT. This change fixes the
4317support to allow references (namespace nodes) to be passed as arguments
4318to control methods via the evaluate object interface. This is probably
4319most useful for testing purposes, however.
4320
4321Improved support for 32/64 bit physical addresses in printf()-like
4322output. This change improves the support for physical addresses in printf
4323debug statements and other output on both 32-bit and 64-bit hosts. It
4324consistently outputs the appropriate number of bytes for each host. The
4325%p specifier is unsatisfactory since it does not emit uniform output on
4326all hosts/clib implementations (on some, leading zeros are not supported,
4327leading to difficult-to-read output).
4328
4329Example Code and Data Size: These are the sizes for the OS-independent
4330acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4331debug version of the code includes the debug output trace mechanism and
4332has a much larger code and data size.
4333
4334  Current Release:
4335    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
4336    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
4337  Previous Release:
4338    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
4339    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
4340
4341
43422) iASL Compiler/Disassembler and Tools:
4343
4344iASL: Fix a possible fault when using the Connection() operator. Fixes a
4345problem if the parent Field definition for the Connection operator refers
4346to an operation region that does not exist. ACPICA BZ 1064.
4347
4348AcpiExec: Load of local test tables is now optional. The utility has the
4349capability to load some various tables to test features of ACPICA.
4350However, there are enough of them that the output of the utility became
4351confusing. With this change, only the required local tables are displayed
4352(RSDP, XSDT, etc.) along with the actual tables loaded via the command
4353line specification. This makes the default output simler and easier to
4354understand. The -el command line option restores the original behavior
4355for testing purposes.
4356
4357AcpiExec: Added support for overlapping operation regions. This change
4358expands the simulation of operation regions by supporting regions that
4359overlap within the given address space. Supports SystemMemory and
4360SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
4361
4362AcpiExec: Added region handler support for PCI_Config and EC spaces. This
4363allows AcpiExec to simulate these address spaces, similar to the current
4364support for SystemMemory and SystemIO.
4365
4366Debugger: Added new command to read/write/compare all namespace objects.
4367The command "test objects" will exercise the entire namespace by writing
4368new values to each data object, and ensuring that the write was
4369successful. The original value is then restored and verified.
4370
4371Debugger: Added the "test predefined" command. This change makes this
4372test public and puts it under the new "test" command. The test executes
4373each and every predefined name within the current namespace.
4374
4375
4376----------------------------------------
437718 December 2013. Summary of changes for version 20131218:
4378
4379Global note: The ACPI 5.0A specification was released this month. There
4380are no changes needed for ACPICA since this release of ACPI is an
4381errata/clarification release. The specification is available at
4382acpi.info.
4383
4384
43851) ACPICA kernel-resident subsystem:
4386
4387Added validation of the XSDT root table if it is present. Some older
4388platforms contain an XSDT that is ill-formed or otherwise invalid (such
4389as containing some or all entries that are NULL pointers). This change
4390adds a new function to validate the XSDT before actually using it. If the
4391XSDT is found to be invalid, ACPICA will now automatically fall back to
4392using the RSDT instead. Original implementation by Zhao Yakui. Ported to
4393ACPICA and enhanced by Lv Zheng and Bob Moore.
4394
4395Added a runtime option to ignore the XSDT and force the use of the RSDT.
4396This change adds a runtime option that will force ACPICA to use the RSDT
4397instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
4398requires that an XSDT be used instead of the RSDT, the XSDT has been
4399found to be corrupt or ill-formed on some machines. Lv Zheng.
4400
4401Added a runtime option to favor 32-bit FADT register addresses over the
440264-bit addresses. This change adds an option to favor 32-bit FADT
4403addresses when there is a conflict between the 32-bit and 64-bit versions
4404of the same register. The default behavior is to use the 64-bit version
4405in accordance with the ACPI specification. This can now be overridden via
4406the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
4407
4408During the change above, the internal "Convert FADT" and "Verify FADT"
4409functions have been merged to simplify the code, making it easier to
4410understand and maintain. ACPICA BZ 933.
4411
4412Improve exception reporting and handling for GPE block installation.
4413Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
4414status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
4415
4416Added helper macros to extract bus/segment numbers from the HEST table.
4417This change adds two macros to extract the encoded bus and segment
4418numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
4419Betty Dall <betty.dall@hp.com>
4420
4421Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
4422by ACPICA. It is not a public macro, so it should have no effect on
4423existing OSV code. Lv Zheng.
4424
4425Example Code and Data Size: These are the sizes for the OS-independent
4426acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4427debug version of the code includes the debug output trace mechanism and
4428has a much larger code and data size.
4429
4430  Current Release:
4431    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
4432    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
4433  Previous Release:
4434    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4435    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4436
4437
44382) iASL Compiler/Disassembler and Tools:
4439
4440Disassembler: Improved pathname support for emitted External()
4441statements. This change adds full pathname support for external names
4442that have been resolved internally by the inclusion of additional ACPI
4443tables (via the iASL -e option). Without this change, the disassembler
4444can emit multiple externals for the same object, or it become confused
4445when the Scope() operator is used on an external object. Overall, greatly
4446improves the ability to actually recompile the emitted ASL code when
4447objects a referenced across multiple ACPI tables. Reported by Michael
4448Tsirkin (mst@redhat.com).
4449
4450Tests/ASLTS: Updated functional control suite to execute with no errors.
4451David Box. Fixed several errors related to the testing of the interpreter
4452slack mode. Lv Zheng.
4453
4454iASL: Added support to detect names that are declared within a control
4455method, but are unused (these are temporary names that are only valid
4456during the time the method is executing). A remark is issued for these
4457cases. ACPICA BZ 1022.
4458
4459iASL: Added full support for the DBG2 table. Adds full disassembler,
4460table compiler, and template generator support for the DBG2 table (Debug
4461Port 2 table).
4462
4463iASL: Added full support for the PCCT table, update the table definition.
4464Updates the PCCT table definition in the actbl3.h header and adds table
4465compiler and template generator support.
4466
4467iASL: Added an option to emit only error messages (no warnings/remarks).
4468The -ve option will enable only error messages, warnings and remarks are
4469suppressed. This can simplify debugging when only the errors are
4470important, such as when an ACPI table is disassembled and there are many
4471warnings and remarks -- but only the actual errors are of real interest.
4472
4473Example ACPICA code (source/tools/examples): Updated the example code so
4474that it builds to an actual working program, not just example code. Added
4475ACPI tables and execution of an example control method in the DSDT. Added
4476makefile support for Unix generation.
4477
4478
4479----------------------------------------
448015 November 2013. Summary of changes for version 20131115:
4481
4482This release is available at https://acpica.org/downloads
4483
4484
44851) ACPICA kernel-resident subsystem:
4486
4487Resource Manager: Fixed loop termination for the "get AML length"
4488function. The loop previously had an error termination on a NULL resource
4489pointer, which can never happen since the loop simply increments a valid
4490resource pointer. This fix changes the loop to terminate with an error on
4491an invalid end-of-buffer condition. The problem can be seen as an
4492infinite loop by callers to AcpiSetCurrentResources with an invalid or
4493corrupted resource descriptor, or a resource descriptor that is missing
4494an END_TAG descriptor. Reported by Dan Carpenter
4495<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
4496
4497Table unload and ACPICA termination: Delete all attached data objects
4498during namespace node deletion. This fix updates namespace node deletion
4499to delete the entire list of attached objects (attached via
4500AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
45011024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
4502
4503ACPICA termination: Added support to delete all objects attached to the
4504root namespace node. This fix deletes any and all objects that have been
4505attached to the root node via AcpiAttachData. Previously, none of these
4506objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
4507
4508Debug output: Do not emit the function nesting level for the in-kernel
4509build. The nesting level is really only useful during a single-thread
4510execution. Therefore, only enable this output for the AcpiExec utility.
4511Also, only emit the thread ID when executing under AcpiExec (Context
4512switches are still always detected and a message is emitted). ACPICA BZ
4513972.
4514
4515Example Code and Data Size: These are the sizes for the OS-independent
4516acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4517debug version of the code includes the debug output trace mechanism and
4518has a much larger code and data size.
4519
4520  Current Release:
4521    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4522    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4523  Previous Release:
4524    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4525    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4526
4527
45282) iASL Compiler/Disassembler and Tools:
4529
4530AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
4531correct portable POSIX header for terminal control functions.
4532
4533Disassembler: Fixed control method invocation issues related to the use
4534of the CondRefOf() operator. The problem is seen in the disassembly where
4535control method invocations may not be disassembled properly if the
4536control method name has been used previously as an argument to CondRefOf.
4537The solution is to not attempt to emit an external declaration for the
4538CondRefOf target (it is not necessary in the first place). This prevents
4539disassembler object type confusion. ACPICA BZ 988.
4540
4541Unix Makefiles: Added an option to disable compiler optimizations and the
4542_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
4543with optimizations (reportedly, gcc 4.4 for example). This change adds a
4544command line option for make (NOOPT) that disables all compiler
4545optimizations and the _FORTIFY_SOURCE compiler flag. The default
4546optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
45471034. Lv Zheng, Bob Moore.
4548
4549Tests/ASLTS: Added options to specify individual test cases and modes.
4550This allows testers running aslts.sh to optionally specify individual
4551test modes and test cases. Also added an option to disable the forced
4552generation of the ACPICA tools from source if desired. Lv Zheng.
4553
4554----------------------------------------
455527 September 2013. Summary of changes for version 20130927:
4556
4557This release is available at https://acpica.org/downloads
4558
4559
45601) ACPICA kernel-resident subsystem:
4561
4562Fixed a problem with store operations to reference objects. This change
4563fixes a problem where a Store operation to an ArgX object that contained
4564a
4565reference to a field object did not complete the automatic dereference
4566and
4567then write to the actual field object. Instead, the object type of the
4568field object was inadvertently changed to match the type of the source
4569operand. The new behavior will actually write to the field object (buffer
4570field or field unit), thus matching the correct ACPI-defined behavior.
4571
4572Implemented support to allow the host to redefine individual OSL
4573prototypes. This change enables the host to redefine OSL prototypes found
4574in the acpiosxf.h file. This allows the host to implement OSL interfaces
4575with a macro or inlined function. Further, it allows the host to add any
4576additional required modifiers such as __iomem, __init, __exit, etc., as
4577necessary on a per-interface basis. Enables maximum flexibility for the
4578OSL interfaces. Lv Zheng.
4579
4580Hardcoded the access width for the FADT-defined reset register. The ACPI
4581specification requires the reset register width to be 8 bits. ACPICA now
4582hardcodes the width to 8 and ignores the FADT width value. This provides
4583compatibility with other ACPI implementations that have allowed BIOS code
4584with bad register width values to go unnoticed. Matthew Garett, Bob
4585Moore,
4586Lv Zheng.
4587
4588Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
4589used
4590in the OSL header (acpiosxf). The change modifies the position of this
4591macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
4592build issues if the OSL defines the implementation of the interface to be
4593an inline stub function. Lv Zheng.
4594
4595Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
4596initialization interfaces. This change adds a new macro for the main init
4597and terminate external interfaces in order to support hosts that require
4598additional or different processing for these functions. Changed from
4599ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
4600Zheng, Bob Moore.
4601
4602Cleaned up the memory allocation macros for configurability. In the
4603common
4604case, the ACPI_ALLOCATE and related macros now resolve directly to their
4605respective AcpiOs* OSL interfaces. Two options:
46061) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
4607default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
46082) For AcpiExec (and for debugging), the macros can optionally be
4609resolved
4610to the local ACPICA interfaces that track each allocation (local tracking
4611is used to immediately detect memory leaks).
4612Lv Zheng.
4613
4614Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
4615to predefine this macro to either TRUE or FALSE during the system build.
4616
4617Replaced __FUNCTION_ with __func__ in the gcc-specific header.
4618
4619Example Code and Data Size: These are the sizes for the OS-independent
4620acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4621debug version of the code includes the debug output trace mechanism and
4622has a much larger code and data size.
4623
4624  Current Release:
4625    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4626    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4627  Previous Release:
4628    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
4629    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4630
4631
46322) iASL Compiler/Disassembler and Tools:
4633
4634iASL: Implemented wildcard support for the -e option. This simplifies use
4635when there are many SSDTs that must be included to resolve external
4636method
4637declarations. ACPICA BZ 1041. Example:
4638    iasl -e ssdt*.dat -d dsdt.dat
4639
4640AcpiExec: Add history/line-editing for Unix/Linux systems. This change
4641adds a portable module that implements full history and limited line
4642editing for Unix and Linux systems. It does not use readline() due to
4643portability issues. Instead it uses the POSIX termio interface to put the
4644terminal in raw input mode so that the various special keys can be
4645trapped
4646(such as up/down-arrow for history support and left/right-arrow for line
4647editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
4648
4649AcpiXtract: Add support to handle (ignore) "empty" lines containing only
4650one or more spaces. This provides compatible with early or different
4651versions of the AcpiDump utility. ACPICA BZ 1044.
4652
4653AcpiDump: Do not ignore tables that contain only an ACPI table header.
4654Apparently, some BIOSs create SSDTs that contain an ACPI table header but
4655no other data. This change adds support to dump these tables. Any tables
4656shorter than the length of an ACPI table header remain in error (an error
4657message is emitted). Reported by Yi Li.
4658
4659Debugger: Echo actual command along with the "unknown command" message.
4660
4661----------------------------------------
466223 August 2013. Summary of changes for version 20130823:
4663
46641) ACPICA kernel-resident subsystem:
4665
4666Implemented support for host-installed System Control Interrupt (SCI)
4667handlers. Certain ACPI functionality requires the host to handle raw
4668SCIs. For example, the "SCI Doorbell" that is defined for memory power
4669state support requires the host device driver to handle SCIs to examine
4670if the doorbell has been activated. Multiple SCI handlers can be
4671installed to allow for future expansion. New external interfaces are
4672AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
4673details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
4674
4675Operation region support: Never locally free the handler "context"
4676pointer. This change removes some dangerous code that attempts to free
4677the handler context pointer in some (rare) circumstances. The owner of
4678the handler owns this pointer and the ACPICA code should never touch it.
4679Although not seen to be an issue in any kernel, it did show up as a
4680problem (fault) under AcpiExec. Also, set the internal storage field for
4681the context pointer to zero when the region is deactivated, simply for
4682sanity. David Box. ACPICA BZ 1039.
4683
4684AcpiRead: On error, do not modify the return value target location. If an
4685error happens in the middle of a split 32/32 64-bit I/O operation, do not
4686modify the target of the return value pointer. Makes the code consistent
4687with the rest of ACPICA. Bjorn Helgaas.
4688
4689Example Code and Data Size: These are the sizes for the OS-independent
4690acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4691debug version of the code includes the debug output trace mechanism and
4692has a much larger code and data size.
4693
4694  Current Release:
4695    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
4696    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4697  Previous Release:
4698    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
4699    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
4700
4701
47022) iASL Compiler/Disassembler and Tools:
4703
4704AcpiDump: Implemented several new features and fixed some problems:
47051) Added support to dump the RSDP, RSDT, and XSDT tables.
47062) Added support for multiple table instances (SSDT, UEFI).
47073) Added option to dump "customized" (overridden) tables (-c).
47084) Fixed a problem where some table filenames were improperly
4709constructed.
47105) Improved some error messages, removed some unnecessary messages.
4711
4712iASL: Implemented additional support for disassembly of ACPI tables that
4713contain invocations of external control methods. The -fe<file> option
4714allows the import of a file that specifies the external methods along
4715with the required number of arguments for each -- allowing for the
4716correct disassembly of the table. This is a workaround for a limitation
4717of AML code where the disassembler often cannot determine the number of
4718arguments required for an external control method and generates incorrect
4719ASL code. See the iASL reference for details. ACPICA BZ 1030.
4720
4721Debugger: Implemented a new command (paths) that displays the full
4722pathnames (namepaths) and object types of all objects in the namespace.
4723This is an alternative to the namespace command.
4724
4725Debugger: Implemented a new command (sci) that invokes the SCI dispatch
4726mechanism and any installed handlers.
4727
4728iASL: Fixed a possible segfault for "too many parent prefixes" condition.
4729This can occur if there are too many parent prefixes in a namepath (for
4730example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
4731
4732Application OSLs: Set the return value for the PCI read functions. These
4733functions simply return AE_OK, but should set the return value to zero
4734also. This change implements this. ACPICA BZ 1038.
4735
4736Debugger: Prevent possible command line buffer overflow. Increase the
4737size of a couple of the debugger line buffers, and ensure that overflow
4738cannot happen. ACPICA BZ 1037.
4739
4740iASL: Changed to abort immediately on serious errors during the parsing
4741phase. Due to the nature of ASL, there is no point in attempting to
4742compile these types of errors, and they typically end up causing a
4743cascade of hundreds of errors which obscure the original problem.
4744
4745----------------------------------------
474625 July 2013. Summary of changes for version 20130725:
4747
47481) ACPICA kernel-resident subsystem:
4749
4750Fixed a problem with the DerefOf operator where references to FieldUnits
4751and BufferFields incorrectly returned the parent object, not the actual
4752value of the object. After this change, a dereference of a FieldUnit
4753reference results in a read operation on the field to get the value, and
4754likewise, the appropriate BufferField value is extracted from the target
4755buffer.
4756
4757Fixed a problem where the _WAK method could cause a fault under these
4758circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
4759method returned no value. The problem is rarely seen because most kernels
4760run ACPICA in slack mode.
4761
4762For the DerefOf operator, a fatal error now results if an attempt is made
4763to dereference a reference (created by the Index operator) to a NULL
4764package element. Provides compatibility with other ACPI implementations,
4765and this behavior will be added to a future version of the ACPI
4766specification.
4767
4768The ACPI Power Management Timer (defined in the FADT) is now optional.
4769This provides compatibility with other ACPI implementations and will
4770appear in the next version of the ACPI specification. If there is no PM
4771Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
4772zero in the FADT indicates no PM timer.
4773
4774Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
4775allows the host to globally enable/disable all vendor strings, all
4776feature strings, or both. Intended to be primarily used for debugging
4777purposes only. Lv Zheng.
4778
4779Expose the collected _OSI data to the host via a global variable. This
4780data tracks the highest level vendor ID that has been invoked by the BIOS
4781so that the host (and potentially ACPICA itself) can change behaviors
4782based upon the age of the BIOS.
4783
4784Example Code and Data Size: These are the sizes for the OS-independent
4785acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4786debug version of the code includes the debug output trace mechanism and
4787has a much larger code and data size.
4788
4789  Current Release:
4790    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
4791    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4792  Previous Release:
4793    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
4794    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
4795
4796
47972) iASL Compiler/Disassembler and Tools:
4798
4799iASL: Created the following enhancements for the -so option (create
4800offset table):
48011)Add offsets for the last nameseg in each namepath for every supported
4802object type
48032)Add support for Processor, Device, Thermal Zone, and Scope objects
48043)Add the actual AML opcode for the parent object of every supported
4805object type
48064)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
4807
4808Disassembler: Emit all unresolved external symbols in a single block.
4809These are external references to control methods that could not be
4810resolved, and thus, the disassembler had to make a guess at the number of
4811arguments to parse.
4812
4813iASL: The argument to the -T option (create table template) is now
4814optional. If not specified, the default table is a DSDT, typically the
4815most common case.
4816
4817----------------------------------------
481826 June 2013. Summary of changes for version 20130626:
4819
48201) ACPICA kernel-resident subsystem:
4821
4822Fixed an issue with runtime repair of the _CST object. Null or invalid
4823elements were not always removed properly. Lv Zheng.
4824
4825Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
4826FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
4827the maximum number of GPEs is 1016. Use of multiple GPE block devices
4828makes the system-wide number of GPEs essentially unlimited.
4829
4830Example Code and Data Size: These are the sizes for the OS-independent
4831acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4832debug version of the code includes the debug output trace mechanism and
4833has a much larger code and data size.
4834
4835  Current Release:
4836    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
4837    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
4838  Previous Release:
4839    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
4840    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
4841
4842
48432) iASL Compiler/Disassembler and Tools:
4844
4845Portable AcpiDump: Implemented full support for the Linux and FreeBSD
4846hosts. Now supports Linux, FreeBSD, and Windows.
4847
4848Disassembler: Added some missing types for the HEST and EINJ tables: "Set
4849Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
4850
4851iASL/Preprocessor: Implemented full support for nested
4852#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
4853
4854Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
4855max. The original purpose of this constraint was to limit the amount of
4856debug output. However, the string function in question (UtPrintString) is
4857now used for the disassembler also, where 256 bytes is insufficient.
4858Reported by RehabMan@GitHub.
4859
4860iASL/DataTables: Fixed some problems and issues with compilation of DMAR
4861tables. ACPICA BZ 999. Lv Zheng.
4862
4863iASL: Fixed a couple of error exit issues that could result in a "Could
4864not delete <file>" message during ASL compilation.
4865
4866AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
4867the actual signatures for these tables are "FACP" and "APIC",
4868respectively.
4869
4870AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
4871tables are allowed to have multiple instances.
4872
4873----------------------------------------
487417 May 2013. Summary of changes for version 20130517:
4875
48761) ACPICA kernel-resident subsystem:
4877
4878Fixed a regression introduced in version 20130328 for _INI methods. This
4879change fixes a problem introduced in 20130328 where _INI methods are no
4880longer executed properly because of a memory block that was not
4881initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
4882<tomasz.nowicki@linaro.org>.
4883
4884Fixed a possible problem with the new extended sleep registers in the
4885ACPI
48865.0 FADT. Do not use these registers (even if populated) unless the HW-
4887reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
48881020. Lv Zheng.
4889
4890Implemented return value repair code for _CST predefined objects: Sort
4891the
4892list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
4893
4894Implemented a debug-only option to disable loading of SSDTs from the
4895RSDT/XSDT during ACPICA initialization. This can be useful for debugging
4896ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
4897acglobal.h - ACPICA BZ 1005. Lv Zheng.
4898
4899Fixed some issues in the ACPICA initialization and termination code:
4900Tomasz Nowicki <tomasz.nowicki@linaro.org>
49011) Clear events initialized flag upon event component termination. ACPICA
4902BZ 1013.
49032) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
49043) Delete global lock pending lock during termination. ACPICA BZ 1012.
49054) Clear debug buffer global on termination to prevent possible multiple
4906delete. ACPICA BZ 1010.
4907
4908Standardized all switch() blocks across the entire source base. After
4909many
4910years, different formatting for switch() had crept in. This change makes
4911the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
4912
4913Split some files to enhance ACPICA modularity and configurability:
49141) Split buffer dump routines into utilities/utbuffer.c
49152) Split internal error message routines into utilities/uterror.c
49163) Split table print utilities into tables/tbprint.c
49174) Split iASL command-line option processing into asloptions.c
4918
4919Makefile enhancements:
49201) Support for all new files above.
49212) Abort make on errors from any subcomponent. Chao Guan.
49223) Add build support for Apple Mac OS X. Liang Qi.
4923
4924Example Code and Data Size: These are the sizes for the OS-independent
4925acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4926debug version of the code includes the debug output trace mechanism and
4927has a much larger code and data size.
4928
4929  Current Release:
4930    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
4931    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
4932  Previous Release:
4933    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
4934    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
4935
4936
49372) iASL Compiler/Disassembler and Tools:
4938
4939New utility: Implemented an easily portable version of the acpidump
4940utility to extract ACPI tables from the system (or a file) in an ASCII
4941hex
4942dump format. The top-level code implements the various command line
4943options, file I/O, and table dump routines. To port to a new host, only
4944three functions need to be implemented to get tables -- since this
4945functionality is OS-dependent. See the tools/acpidump/apmain.c module and
4946the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
49471) The Windows version obtains the ACPI tables from the Registry.
49482) The Linux version is under development.
49493) Other hosts - If an OS-dependent module is submitted, it will be
4950distributed with ACPICA.
4951
4952iASL: Fixed a regression for -D preprocessor option (define symbol). A
4953restructuring/change to the initialization sequence caused this option to
4954no longer work properly.
4955
4956iASL: Implemented a mechanism to disable specific warnings and remarks.
4957Adds a new command line option, "-vw <messageid> as well as "#pragma
4958disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
4959
4960iASL: Fix for too-strict package object validation. The package object
4961validation for return values from the predefined names is a bit too
4962strict, it does not allow names references within the package (which will
4963be resolved at runtime.) These types of references cannot be validated at
4964compile time. This change ignores named references within package objects
4965for names that return or define static packages.
4966
4967Debugger: Fixed the 80-character command line limitation for the History
4968command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
4969
4970iASL: Added control method and package support for the -so option
4971(generates AML offset table for BIOS support.)
4972
4973iASL: issue a remark if a non-serialized method creates named objects. If
4974a thread blocks within the method for any reason, and another thread
4975enters the method, the method will fail because an attempt will be made
4976to
4977create the same (named) object twice. In this case, issue a remark that
4978the method should be marked serialized. NOTE: may become a warning later.
4979ACPICA BZ 909.
4980
4981----------------------------------------
498218 April 2013. Summary of changes for version 20130418:
4983
49841) ACPICA kernel-resident subsystem:
4985
4986Fixed a possible buffer overrun during some rare but specific field unit
4987read operations. This overrun can only happen if the DSDT version is 1 --
4988meaning that all AML integers are 32 bits -- and the field length is
4989between 33 and 55 bits long. During the read, an internal buffer object
4990is
4991created for the field unit because the field is larger than an integer
4992(32
4993bits). However, in this case, the buffer will be incorrectly written
4994beyond the end because the buffer length is less than the internal
4995minimum
4996of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
4997long, but a full 8 bytes will be written.
4998
4999Updated the Embedded Controller "orphan" _REG method support. This refers
5000to _REG methods under the EC device that have no corresponding operation
5001region. This is allowed by the ACPI specification. This update removes a
5002dependency on the existence an ECDT table. It will execute an orphan _REG
5003method as long as the operation region handler for the EC is installed at
5004the EC device node and not the namespace root. Rui Zhang (original
5005update), Bob Moore (update/integrate).
5006
5007Implemented run-time argument typechecking for all predefined ACPI names
5008(_STA, _BIF, etc.) This change performs object typechecking on all
5009incoming arguments for all predefined names executed via
5010AcpiEvaluateObject. This ensures that ACPI-related device drivers are
5011passing correct object types as well as the correct number of arguments
5012(therefore identifying any issues immediately). Also, the ASL/namespace
5013definition of the predefined name is checked against the ACPI
5014specification for the proper argument count. Adds one new file,
5015nsarguments.c
5016
5017Changed an exception code for the ASL UnLoad() operator. Changed the
5018exception code for the case where the input DdbHandle is invalid, from
5019AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
5020
5021Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
5022global makefile. The use of this flag causes compiler errors on earlier
5023versions of GCC, so it has been removed for compatibility.
5024
5025Miscellaneous cleanup:
50261) Removed some unused/obsolete macros
50272) Fixed a possible memory leak in the _OSI support
50283) Removed an unused variable in the predefined name support
50294) Windows OSL: remove obsolete reference to a memory list field
5030
5031Example Code and Data Size: These are the sizes for the OS-independent
5032acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5033debug version of the code includes the debug output trace mechanism and
5034has a much larger code and data size.
5035
5036  Current Release:
5037    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
5038    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
5039  Previous Release:
5040    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
5041    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
5042
5043
50442) iASL Compiler/Disassembler and Tools:
5045
5046AcpiExec: Added installation of a handler for the SystemCMOS address
5047space. This prevents control method abort if a method accesses this
5048space.
5049
5050AcpiExec: Added support for multiple EC devices, and now install EC
5051operation region handler(s) at the actual EC device instead of the
5052namespace root. This reflects the typical behavior of host operating
5053systems.
5054
5055AcpiExec: Updated to ensure that all operation region handlers are
5056installed before the _REG methods are executed. This prevents a _REG
5057method from aborting if it accesses an address space has no handler.
5058AcpiExec installs a handler for every possible address space.
5059
5060Debugger: Enhanced the "handlers" command to display non-root handlers.
5061This change enhances the handlers command to display handlers associated
5062with individual devices throughout the namespace, in addition to the
5063currently supported display of handlers associated with the root
5064namespace
5065node.
5066
5067ASL Test Suite: Several test suite errors have been identified and
5068resolved, reducing the total error count during execution. Chao Guan.
5069
5070----------------------------------------
507128 March 2013. Summary of changes for version 20130328:
5072
50731) ACPICA kernel-resident subsystem:
5074
5075Fixed several possible race conditions with the internal object reference
5076counting mechanism. Some of the external ACPICA interfaces update object
5077reference counts without holding the interpreter or namespace lock. This
5078change adds a spinlock to protect reference count updates on the internal
5079ACPICA objects. Reported by and with assistance from Andriy Gapon
5080(avg@FreeBSD.org).
5081
5082FADT support: Removed an extraneous warning for very large GPE register
5083sets. This change removes a size mismatch warning if the legacy length
5084field for a GPE register set is larger than the 64-bit GAS structure can
5085accommodate. GPE register sets can be larger than the 255-bit width
5086limitation of the GAS structure. Linn Crosetto (linn@hp.com).
5087
5088_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
5089return from this interface. Handles a possible timeout case if
5090ACPI_WAIT_FOREVER is modified by the host to be a value less than
5091"forever". Jung-uk Kim.
5092
5093Predefined name support: Add allowed/required argument type information
5094to
5095the master predefined info table. This change adds the infrastructure to
5096enable typechecking on incoming arguments for all predefined
5097methods/objects. It does not actually contain the code that will fully
5098utilize this information, this is still under development. Also condenses
5099some duplicate code for the predefined names into a new module,
5100utilities/utpredef.c
5101
5102Example Code and Data Size: These are the sizes for the OS-independent
5103acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5104debug version of the code includes the debug output trace mechanism and
5105has a much larger code and data size.
5106
5107  Previous Release:
5108    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
5109    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
5110  Current Release:
5111    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
5112    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
5113
5114
51152) iASL Compiler/Disassembler and Tools:
5116
5117iASL: Implemented a new option to simplify the development of ACPI-
5118related
5119BIOS code. Adds support for a new "offset table" output file. The -so
5120option will create a C table containing the AML table offsets of various
5121named objects in the namespace so that BIOS code can modify them easily
5122at
5123boot time. This can simplify BIOS runtime code by eliminating expensive
5124searches for "magic values", enhancing boot times and adding greater
5125reliability. With assistance from Lee Hamel.
5126
5127iASL: Allow additional predefined names to return zero-length packages.
5128Now, all predefined names that are defined by the ACPI specification to
5129return a "variable-length package of packages" are allowed to return a
5130zero length top-level package. This allows the BIOS to tell the host that
5131the requested feature is not supported, and supports existing BIOS/ASL
5132code and practices.
5133
5134iASL: Changed the "result not used" warning to an error. This is the case
5135where an ASL operator is effectively a NOOP because the result of the
5136operation is not stored anywhere. For example:
5137    Add (4, Local0)
5138There is no target (missing 3rd argument), nor is the function return
5139value used. This is potentially a very serious problem -- since the code
5140was probably intended to do something, but for whatever reason, the value
5141was not stored. Therefore, this issue has been upgraded from a warning to
5142an error.
5143
5144AcpiHelp: Added allowable/required argument types to the predefined names
5145info display. This feature utilizes the recent update to the predefined
5146names table (above).
5147
5148----------------------------------------
514914 February 2013. Summary of changes for version 20130214:
5150
51511) ACPICA Kernel-resident Subsystem:
5152
5153Fixed a possible regression on some hosts: Reinstated the safe return
5154macros (return_ACPI_STATUS, etc.) that ensure that the argument is
5155evaluated only once. Although these macros are not needed for the ACPICA
5156code itself, they are often used by ACPI-related host device drivers
5157where
5158the safe feature may be necessary.
5159
5160Fixed several issues related to the ACPI 5.0 reduced hardware support
5161(SOC): Now ensure that if the platform declares itself as hardware-
5162reduced
5163via the FADT, the following functions become NOOPs (and always return
5164AE_OK) because ACPI is always enabled by definition on these machines:
5165  AcpiEnable
5166  AcpiDisable
5167  AcpiHwGetMode
5168  AcpiHwSetMode
5169
5170Dynamic Object Repair: Implemented additional runtime repairs for
5171predefined name return values. Both of these repairs can simplify code in
5172the related device drivers that invoke these methods:
51731) For the _STR and _MLS names, automatically repair/convert an ASCII
5174string to a Unicode buffer.
51752) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
5176a
5177lone end tag descriptor in the following cases: A Return(0) was executed,
5178a null buffer was returned, or no object at all was returned (non-slack
5179mode only). Adds a new file, nsconvert.c
5180ACPICA BZ 998. Bob Moore, Lv Zheng.
5181
5182Resource Manager: Added additional code to prevent possible infinite
5183loops
5184while traversing corrupted or ill-formed resource template buffers. Check
5185for zero-length resource descriptors in all code that loops through
5186resource templates (the length field is used to index through the
5187template). This change also hardens the external AcpiWalkResources and
5188AcpiWalkResourceBuffer interfaces.
5189
5190Local Cache Manager: Enhanced the main data structure to eliminate an
5191unnecessary mechanism to access the next object in the list. Actually
5192provides a small performance enhancement for hosts that use the local
5193ACPICA cache manager. Jung-uk Kim.
5194
5195Example Code and Data Size: These are the sizes for the OS-independent
5196acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5197debug version of the code includes the debug output trace mechanism and
5198has a much larger code and data size.
5199
5200  Previous Release:
5201    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
5202    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
5203  Current Release:
5204    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
5205    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
5206
5207
52082) iASL Compiler/Disassembler and Tools:
5209
5210iASL/Disassembler: Fixed several issues with the definition of the ACPI
52115.0 RASF table (RAS Feature Table). This change incorporates late changes
5212that were made to the ACPI 5.0 specification.
5213
5214iASL/Disassembler: Added full support for the following new ACPI tables:
5215  1) The MTMR table (MID Timer Table)
5216  2) The VRTC table (Virtual Real Time Clock Table).
5217Includes header file, disassembler, table compiler, and template support
5218for both tables.
5219
5220iASL: Implemented compile-time validation of package objects returned by
5221predefined names. This new feature validates static package objects
5222returned by the various predefined names defined to return packages. Both
5223object types and package lengths are validated, for both parent packages
5224and sub-packages, if any. The code is similar in structure and behavior
5225to
5226the runtime repair mechanism within the AML interpreter and uses the
5227existing predefined name information table. Adds a new file, aslprepkg.c.
5228ACPICA BZ 938.
5229
5230iASL: Implemented auto-detection of binary ACPI tables for disassembly.
5231This feature detects a binary file with a valid ACPI table header and
5232invokes the disassembler automatically. Eliminates the need to
5233specifically invoke the disassembler with the -d option. ACPICA BZ 862.
5234
5235iASL/Disassembler: Added several warnings for the case where there are
5236unresolved control methods during the disassembly. This can potentially
5237cause errors when the output file is compiled, because the disassembler
5238assumes zero method arguments in these cases (it cannot determine the
5239actual number of arguments without resolution/definition of the method).
5240
5241Debugger: Added support to display all resources with a single command.
5242Invocation of the resources command with no arguments will now display
5243all
5244resources within the current namespace.
5245
5246AcpiHelp: Added descriptive text for each ACPICA exception code displayed
5247via the -e option.
5248
5249----------------------------------------
525017 January 2013. Summary of changes for version 20130117:
5251
52521) ACPICA Kernel-resident Subsystem:
5253
5254Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
5255return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
5256objects to return a package containing one integer, most BIOS code
5257returns
5258two integers and the previous code reflects that. However, we also need
5259to
5260support BIOS code that actually implements to the ACPI spec, and this
5261change reflects this.
5262
5263Fixed two issues with the ACPI_DEBUG_PRINT macros:
52641) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
5265C compilers that require this support.
52662) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
5267ACPI_DEBUG is already used by many of the various hosts.
5268
5269Updated all ACPICA copyrights and signons to 2013. Added the 2013
5270copyright to all module headers and signons, including the standard Linux
5271header. This affects virtually every file in the ACPICA core subsystem,
5272iASL compiler, all ACPICA utilities, and the test suites.
5273
5274Example Code and Data Size: These are the sizes for the OS-independent
5275acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5276debug version of the code includes the debug output trace mechanism and
5277has a much larger code and data size.
5278
5279  Previous Release:
5280    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
5281    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
5282  Current Release:
5283    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
5284    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
5285
5286
52872) iASL Compiler/Disassembler and Tools:
5288
5289Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
5290prevent a possible fault on some hosts. Some C libraries modify the arg
5291pointer parameter to vfprintf making it difficult to call it twice in the
5292AcpiOsVprintf function. Use a local buffer to workaround this issue. This
5293does not affect the Windows OSL since the Win C library does not modify
5294the arg pointer. Chao Guan, Bob Moore.
5295
5296iASL: Fixed a possible infinite loop when the maximum error count is
5297reached. If an output file other than the .AML file is specified (such as
5298a listing file), and the maximum number of errors is reached, do not
5299attempt to flush data to the output file(s) as the compiler is aborting.
5300This can cause an infinite loop as the max error count code essentially
5301keeps calling itself.
5302
5303iASL/Disassembler: Added an option (-in) to ignore NOOP
5304opcodes/operators.
5305Implemented for both the compiler and the disassembler. Often, the NOOP
5306opcode is used as padding for packages that are changed dynamically by
5307the
5308BIOS. When disassembled and recompiled, these NOOPs will cause syntax
5309errors. This option causes the disassembler to ignore all NOOP opcodes
5310(0xA3), and it also causes the compiler to ignore all ASL source code
5311NOOP
5312statements as well.
5313
5314Debugger: Enhanced the Sleep command to execute all sleep states. This
5315change allows Sleep to be invoked with no arguments and causes the
5316debugger to execute all of the sleep states, 0-5, automatically.
5317
5318----------------------------------------
531920 December 2012. Summary of changes for version 20121220:
5320
53211) ACPICA Kernel-resident Subsystem:
5322
5323Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
5324alternate entry point for AcpiWalkResources and improves the usability of
5325the resource manager by accepting as input a buffer containing the output
5326of either a _CRS, _PRS, or _AEI method. The key functionality is that the
5327input buffer is not deleted by this interface so that it can be used by
5328the host later. See the ACPICA reference for details.
5329
5330Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
5331(DSDT version < 2). The constant will be truncated and this warning
5332reflects that behavior.
5333
5334Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
5335ExtendedInterrupt, and GpioInt descriptors. This change adds support to
5336both get and set the new wake bit in these descriptors, separately from
5337the existing share bit. Reported by Aaron Lu.
5338
5339Interpreter: Fix Store() when an implicit conversion is not possible. For
5340example, in the cases such as a store of a string to an existing package
5341object, implement the store as a CopyObject(). This is a small departure
5342from the ACPI specification which states that the control method should
5343be
5344aborted in this case. However, the ASLTS suite depends on this behavior.
5345
5346Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
5347macros: check if debug output is currently enabled as soon as possible to
5348minimize performance impact if debug is in fact not enabled.
5349
5350Source code restructuring: Cleanup to improve modularity. The following
5351new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
5352psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
5353Associated makefiles and project files have been updated.
5354
5355Changed an exception code for LoadTable operator. For the case where one
5356of the input strings is too long, change the returned exception code from
5357AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
5358
5359Fixed a possible memory leak in dispatcher error path. On error, delete
5360the mutex object created during method mutex creation. Reported by
5361tim.gardner@canonical.com.
5362
5363Example Code and Data Size: These are the sizes for the OS-independent
5364acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5365debug version of the code includes the debug output trace mechanism and
5366has a much larger code and data size.
5367
5368  Previous Release:
5369    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
5370    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5371  Current Release:
5372    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
5373    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
5374
5375
53762) iASL Compiler/Disassembler and Tools:
5377
5378iASL: Disallow a method call as argument to the ObjectType ASL operator.
5379This change tracks an errata to the ACPI 5.0 document. The AML grammar
5380will not allow the interpreter to differentiate between a method and a
5381method invocation when these are used as an argument to the ObjectType
5382operator. The ACPI specification change is to disallow a method
5383invocation
5384(UserTerm) for the ObjectType operator.
5385
5386Finish support for the TPM2 and CSRT tables in the headers, table
5387compiler, and disassembler.
5388
5389Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
5390always expires immediately if the semaphore is not available. The
5391original
5392code was using a relative-time timeout, but sem_timedwait requires the
5393use
5394of an absolute time.
5395
5396iASL: Added a remark if the Timer() operator is used within a 32-bit
5397table. This operator returns a 64-bit time value that will be truncated
5398within a 32-bit table.
5399
5400iASL Source code restructuring: Cleanup to improve modularity. The
5401following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
5402aslmethod.c, and aslfileio.c. Associated makefiles and project files have
5403been updated.
5404
5405
5406----------------------------------------
540714 November 2012. Summary of changes for version 20121114:
5408
54091) ACPICA Kernel-resident Subsystem:
5410
5411Implemented a performance enhancement for ACPI/AML Package objects. This
5412change greatly increases the performance of Package objects within the
5413interpreter. It changes the processing of reference counts for packages
5414by
5415optimizing for the most common case where the package sub-objects are
5416either Integers, Strings, or Buffers. Increases the overall performance
5417of
5418the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
54192X.)
5420Chao Guan. ACPICA BZ 943.
5421
5422Implemented and deployed common macros to extract flag bits from resource
5423descriptors. Improves readability and maintainability of the code. Fixes
5424a
5425problem with the UART serial bus descriptor for the number of data bits
5426flags (was incorrectly 2 bits, should be 3).
5427
5428Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
5429of the macros and changed the SETx macros to the style of (destination,
5430source). Also added ACPI_CASTx companion macros. Lv Zheng.
5431
5432Example Code and Data Size: These are the sizes for the OS-independent
5433acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5434debug version of the code includes the debug output trace mechanism and
5435has a much larger code and data size.
5436
5437  Previous Release:
5438    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
5439    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5440  Current Release:
5441    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
5442    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5443
5444
54452) iASL Compiler/Disassembler and Tools:
5446
5447Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
5448adds the ShareAndWake and ExclusiveAndWake flags which were added to the
5449Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
5450
5451Disassembler: Fixed a problem with external declaration generation. Fixes
5452a problem where an incorrect pathname could be generated for an external
5453declaration if the original reference to the object includes leading
5454carats (^). ACPICA BZ 984.
5455
5456Debugger: Completed a major update for the Disassemble<method> command.
5457This command was out-of-date and did not properly disassemble control
5458methods that had any reasonable complexity. This fix brings the command
5459up
5460to the same level as the rest of the disassembler. Adds one new file,
5461dmdeferred.c, which is existing code that is now common with the main
5462disassembler and the debugger disassemble command. ACPICA MZ 978.
5463
5464iASL: Moved the parser entry prototype to avoid a duplicate declaration.
5465Newer versions of Bison emit this prototype, so moved the prototype out
5466of
5467the iASL header to where it is actually used in order to avoid a
5468duplicate
5469declaration.
5470
5471iASL/Tools: Standardized use of the stream I/O functions:
5472  1) Ensure check for I/O error after every fopen/fread/fwrite
5473  2) Ensure proper order of size/count arguments for fread/fwrite
5474  3) Use test of (Actual != Requested) after all fwrite, and most fread
5475  4) Standardize I/O error messages
5476Improves reliability and maintainability of the code. Bob Moore, Lv
5477Zheng.
5478ACPICA BZ 981.
5479
5480Disassembler: Prevent duplicate External() statements. During generation
5481of external statements, detect similar pathnames that are actually
5482duplicates such as these:
5483  External (\ABCD)
5484  External (ABCD)
5485Remove all leading '\' characters from pathnames during the external
5486statement generation so that duplicates will be detected and tossed.
5487ACPICA BZ 985.
5488
5489Tools: Replace low-level I/O with stream I/O functions. Replace
5490open/read/write/close with the stream I/O equivalents
5491fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
5492Moore.
5493
5494AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
5495name header so that AcpiXtract recognizes the output file/table.
5496
5497iASL: Remove obsolete -2 option flag. Originally intended to force the
5498compiler/disassembler into an ACPI 2.0 mode, this was never implemented
5499and the entire concept is now obsolete.
5500
5501----------------------------------------
550218 October 2012. Summary of changes for version 20121018:
5503
5504
55051) ACPICA Kernel-resident Subsystem:
5506
5507Updated support for the ACPI 5.0 MPST table. Fixes some problems
5508introduced by late changes to the table as it was added to the ACPI 5.0
5509specification. Includes header, disassembler, and data table compiler
5510support as well as a new version of the MPST template.
5511
5512AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
55135.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
5514methods: _HID, _CID, and _UID.
5515
5516Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
5517ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
5518name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
5519names for their various drivers. Affects the AcpiGetObjectInfo external
5520interface, and other internal interfaces as well.
5521
5522Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
5523This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
5524on machines that support non-aligned transfers. Optimizes for this case
5525rather than using a strncpy. With assistance from Zheng Lv.
5526
5527Resource Manager: Small fix for buffer size calculation. Fixed a one byte
5528error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
5529
5530Added a new debug print message for AML mutex objects that are force-
5531released. At control method termination, any currently acquired mutex
5532objects are force-released. Adds a new debug-only message for each one
5533that is released.
5534
5535Audited/updated all ACPICA return macros and the function debug depth
5536counter: 1) Ensure that all functions that use the various TRACE macros
5537also use the appropriate ACPICA return macros. 2) Ensure that all normal
5538return statements surround the return expression (value) with parens to
5539ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
5540Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
5541
5542Global source code changes/maintenance: All extra lines at the start and
5543end of each source file have been removed for consistency. Also, within
5544comments, all new sentences start with a single space instead of a double
5545space, again for consistency across the code base.
5546
5547Example Code and Data Size: These are the sizes for the OS-independent
5548acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5549debug version of the code includes the debug output trace mechanism and
5550has a much larger code and data size.
5551
5552  Previous Release:
5553    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
5554    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
5555  Current Release:
5556    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
5557    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5558
5559
55602) iASL Compiler/Disassembler and Tools:
5561
5562AcpiExec: Improved the algorithm used for memory leak/corruption
5563detection. Added some intelligence to the code that maintains the global
5564list of allocated memory. The list is now ordered by allocated memory
5565address, significantly improving performance. When running AcpiExec on
5566the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
5567on the platform and/or the environment. Note, this performance
5568enhancement affects the AcpiExec utility only, not the kernel-resident
5569ACPICA code.
5570
5571Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
5572the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
5573incorrect table offset reported for invalid opcodes. Report the original
557432-bit value for bad ACPI_NAMEs (as well as the repaired name.)
5575
5576Disassembler: Enhanced the -vt option to emit the binary table data in
5577hex format to assist with debugging.
5578
5579Fixed a potential filename buffer overflow in osunixdir.c. Increased the
5580size of file structure. Colin Ian King.
5581
5582----------------------------------------
558313 September 2012. Summary of changes for version 20120913:
5584
5585
55861) ACPICA Kernel-resident Subsystem:
5587
5588ACPI 5.0: Added two new notify types for the Hardware Error Notification
5589Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
5590and
5591MCE(6).
5592
5593Table Manager: Merged/removed duplicate code in the root table resize
5594functions. One function is external, the other is internal. Lv Zheng,
5595ACPICA
5596BZ 846.
5597
5598Makefiles: Completely removed the obsolete "Linux" makefiles under
5599acpica/generate/linux. These makefiles are obsolete and have been
5600replaced
5601by
5602the generic unix makefiles under acpica/generate/unix.
5603
5604Makefiles: Ensure that binary files always copied properly. Minor rule
5605change
5606to ensure that the final binary output files are always copied up to the
5607appropriate binary directory (bin32 or bin64.)
5608
5609Example Code and Data Size: These are the sizes for the OS-independent
5610acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5611debug
5612version of the code includes the debug output trace mechanism and has a
5613much
5614larger code and data size.
5615
5616  Previous Release:
5617    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
5618    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
5619  Current Release:
5620    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
5621    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
5622
5623
56242) iASL Compiler/Disassembler and Tools:
5625
5626Disassembler: Fixed a possible fault during the disassembly of resource
5627descriptors when a second parse is required because of the invocation of
5628external control methods within the table. With assistance from
5629adq@lidskialf.net. ACPICA BZ 976.
5630
5631iASL: Fixed a namepath optimization problem. An error can occur if the
5632parse
5633node that contains the namepath to be optimized does not have a parent
5634node
5635that is a named object. This change fixes the problem.
5636
5637iASL: Fixed a regression where the AML file is not deleted on errors. The
5638AML
5639output file should be deleted if there are any errors during the
5640compiler.
5641The
5642only exception is if the -f (force output) option is used. ACPICA BZ 974.
5643
5644iASL: Added a feature to automatically increase internal line buffer
5645sizes.
5646Via realloc(), automatically increase the internal line buffer sizes as
5647necessary to support very long source code lines. The current version of
5648the
5649preprocessor requires a buffer long enough to contain full source code
5650lines.
5651This change increases the line buffer(s) if the input lines go beyond the
5652current buffer size. This eliminates errors that occurred when a source
5653code
5654line was longer than the buffer.
5655
5656iASL: Fixed a problem with constant folding in method declarations. The
5657SyncLevel term is a ByteConstExpr, and incorrect code would be generated
5658if a
5659Type3 opcode was used.
5660
5661Debugger: Improved command help support. For incorrect argument count,
5662display
5663full help for the command. For help command itself, allow an argument to
5664specify a command.
5665
5666Test Suites: Several bug fixes for the ASLTS suite reduces the number of
5667errors during execution of the suite. Guan Chao.
5668
5669----------------------------------------
567016 August 2012. Summary of changes for version 20120816:
5671
5672
56731) ACPICA Kernel-resident Subsystem:
5674
5675Removed all use of the deprecated _GTS and _BFS predefined methods. The
5676_GTS
5677(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
5678deprecated and will probably be removed from the ACPI specification.
5679Windows
5680does not invoke them, and reportedly never will. The final nail in the
5681coffin
5682is that the ACPI specification states that these methods must be run with
5683interrupts off, which is not going to happen in a kernel interpreter.
5684Note:
5685Linux has removed all use of the methods also. It was discovered that
5686invoking these functions caused failures on some machines, probably
5687because
5688they were never tested since Windows does not call them. Affects two
5689external
5690interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
5691ACPICA BZ 969.
5692
5693Implemented support for complex bit-packed buffers returned from the _PLD
5694(Physical Location of Device) predefined method. Adds a new external
5695interface, AcpiDecodePldBuffer that parses the buffer into a more usable
5696C
5697structure. Note: C Bitfields cannot be used for this type of predefined
5698structure since the memory layout of individual bitfields is not defined
5699by
5700the C language. In addition, there are endian concerns where a compiler
5701will
5702change the bitfield ordering based on the machine type. The new ACPICA
5703interface eliminates these issues, and should be called after _PLD is
5704executed. ACPICA BZ 954.
5705
5706Implemented a change to allow a scope change to root (via "Scope (\)")
5707during
5708execution of module-level ASL code (code that is executed at table load
5709time.) Lin Ming.
5710
5711Added the Windows8/Server2012 string for the _OSI method. This change
5712adds
5713a
5714new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
57152012.
5716
5717Added header support for the new ACPI tables DBG2 (Debug Port Table Type
57182)
5719and CSRT (Core System Resource Table).
5720
5721Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
5722names. This simplifies access to the buffers returned by these predefined
5723names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
5724
5725GPE support: Removed an extraneous parameter from the various low-level
5726internal GPE functions. Tang Feng.
5727
5728Removed the linux makefiles from the unix packages. The generate/linux
5729makefiles are obsolete and have been removed from the unix tarball
5730release
5731packages. The replacement makefiles are under generate/unix, and there is
5732a
5733top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
5734
5735Updates for Unix makefiles:
57361) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
57372) Update linker flags (move to end of command line) for AcpiExec
5738utility.
5739Guan Chao.
5740
5741Split ACPICA initialization functions to new file, utxfinit.c. Split from
5742utxface.c to improve modularity and reduce file size.
5743
5744Example Code and Data Size: These are the sizes for the OS-independent
5745acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5746debug version of the code includes the debug output trace mechanism and
5747has a
5748much larger code and data size.
5749
5750  Previous Release:
5751    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
5752    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
5753  Current Release:
5754    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
5755    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
5756
5757
57582) iASL Compiler/Disassembler and Tools:
5759
5760iASL: Fixed a problem with constant folding for fixed-length constant
5761expressions. The constant-folding code was not being invoked for constant
5762expressions that allow the use of type 3/4/5 opcodes to generate
5763constants
5764for expressions such as ByteConstExpr, WordConstExpr, etc. This could
5765result
5766in the generation of invalid AML bytecode. ACPICA BZ 970.
5767
5768iASL: Fixed a generation issue on newer versions of Bison. Newer versions
5769apparently automatically emit some of the necessary externals. This
5770change
5771handles these versions in order to eliminate generation warnings.
5772
5773Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
5774
5775Disassembler: Add support to decode _PLD buffers. The decoded buffer
5776appears
5777within comments in the output file.
5778
5779Debugger: Fixed a regression with the "Threads" command where
5780AE_BAD_PARAMETER was always returned.
5781
5782----------------------------------------
578311 July 2012. Summary of changes for version 20120711:
5784
57851) ACPICA Kernel-resident Subsystem:
5786
5787Fixed a possible fault in the return package object repair code. Fixes a
5788problem that can occur when a lone package object is wrapped with an
5789outer
5790package object in order to force conformance to the ACPI specification.
5791Can
5792affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
5793_DLM,
5794_CSD, _PSD, _TSD.
5795
5796Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
5797PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
5798ARB_DIS bit must be implemented in the host-dependent C3 processor power
5799state
5800support. Note, ARB_DIS is obsolete and only applies to older chipsets,
5801both
5802Intel and other vendors. (for Intel: ICH4-M and earlier)
5803
5804This change removes the code to disable/enable bus master arbitration
5805during
5806suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
5807causes
5808resume problems on some machines. The change has been in use for over
5809seven
5810years within Linux.
5811
5812Implemented two new external interfaces to support host-directed dynamic
5813ACPI
5814table load and unload. They are intended to simplify the host
5815implementation
5816of hot-plug support:
5817  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
5818  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
5819table.
5820See the ACPICA reference for additional details. Adds one new file,
5821components/tables/tbxfload.c
5822
5823Implemented and deployed two new interfaces for errors and warnings that
5824are
5825known to be caused by BIOS/firmware issues:
5826  AcpiBiosError: Prints "ACPI Firmware Error" message.
5827  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
5828Deployed these new interfaces in the ACPICA Table Manager code for ACPI
5829table
5830and FADT errors. Additional deployment to be completed as appropriate in
5831the
5832future. The associated conditional macros are ACPI_BIOS_ERROR and
5833ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
5834ACPICA
5835BZ
5836843.
5837
5838Implicit notify support: ensure that no memory allocation occurs within a
5839critical region. This fix moves a memory allocation outside of the time
5840that a
5841spinlock is held. Fixes issues on systems that do not allow this
5842behavior.
5843Jung-uk Kim.
5844
5845Split exception code utilities and tables into a new file,
5846utilities/utexcep.c
5847
5848Example Code and Data Size: These are the sizes for the OS-independent
5849acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5850debug
5851version of the code includes the debug output trace mechanism and has a
5852much
5853larger code and data size.
5854
5855  Previous Release:
5856    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
5857    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
5858  Current Release:
5859    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
5860    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
5861
5862
58632) iASL Compiler/Disassembler and Tools:
5864
5865iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
5866of
58670. Jung-uk Kim.
5868
5869Debugger: Enhanced the "tables" command to emit additional information
5870about
5871the current set of ACPI tables, including the owner ID and flags decode.
5872
5873Debugger: Reimplemented the "unload" command to use the new
5874AcpiUnloadParentTable external interface. This command was disable
5875previously
5876due to need for an unload interface.
5877
5878AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
5879option
5880will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
5881
5882----------------------------------------
588320 June 2012. Summary of changes for version 20120620:
5884
5885
58861) ACPICA Kernel-resident Subsystem:
5887
5888Implemented support to expand the "implicit notify" feature to allow
5889multiple
5890devices to be notified by a single GPE. This feature automatically
5891generates a
5892runtime device notification in the absence of a BIOS-provided GPE control
5893method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
5894notify is
5895provided by ACPICA for Windows compatibility, and is a workaround for
5896BIOS
5897AML
5898code errors. See the description of the AcpiSetupGpeForWake interface in
5899the
5900APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
5901
5902Changed some comments and internal function names to simplify and ensure
5903correctness of the Linux code translation. No functional changes.
5904
5905Example Code and Data Size: These are the sizes for the OS-independent
5906acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5907debug
5908version of the code includes the debug output trace mechanism and has a
5909much
5910larger code and data size.
5911
5912  Previous Release:
5913    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
5914    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
5915  Current Release:
5916    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
5917    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
5918
5919
59202) iASL Compiler/Disassembler and Tools:
5921
5922Disassembler: Added support to emit short, commented descriptions for the
5923ACPI
5924predefined names in order to improve the readability of the disassembled
5925output. ACPICA BZ 959. Changes include:
5926  1) Emit descriptions for all standard predefined names (_INI, _STA,
5927_PRW,
5928etc.)
5929  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
5930  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
5931etc.)
5932
5933AcpiSrc: Fixed several long-standing Linux code translation issues.
5934Argument
5935descriptions in function headers are now translated properly to lower
5936case
5937and
5938underscores. ACPICA BZ 961. Also fixes translation problems such as
5939these:
5940(old -> new)
5941  i_aSL -> iASL
5942  00-7_f -> 00-7F
5943  16_k -> 16K
5944  local_fADT -> local_FADT
5945  execute_oSI -> execute_OSI
5946
5947iASL: Fixed a problem where null bytes were inadvertently emitted into
5948some
5949listing files.
5950
5951iASL: Added the existing debug options to the standard help screen. There
5952are
5953no longer two different help screens. ACPICA BZ 957.
5954
5955AcpiHelp: Fixed some typos in the various predefined name descriptions.
5956Also
5957expand some of the descriptions where appropriate.
5958
5959iASL: Fixed the -ot option (display compile times/statistics). Was not
5960working
5961properly for standard output; only worked for the debug file case.
5962
5963----------------------------------------
596418 May 2012. Summary of changes for version 20120518:
5965
5966
59671) ACPICA Core Subsystem:
5968
5969Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
5970defined
5971to block until asynchronous events such as notifies and GPEs have
5972completed.
5973Within ACPICA, it is only called before a notify or GPE handler is
5974removed/uninstalled. It also may be useful for the host OS within related
5975drivers such as the Embedded Controller driver. See the ACPICA reference
5976for
5977additional information. ACPICA BZ 868.
5978
5979ACPI Tables: Added a new error message for a possible overflow failure
5980during
5981the conversion of FADT 32-bit legacy register addresses to internal
5982common
598364-
5984bit GAS structure representation. The GAS has a one-byte "bit length"
5985field,
5986thus limiting the register length to 255 bits. ACPICA BZ 953.
5987
5988Example Code and Data Size: These are the sizes for the OS-independent
5989acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5990debug
5991version of the code includes the debug output trace mechanism and has a
5992much
5993larger code and data size.
5994
5995  Previous Release:
5996    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
5997    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
5998  Current Release:
5999    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
6000    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
6001
6002
60032) iASL Compiler/Disassembler and Tools:
6004
6005iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
6006macro.
6007This keyword was added late in the ACPI 5.0 release cycle and was not
6008implemented until now.
6009
6010Disassembler: Added support for Operation Region externals. Adds missing
6011support for operation regions that are defined in another table, and
6012referenced locally via a Field or BankField ASL operator. Now generates
6013the
6014correct External statement.
6015
6016Disassembler: Several additional fixes for the External() statement
6017generation
6018related to some ASL operators. Also, order the External() statements
6019alphabetically in the disassembler output. Fixes the External()
6020generation
6021for
6022the Create* field, Alias, and Scope operators:
6023 1) Create* buffer field operators - fix type mismatch warning on
6024disassembly
6025 2) Alias - implement missing External support
6026 3) Scope - fix to make sure all necessary externals are emitted.
6027
6028iASL: Improved pathname support. For include files, merge the prefix
6029pathname
6030with the file pathname and eliminate unnecessary components. Convert
6031backslashes in all pathnames to forward slashes, for readability. Include
6032file
6033pathname changes affect both #include and Include() type operators.
6034
6035iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
6036end
6037of a valid line by inserting a newline and then returning the EOF during
6038the
6039next call to GetNextLine. Prevents the line from being ignored due to EOF
6040condition.
6041
6042iASL: Implemented some changes to enhance the IDE support (-vi option.)
6043Error
6044and Warning messages are now correctly recognized for both the source
6045code
6046browser and the global error and warning counts.
6047
6048----------------------------------------
604920 April 2012. Summary of changes for version 20120420:
6050
6051
60521) ACPICA Core Subsystem:
6053
6054Implemented support for multiple notify handlers. This change adds
6055support
6056to
6057allow multiple system and device notify handlers on Device, Thermal Zone,
6058and
6059Processor objects. This can simplify the host OS notification
6060implementation.
6061Also re-worked and restructured the entire notify support code to
6062simplify
6063handler installation, handler removal, notify event queuing, and notify
6064dispatch to handler(s). Note: there can still only be two global notify
6065handlers - one for system notifies and one for device notifies. There are
6066no
6067changes to the existing handler install/remove interfaces. Lin Ming, Bob
6068Moore, Rafael Wysocki.
6069
6070Fixed a regression in the package repair code where the object reference
6071count was calculated incorrectly. Regression was introduced in the commit
6072"Support to add Package wrappers".
6073
6074Fixed a couple possible memory leaks in the AML parser, in the error
6075recovery
6076path. Jesper Juhl, Lin Ming.
6077
6078Example Code and Data Size: These are the sizes for the OS-independent
6079acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6080debug version of the code includes the debug output trace mechanism and
6081has a
6082much larger code and data size.
6083
6084  Previous Release:
6085    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6086    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6087  Current Release:
6088    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6089    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
6090
6091
60922) iASL Compiler/Disassembler and Tools:
6093
6094iASL: Fixed a problem with the resource descriptor support where the
6095length
6096of the StartDependentFn and StartDependentFnNoPrio descriptors were not
6097included in cumulative descriptor offset, resulting in incorrect values
6098for
6099resource tags within resource descriptors appearing after a
6100StartDependent*
6101descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
6102
6103iASL and Preprocessor: Implemented full support for the #line directive
6104to
6105correctly track original source file line numbers through the .i
6106preprocessor
6107output file - for error and warning messages.
6108
6109iASL: Expand the allowable byte constants for address space IDs.
6110Previously,
6111the allowable range was 0x80-0xFF (user-defined spaces), now the range is
61120x0A-0xFF to allow for custom and new IDs without changing the compiler.
6113
6114iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
6115
6116iASL: Add option to completely disable the preprocessor (-Pn).
6117
6118iASL: Now emit all error/warning messages to standard error (stderr) by
6119default (instead of the previous stdout).
6120
6121ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
6122Update
6123for resource descriptor offset fix above. Update/cleanup error output
6124routines. Enable and send iASL errors/warnings to an error logfile
6125(error.txt). Send all other iASL output to a logfile (compiler.txt).
6126Fixed
6127several extraneous "unrecognized operator" messages.
6128
6129----------------------------------------
613020 March 2012. Summary of changes for version 20120320:
6131
6132
61331) ACPICA Core Subsystem:
6134
6135Enhanced the sleep/wake interfaces to optionally execute the _GTS method
6136(Going To Sleep) and the _BFS method (Back From Sleep). Windows
6137apparently
6138does not execute these methods, and therefore these methods are often
6139untested. It has been seen on some systems where the execution of these
6140methods causes errors and also prevents the machine from entering S5. It
6141is
6142therefore suggested that host operating systems do not execute these
6143methods
6144by default. In the future, perhaps these methods can be optionally
6145executed
6146based on the age of the system and/or what is the newest version of
6147Windows
6148that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
6149and
6150AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
6151Ming.
6152
6153Fixed a problem where the length of the local/common FADT was set too
6154early.
6155The local FADT table length cannot be set to the common length until the
6156original length has been examined. There is code that checks the table
6157length
6158and sets various fields appropriately. This can affect older machines
6159with
6160early FADT versions. For example, this can cause inadvertent writes to
6161the
6162CST_CNT register. Julian Anastasov.
6163
6164Fixed a mapping issue related to a physical table override. Use the
6165deferred
6166mapping mechanism for tables loaded via the physical override OSL
6167interface.
6168This allows for early mapping before the virtual memory manager is
6169available.
6170Thomas Renninger, Bob Moore.
6171
6172Enhanced the automatic return-object repair code: Repair a common problem
6173with
6174predefined methods that are defined to return a variable-length Package
6175of
6176sub-objects. If there is only one sub-object, some BIOS ASL code
6177mistakenly
6178simply returns the single object instead of a Package with one sub-
6179object.
6180This new support will repair this error by wrapping a Package object
6181around
6182the original object, creating the correct and expected Package with one
6183sub-
6184object. Names that can be repaired in this manner include: _ALR, _CSD,
6185_HPX,
6186_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
6187939.
6188
6189Changed the exception code returned for invalid ACPI paths passed as
6190parameters to external interfaces such as AcpiEvaluateObject. Was
6191AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
6192
6193Example Code and Data Size: These are the sizes for the OS-independent
6194acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6195debug
6196version of the code includes the debug output trace mechanism and has a
6197much
6198larger code and data size.
6199
6200  Previous Release:
6201    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
6202    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6203  Current Release:
6204    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6205    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6206
6207
62082) iASL Compiler/Disassembler and Tools:
6209
6210iASL: Added the infrastructure and initial implementation of a integrated
6211C-
6212like preprocessor. This will simplify BIOS development process by
6213eliminating
6214the need for a separate preprocessing step during builds. On Windows, it
6215also
6216eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
6217features including full #define() macro support are still under
6218development.
6219These preprocessor directives are supported:
6220    #define
6221    #elif
6222    #else
6223    #endif
6224    #error
6225    #if
6226    #ifdef
6227    #ifndef
6228    #include
6229    #pragma message
6230    #undef
6231    #warning
6232In addition, these new command line options are supported:
6233    -D <symbol> Define symbol for preprocessor use
6234    -li         Create preprocessed output file (*.i)
6235    -P          Preprocess only and create preprocessor output file (*.i)
6236
6237Table Compiler: Fixed a problem where the equals operator within an
6238expression
6239did not work properly.
6240
6241Updated iASL to use the current versions of Bison/Flex. Updated the
6242Windows
6243project file to invoke these tools from the standard location. ACPICA BZ
6244904.
6245Versions supported:
6246    Flex for Windows:  V2.5.4
6247    Bison for Windows: V2.4.1
6248
6249----------------------------------------
625015 February 2012. Summary of changes for version 20120215:
6251
6252
62531) ACPICA Core Subsystem:
6254
6255There have been some major changes to the sleep/wake support code, as
6256described below (a - e).
6257
6258a) The AcpiLeaveSleepState has been split into two interfaces, similar to
6259AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
6260AcpiLeaveSleepStatePrep. This allows the host to perform actions between
6261the
6262time the _BFS method is called and the _WAK method is called. NOTE: all
6263hosts
6264must update their wake/resume code or else sleep/wake will not work
6265properly.
6266Rafael Wysocki.
6267
6268b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
6269_WAK
6270method. Some machines require that the GPEs are enabled before the _WAK
6271method
6272is executed. Thomas Renninger.
6273
6274c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
6275bit.
6276Some BIOS code assumes that WAK_STS will be cleared on resume and use it
6277to
6278determine whether the system is rebooting or resuming. Matthew Garrett.
6279
6280d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
6281Sleep) to
6282match the ACPI specification requirement. Rafael Wysocki.
6283
6284e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
6285registers within the V5 FADT. This support adds two new files:
6286hardware/hwesleep.c implements the support for the new registers. Moved
6287all
6288sleep/wake external interfaces to hardware/hwxfsleep.c.
6289
6290
6291Added a new OSL interface for ACPI table overrides,
6292AcpiOsPhysicalTableOverride. This interface allows the host to override a
6293table via a physical address, instead of the logical address required by
6294AcpiOsTableOverride. This simplifies the host implementation. Initial
6295implementation by Thomas Renninger. The ACPICA implementation creates a
6296single
6297shared function for table overrides that attempts both a logical and a
6298physical override.
6299
6300Expanded the OSL memory read/write interfaces to 64-bit data
6301(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
6302transfer support for GAS register structures passed to AcpiRead and
6303AcpiWrite.
6304
6305Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
6306custom
6307build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
6308model.
6309See the ACPICA reference for details. ACPICA BZ 942. This option removes
6310about
631110% of the code and 5% of the static data, and the following hardware
6312ACPI
6313features become unavailable:
6314    PM Event and Control registers
6315    SCI interrupt (and handler)
6316    Fixed Events
6317    General Purpose Events (GPEs)
6318    Global Lock
6319    ACPI PM timer
6320    FACS table (Waking vectors and Global Lock)
6321
6322Updated the unix tarball directory structure to match the ACPICA git
6323source
6324tree. This ensures that the generic unix makefiles work properly (in
6325generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
6326867.
6327
6328Updated the return value of the _REV predefined method to integer value 5
6329to
6330reflect ACPI 5.0 support.
6331
6332Moved the external ACPI PM timer interface prototypes to the public
6333acpixf.h
6334file where they belong.
6335
6336Example Code and Data Size: These are the sizes for the OS-independent
6337acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6338debug
6339version of the code includes the debug output trace mechanism and has a
6340much
6341larger code and data size.
6342
6343  Previous Release:
6344    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
6345    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
6346  Current Release:
6347    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
6348    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6349
6350
63512) iASL Compiler/Disassembler and Tools:
6352
6353Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
6354descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
6355incorrectly displayed.
6356
6357AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
6358specification.
6359
6360----------------------------------------
636111 January 2012. Summary of changes for version 20120111:
6362
6363
63641) ACPICA Core Subsystem:
6365
6366Implemented a new mechanism to allow host device drivers to check for
6367address
6368range conflicts with ACPI Operation Regions. Both SystemMemory and
6369SystemIO
6370address spaces are supported. A new external interface,
6371AcpiCheckAddressRange,
6372allows drivers to check an address range against the ACPI namespace. See
6373the
6374ACPICA reference for additional details. Adds one new file,
6375utilities/utaddress.c. Lin Ming, Bob Moore.
6376
6377Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
6378Control
6379and
6380Status registers, update the ACPI 5.0 flags, and update internal data
6381structures to handle an FADT larger than 256 bytes. The size of the ACPI
63825.0
6383FADT is 268 bytes.
6384
6385Updated all ACPICA copyrights and signons to 2012. Added the 2012
6386copyright to
6387all module headers and signons, including the standard Linux header. This
6388affects virtually every file in the ACPICA core subsystem, iASL compiler,
6389and
6390all ACPICA utilities.
6391
6392Example Code and Data Size: These are the sizes for the OS-independent
6393acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6394debug
6395version of the code includes the debug output trace mechanism and has a
6396much
6397larger code and data size.
6398
6399  Previous Release:
6400    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
6401    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
6402  Current Release:
6403    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
6404    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
6405
6406
64072) iASL Compiler/Disassembler and Tools:
6408
6409Disassembler: fixed a problem with the automatic resource tag generation
6410support. Fixes a problem where the resource tags are inadvertently not
6411constructed if the table being disassembled contains external references
6412to
6413control methods. Moved the actual construction of the tags to after the
6414final
6415namespace is constructed (after 2nd parse is invoked due to external
6416control
6417method references.) ACPICA BZ 941.
6418
6419Table Compiler: Make all "generic" operators caseless. These are the
6420operators
6421like UINT8, String, etc. Making these caseless improves ease-of-use.
6422ACPICA BZ
6423934.
6424
6425----------------------------------------
642623 November 2011. Summary of changes for version 20111123:
6427
64280) ACPI 5.0 Support:
6429
6430This release contains full support for the ACPI 5.0 specification, as
6431summarized below.
6432
6433Reduced Hardware Support:
6434-------------------------
6435
6436This support allows for ACPI systems without the usual ACPI hardware.
6437This
6438support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
6439will
6440not attempt to initialize or use any of the usual ACPI hardware. Note,
6441when
6442this flag is set, all of the following ACPI hardware is assumed to be not
6443present and is not initialized or accessed:
6444
6445    General Purpose Events (GPEs)
6446    Fixed Events (PM1a/PM1b and PM Control)
6447    Power Management Timer and Console Buttons (power/sleep)
6448    Real-time Clock Alarm
6449    Global Lock
6450    System Control Interrupt (SCI)
6451    The FACS is assumed to be non-existent
6452
6453ACPI Tables:
6454------------
6455
6456All new tables and updates to existing tables are fully supported in the
6457ACPICA headers (for use by device drivers), the disassembler, and the
6458iASL
6459Data Table Compiler. ACPI 5.0 defines these new tables:
6460
6461    BGRT        /* Boot Graphics Resource Table */
6462    DRTM        /* Dynamic Root of Trust for Measurement table */
6463    FPDT        /* Firmware Performance Data Table */
6464    GTDT        /* Generic Timer Description Table */
6465    MPST        /* Memory Power State Table */
6466    PCCT        /* Platform Communications Channel Table */
6467    PMTT        /* Platform Memory Topology Table */
6468    RASF        /* RAS Feature table */
6469
6470Operation Regions/SpaceIDs:
6471---------------------------
6472
6473All new operation regions are fully supported by the iASL compiler, the
6474disassembler, and the ACPICA runtime code (for dispatch to region
6475handlers.)
6476The new operation region Space IDs are:
6477
6478    GeneralPurposeIo
6479    GenericSerialBus
6480
6481Resource Descriptors:
6482---------------------
6483
6484All new ASL resource descriptors are fully supported by the iASL
6485compiler,
6486the
6487ASL/AML disassembler, and the ACPICA runtime Resource Manager code
6488(including
6489all new predefined resource tags). New descriptors are:
6490
6491    FixedDma
6492    GpioIo
6493    GpioInt
6494    I2cSerialBus
6495    SpiSerialBus
6496    UartSerialBus
6497
6498ASL/AML Operators, New and Modified:
6499------------------------------------
6500
6501One new operator is added, the Connection operator, which is used to
6502associate
6503a GeneralPurposeIo or GenericSerialBus resource descriptor with
6504individual
6505field objects within an operation region. Several new protocols are
6506associated
6507with the AccessAs operator. All are fully supported by the iASL compiler,
6508disassembler, and runtime ACPICA AML interpreter:
6509
6510    Connection                      // Declare Field Connection
6511attributes
6512    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
6513    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
6514Protocol
6515    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
6516    RawDataBuffer                       // Data type for Vendor Data
6517fields
6518
6519Predefined ASL/AML Objects:
6520---------------------------
6521
6522All new predefined objects/control-methods are supported by the iASL
6523compiler
6524and the ACPICA runtime validation/repair (arguments and return values.)
6525New
6526predefined names include the following:
6527
6528Standard Predefined Names (Objects or Control Methods):
6529    _AEI, _CLS, _CPC, _CWS, _DEP,
6530    _DLM, _EVT, _GCP, _CRT, _GWS,
6531    _HRV, _PRE, _PSE, _SRT, _SUB.
6532
6533Resource Tags (Names used to access individual fields within resource
6534descriptors):
6535    _DBT, _DPL, _DRS, _END, _FLC,
6536    _IOR, _LIN, _MOD, _PAR, _PHA,
6537    _PIN, _PPI, _POL, _RXL, _SLV,
6538    _SPE, _STB, _TXL, _VEN.
6539
6540ACPICA External Interfaces:
6541---------------------------
6542
6543Several new interfaces have been defined for use by ACPI-related device
6544drivers and other host OS services:
6545
6546AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
6547to
6548acquire and release AML mutexes that are defined in the DSDT/SSDT tables
6549provided by the BIOS. They are intended to be used in conjunction with
6550the
6551ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
6552mutual exclusion with the AML code/interpreter.
6553
6554AcpiGetEventResources: Returns the (formatted) resource descriptors as
6555defined
6556by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
6557provides
6558resource descriptors associated with hardware-reduced platform events,
6559similar
6560to the AcpiGetCurrentResources interface.
6561
6562Operation Region Handlers: For General Purpose IO and Generic Serial Bus
6563operation regions, information about the Connection() object and any
6564optional
6565length information is passed to the region handler within the Context
6566parameter.
6567
6568AcpiBufferToResource: This interface converts a raw AML buffer containing
6569a
6570resource template or resource descriptor to the ACPI_RESOURCE internal
6571format
6572suitable for use by device drivers. Can be used by an operation region
6573handler
6574to convert the Connection() buffer object into a ACPI_RESOURCE.
6575
6576Miscellaneous/Tools/TestSuites:
6577-------------------------------
6578
6579Support for extended _HID names (Four alpha characters instead of three).
6580Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
6581Support for ACPI 5.0 features in the ASLTS test suite.
6582Fully updated documentation (ACPICA and iASL reference documents.)
6583
6584ACPI Table Definition Language:
6585-------------------------------
6586
6587Support for this language was implemented and released as a subsystem of
6588the
6589iASL compiler in 2010. (See the iASL compiler User Guide.)
6590
6591
6592Non-ACPI 5.0 changes for this release:
6593--------------------------------------
6594
65951) ACPICA Core Subsystem:
6596
6597Fix a problem with operation region declarations where a failure can
6598occur
6599if
6600the region name and an argument that evaluates to an object (such as the
6601region address) are in different namespace scopes. Lin Ming, ACPICA BZ
6602937.
6603
6604Do not abort an ACPI table load if an invalid space ID is found within.
6605This
6606will be caught later if the offending method is executed. ACPICA BZ 925.
6607
6608Fixed an issue with the FFixedHW space ID where the ID was not always
6609recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
6610
6611Fixed a problem with the 32-bit generation of the unix-specific OSL
6612(osunixxf.c). Lin Ming, ACPICA BZ 936.
6613
6614Several changes made to enable generation with the GCC 4.6 compiler.
6615ACPICA BZ
6616935.
6617
6618New error messages: Unsupported I/O requests (not 8/16/32 bit), and
6619Index/Bank
6620field registers out-of-range.
6621
66222) iASL Compiler/Disassembler and Tools:
6623
6624iASL: Implemented the __PATH__ operator, which returns the full pathname
6625of
6626the current source file.
6627
6628AcpiHelp: Automatically display expanded keyword information for all ASL
6629operators.
6630
6631Debugger: Add "Template" command to disassemble/dump resource template
6632buffers.
6633
6634Added a new master script to generate and execute the ASLTS test suite.
6635Automatically handles 32- and 64-bit generation. See tests/aslts.sh
6636
6637iASL: Fix problem with listing generation during processing of the
6638Switch()
6639operator where AML listing was disabled until the entire Switch block was
6640completed.
6641
6642iASL: Improve support for semicolon statement terminators. Fix "invalid
6643character" message for some cases when the semicolon is used. Semicolons
6644are
6645now allowed after every <Term> grammar element. ACPICA BZ 927.
6646
6647iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
6648923.
6649
6650Disassembler: Fix problem with disassembly of the DataTableRegion
6651operator
6652where an inadvertent "Unhandled deferred opcode" message could be
6653generated.
6654
66553) Example Code and Data Size
6656
6657These are the sizes for the OS-independent acpica.lib produced by the
6658Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6659includes the debug output trace mechanism and has a much larger code and
6660data
6661size.
6662
6663  Previous Release:
6664    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6665    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6666  Current Release:
6667    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
6668    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
6669
6670----------------------------------------
667122 September 2011. Summary of changes for version 20110922:
6672
66730) ACPI 5.0 News:
6674
6675Support for ACPI 5.0 in ACPICA has been underway for several months and
6676will
6677be released at the same time that ACPI 5.0 is officially released.
6678
6679The ACPI 5.0 specification is on track for release in the next few
6680months.
6681
66821) ACPICA Core Subsystem:
6683
6684Fixed a problem where the maximum sleep time for the Sleep() operator was
6685intended to be limited to two seconds, but was inadvertently limited to
668620
6687seconds instead.
6688
6689Linux and Unix makefiles: Added header file dependencies to ensure
6690correct
6691generation of ACPICA core code and utilities. Also simplified the
6692makefiles
6693considerably through the use of the vpath variable to specify search
6694paths.
6695ACPICA BZ 924.
6696
66972) iASL Compiler/Disassembler and Tools:
6698
6699iASL: Implemented support to check the access length for all fields
6700created to
6701access named Resource Descriptor fields. For example, if a resource field
6702is
6703defined to be two bits, a warning is issued if a CreateXxxxField() is
6704used
6705with an incorrect bit length. This is implemented for all current
6706resource
6707descriptor names. ACPICA BZ 930.
6708
6709Disassembler: Fixed a byte ordering problem with the output of 24-bit and
671056-
6711bit integers.
6712
6713iASL: Fixed a couple of issues associated with variable-length package
6714objects. 1) properly handle constants like One, Ones, Zero -- do not make
6715a
6716VAR_PACKAGE when these are used as a package length. 2) Allow the
6717VAR_PACKAGE
6718opcode (in addition to PACKAGE) when validating object types for
6719predefined
6720names.
6721
6722iASL: Emit statistics for all output files (instead of just the ASL input
6723and
6724AML output). Includes listings, hex files, etc.
6725
6726iASL: Added -G option to the table compiler to allow the compilation of
6727custom
6728ACPI tables. The only part of a table that is required is the standard
672936-
6730byte
6731ACPI header.
6732
6733AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
6734headers),
6735which also adds correct 64-bit support. Also, now all output filenames
6736are
6737completely lower case.
6738
6739AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
6740loading table files. A warning is issued for any such tables. The only
6741exception is an FADT. This also fixes a possible fault when attempting to
6742load
6743non-AML tables. ACPICA BZ 932.
6744
6745AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
6746a
6747missing table terminator could cause a fault when using the -p option.
6748
6749AcpiSrc: Fixed a possible divide-by-zero fault when generating file
6750statistics.
6751
67523) Example Code and Data Size
6753
6754These are the sizes for the OS-independent acpica.lib produced by the
6755Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6756includes the debug output trace mechanism and has a much larger code and
6757data
6758size.
6759
6760  Previous Release (VC 9.0):
6761    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6762    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6763  Current Release (VC 9.0):
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
6767
6768----------------------------------------
676923 June 2011. Summary of changes for version 20110623:
6770
67711) ACPI CA Core Subsystem:
6772
6773Updated the predefined name repair mechanism to not attempt repair of a
6774_TSS
6775return object if a _PSS object is present. We can only sort the _TSS
6776return
6777package if there is no _PSS within the same scope. This is because if
6778_PSS
6779is
6780present, the ACPI specification dictates that the _TSS Power Dissipation
6781field
6782is to be ignored, and therefore some BIOSs leave garbage values in the
6783_TSS
6784Power field(s). In this case, it is best to just return the _TSS package
6785as-
6786is. Reported by, and fixed with assistance from Fenghua Yu.
6787
6788Added an option to globally disable the control method return value
6789validation
6790and repair. This runtime option can be used to disable return value
6791repair
6792if
6793this is causing a problem on a particular machine. Also added an option
6794to
6795AcpiExec (-dr) to set this disable flag.
6796
6797All makefiles and project files: Major changes to improve generation of
6798ACPICA
6799tools. ACPICA BZ 912:
6800    Reduce default optimization levels to improve compatibility
6801    For Linux, add strict-aliasing=0 for gcc 4
6802    Cleanup and simplify use of command line defines
6803    Cleanup multithread library support
6804    Improve usage messages
6805
6806Linux-specific header: update handling of THREAD_ID and pthread. For the
680732-
6808bit case, improve casting to eliminate possible warnings, especially with
6809the
6810acpica tools.
6811
6812Example Code and Data Size: These are the sizes for the OS-independent
6813acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6814debug
6815version of the code includes the debug output trace mechanism and has a
6816much
6817larger code and data size.
6818
6819  Previous Release (VC 9.0):
6820    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
6821    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6822  Current Release (VC 9.0):
6823    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6824    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6825
68262) iASL Compiler/Disassembler and Tools:
6827
6828With this release, a new utility named "acpihelp" has been added to the
6829ACPICA
6830package. This utility summarizes the ACPI specification chapters for the
6831ASL
6832and AML languages. It generates under Linux/Unix as well as Windows, and
6833provides the following functionality:
6834    Find/display ASL operator(s) -- with description and syntax.
6835    Find/display ASL keyword(s) -- with exact spelling and descriptions.
6836    Find/display ACPI predefined name(s) -- with description, number
6837        of arguments, and the return value data type.
6838    Find/display AML opcode name(s) -- with opcode, arguments, and
6839grammar.
6840    Decode/display AML opcode -- with opcode name, arguments, and
6841grammar.
6842
6843Service Layers: Make multi-thread support configurable. Conditionally
6844compile
6845the multi-thread support so that threading libraries will not be linked
6846if
6847not
6848necessary. The only tool that requires multi-thread support is AcpiExec.
6849
6850iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
6851of
6852Bison appear to want the interface to yyerror to be a const char * (or at
6853least this is a problem when generating iASL on some systems.) ACPICA BZ
6854923
6855Pierre Lejeune.
6856
6857Tools: Fix for systems where O_BINARY is not defined. Only used for
6858Windows
6859versions of the tools.
6860
6861----------------------------------------
686227 May 2011. Summary of changes for version 20110527:
6863
68641) ACPI CA Core Subsystem:
6865
6866ASL Load() operator: Reinstate most restrictions on the incoming ACPI
6867table
6868signature. Now, only allow SSDT, OEMx, and a null signature. History:
6869    1) Originally, we checked the table signature for "SSDT" or "PSDT".
6870       (PSDT is now obsolete.)
6871    2) We added support for OEMx tables, signature "OEM" plus a fourth
6872       "don't care" character.
6873    3) Valid tables were encountered with a null signature, so we just
6874       gave up on validating the signature, (05/2008).
6875    4) We encountered non-AML tables such as the MADT, which caused
6876       interpreter errors and kernel faults. So now, we once again allow
6877       only SSDT, OEMx, and now, also a null signature. (05/2011).
6878
6879Added the missing _TDL predefined name to the global name list in order
6880to
6881enable validation. Affects both the core ACPICA code and the iASL
6882compiler.
6883
6884Example Code and Data Size: These are the sizes for the OS-independent
6885acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6886debug
6887version of the code includes the debug output trace mechanism and has a
6888much
6889larger code and data size.
6890
6891  Previous Release (VC 9.0):
6892    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
6893    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
6894  Current Release (VC 9.0):
6895    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
6896    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6897
68982) iASL Compiler/Disassembler and Tools:
6899
6900Debugger/AcpiExec: Implemented support for "complex" method arguments on
6901the
6902debugger command line. This adds support beyond simple integers --
6903including
6904Strings, Buffers, and Packages. Includes support for nested packages.
6905Increased the default command line buffer size to accommodate these
6906arguments.
6907See the ACPICA reference for details and syntax. ACPICA BZ 917.
6908
6909Debugger/AcpiExec: Implemented support for "default" method arguments for
6910the
6911Execute/Debug command. Now, the debugger will always invoke a control
6912method
6913with the required number of arguments -- even if the command line
6914specifies
6915none or insufficient arguments. It uses default integer values for any
6916missing
6917arguments. Also fixes a bug where only six method arguments maximum were
6918supported instead of the required seven.
6919
6920Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
6921and
6922also return status in order to prevent buffer overruns. See the ACPICA
6923reference for details and syntax. ACPICA BZ 921
6924
6925iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
6926makefiles to simplify support for the two different but similar parser
6927generators, bison and yacc.
6928
6929Updated the generic unix makefile for gcc 4. The default gcc version is
6930now
6931expected to be 4 or greater, since options specific to gcc 4 are used.
6932
6933----------------------------------------
693413 April 2011. Summary of changes for version 20110413:
6935
69361) ACPI CA Core Subsystem:
6937
6938Implemented support to execute a so-called "orphan" _REG method under the
6939EC
6940device. This change will force the execution of a _REG method underneath
6941the
6942EC
6943device even if there is no corresponding operation region of type
6944EmbeddedControl. Fixes a problem seen on some machines and apparently is
6945compatible with Windows behavior. ACPICA BZ 875.
6946
6947Added more predefined methods that are eligible for automatic NULL
6948package
6949element removal. This change adds another group of predefined names to
6950the
6951list
6952of names that can be repaired by having NULL package elements dynamically
6953removed. This group are those methods that return a single variable-
6954length
6955package containing simple data types such as integers, buffers, strings.
6956This
6957includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
6958_PSL,
6959_Sx,
6960and _TZD. ACPICA BZ 914.
6961
6962Split and segregated all internal global lock functions to a new file,
6963evglock.c.
6964
6965Updated internal address SpaceID for DataTable regions. Moved this
6966internal
6967space
6968id in preparation for ACPI 5.0 changes that will include some new space
6969IDs.
6970This
6971change should not affect user/host code.
6972
6973Example Code and Data Size: These are the sizes for the OS-independent
6974acpica.lib
6975produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
6976version of
6977the code includes the debug output trace mechanism and has a much larger
6978code
6979and
6980data size.
6981
6982  Previous Release (VC 9.0):
6983    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
6984    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
6985  Current Release (VC 9.0):
6986    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
6987    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
6988
69892) iASL Compiler/Disassembler and Tools:
6990
6991iASL/DTC: Major update for new grammar features. Allow generic data types
6992in
6993custom ACPI tables. Field names are now optional. Any line can be split
6994to
6995multiple lines using the continuation char (\). Large buffers now use
6996line-
6997continuation character(s) and no colon on the continuation lines. See the
6998grammar
6999update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
7000Moore.
7001
7002iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
7003statements.
7004Since the parser stuffs a "zero" as the return value for these statements
7005(due
7006to
7007the underlying AML grammar), they were seen as "return with value" by the
7008iASL
7009semantic checking. They are now seen correctly as "null" return
7010statements.
7011
7012iASL: Check if a_REG declaration has a corresponding Operation Region.
7013Adds a
7014check for each _REG to ensure that there is in fact a corresponding
7015operation
7016region declaration in the same scope. If not, the _REG method is not very
7017useful
7018since it probably won't be executed. ACPICA BZ 915.
7019
7020iASL/DTC: Finish support for expression evaluation. Added a new
7021expression
7022parser
7023that implements c-style operator precedence and parenthesization. ACPICA
7024bugzilla
7025908.
7026
7027Disassembler/DTC: Remove support for () and <> style comments in data
7028tables.
7029Now
7030that DTC has full expression support, we don't want to have comment
7031strings
7032that
7033start with a parentheses or a less-than symbol. Now, only the standard /*
7034and
7035//
7036comments are supported, as well as the bracket [] comments.
7037
7038AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
7039"unusual"
7040headers in the acpidump file. Update the header validation to support
7041these
7042tables. Problem introduced in previous AcpiXtract version in the change
7043to
7044support "wrong checksum" error messages emitted by acpidump utility.
7045
7046iASL: Add a * option to generate all template files (as a synonym for
7047ALL)
7048as
7049in
7050"iasl -T *" or "iasl -T ALL".
7051
7052iASL/DTC: Do not abort compiler on fatal errors. We do not want to
7053completely
7054abort the compiler on "fatal" errors, simply should abort the current
7055compile.
7056This allows multiple compiles with a single (possibly wildcard) compiler
7057invocation.
7058
7059----------------------------------------
706016 March 2011. Summary of changes for version 20110316:
7061
70621) ACPI CA Core Subsystem:
7063
7064Fixed a problem caused by a _PRW method appearing at the namespace root
7065scope
7066during the setup of wake GPEs. A fault could occur if a _PRW directly
7067under
7068the
7069root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
7070
7071Implemented support for "spurious" Global Lock interrupts. On some
7072systems, a
7073global lock interrupt can occur without the pending flag being set. Upon
7074a
7075GL
7076interrupt, we now ensure that a thread is actually waiting for the lock
7077before
7078signaling GL availability. Rafael Wysocki, Bob Moore.
7079
7080Example Code and Data Size: These are the sizes for the OS-independent
7081acpica.lib
7082produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
7083version of
7084the code includes the debug output trace mechanism and has a much larger
7085code
7086and
7087data size.
7088
7089  Previous Release (VC 9.0):
7090    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7091    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7092  Current Release (VC 9.0):
7093    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
7094    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
7095
70962) iASL Compiler/Disassembler and Tools:
7097
7098Implemented full support for the "SLIC" ACPI table. Includes support in
7099the
7100header files, disassembler, table compiler, and template generator. Bob
7101Moore,
7102Lin Ming.
7103
7104AcpiXtract: Correctly handle embedded comments and messages from
7105AcpiDump.
7106Apparently some or all versions of acpidump will occasionally emit a
7107comment
7108like
7109"Wrong checksum", etc., into the dump file. This was causing problems for
7110AcpiXtract. ACPICA BZ 905.
7111
7112iASL: Fix the Linux makefile by removing an inadvertent double file
7113inclusion.
7114ACPICA BZ 913.
7115
7116AcpiExec: Update installation of operation region handlers. Install one
7117handler
7118for a user-defined address space. This is used by the ASL test suite
7119(ASLTS).
7120
7121----------------------------------------
712211 February 2011. Summary of changes for version 20110211:
7123
71241) ACPI CA Core Subsystem:
7125
7126Added a mechanism to defer _REG methods for some early-installed
7127handlers.
7128Most user handlers should be installed before call to
7129AcpiEnableSubsystem.
7130However, Event handlers and region handlers should be installed after
7131AcpiInitializeObjects. Override handlers for the "default" regions should
7132be
7133installed early, however. This change executes all _REG methods for the
7134default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
7135chicken/egg issues between them. ACPICA BZ 848.
7136
7137Implemented an optimization for GPE detection. This optimization will
7138simply
7139ignore GPE registers that contain no enabled GPEs -- there is no need to
7140read the register since this information is available internally. This
7141becomes more important on machines with a large GPE space. ACPICA
7142bugzilla
7143884. Lin Ming. Suggestion from Joe Liu.
7144
7145Removed all use of the highly unreliable FADT revision field. The
7146revision
7147number in the FADT has been found to be completely unreliable and cannot
7148be
7149trusted. Only the actual table length can be used to infer the version.
7150This
7151change updates the ACPICA core and the disassembler so that both no
7152longer
7153even look at the FADT version and instead depend solely upon the FADT
7154length.
7155
7156Fix an unresolved name issue for the no-debug and no-error-message source
7157generation cases. The _AcpiModuleName was left undefined in these cases,
7158but
7159it is actually needed as a parameter to some interfaces. Define
7160_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
7161
7162Split several large files (makefiles and project files updated)
7163  utglobal.c   -> utdecode.c
7164  dbcomds.c    -> dbmethod.c dbnames.c
7165  dsopcode.c   -> dsargs.c dscontrol.c
7166  dsload.c     -> dsload2.c
7167  aslanalyze.c -> aslbtypes.c aslwalks.c
7168
7169Example Code and Data Size: These are the sizes for the OS-independent
7170acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7171debug version of the code includes the debug output trace mechanism and
7172has
7173a much larger code and data size.
7174
7175  Previous Release (VC 9.0):
7176    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7177    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7178  Current Release (VC 9.0):
7179    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7180    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7181
71822) iASL Compiler/Disassembler and Tools:
7183
7184iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
7185These are useful C-style macros with the standard definitions. ACPICA
7186bugzilla 898.
7187
7188iASL/DTC: Added support for integer expressions and labels. Support for
7189full
7190expressions for all integer fields in all ACPI tables. Support for labels
7191in
7192"generic" portions of tables such as UEFI. See the iASL reference manual.
7193
7194Debugger: Added a command to display the status of global handlers. The
7195"handlers" command will display op region, fixed event, and miscellaneous
7196global handlers. installation status -- and for op regions, whether
7197default
7198or user-installed handler will be used.
7199
7200iASL: Warn if reserved method incorrectly returns a value. Many
7201predefined
7202names are defined such that they do not return a value. If implemented as
7203a
7204method, issue a warning if such a name explicitly returns a value. ACPICA
7205Bugzilla 855.
7206
7207iASL: Added detection of GPE method name conflicts. Detects a conflict
7208where
7209there are two GPE methods of the form _Lxy and _Exy in the same scope.
7210(For
7211example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
7212
7213iASL/DTC: Fixed a couple input scanner issues with comments and line
7214numbers. Comment remover could get confused and miss a comment ending.
7215Fixed
7216a problem with line counter maintenance.
7217
7218iASL/DTC: Reduced the severity of some errors from fatal to error. There
7219is
7220no need to abort on simple errors within a field definition.
7221
7222Debugger: Simplified the output of the help command. All help output now
7223in
7224a single screen, instead of help subcommands. ACPICA Bugzilla 897.
7225
7226----------------------------------------
722712 January 2011. Summary of changes for version 20110112:
7228
72291) ACPI CA Core Subsystem:
7230
7231Fixed a race condition between method execution and namespace walks that
7232can
7233possibly cause a fault. The problem was apparently introduced in version
723420100528 as a result of a performance optimization that reduces the
7235number
7236of
7237namespace walks upon method exit by using the delete_namespace_subtree
7238function instead of the delete_namespace_by_owner function used
7239previously.
7240Bug is a missing namespace lock in the delete_namespace_subtree function.
7241dana.myers@oracle.com
7242
7243Fixed several issues and a possible fault with the automatic "serialized"
7244method support. History: This support changes a method to "serialized" on
7245the
7246fly if the method generates an AE_ALREADY_EXISTS error, indicating the
7247possibility that it cannot handle reentrancy. This fix repairs a couple
7248of
7249issues seen in the field, especially on machines with many cores:
7250
7251    1) Delete method children only upon the exit of the last thread,
7252       so as to not delete objects out from under other running threads
7253      (and possibly causing a fault.)
7254    2) Set the "serialized" bit for the method only upon the exit of the
7255       Last thread, so as to not cause deadlock when running threads
7256       attempt to exit.
7257    3) Cleanup the use of the AML "MethodFlags" and internal method flags
7258       so that there is no longer any confusion between the two.
7259
7260    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
7261
7262Debugger: Now lock the namespace for duration of a namespace dump.
7263Prevents
7264issues if the namespace is changing dynamically underneath the debugger.
7265Especially affects temporary namespace nodes, since the debugger displays
7266these also.
7267
7268Updated the ordering of include files. The ACPICA headers should appear
7269before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
7270set
7271any necessary compiler-specific defines, etc. Affects the ACPI-related
7272tools
7273and utilities.
7274
7275Updated all ACPICA copyrights and signons to 2011. Added the 2011
7276copyright
7277to all module headers and signons, including the Linux header. This
7278affects
7279virtually every file in the ACPICA core subsystem, iASL compiler, and all
7280utilities.
7281
7282Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
7283project files for VC++ 6.0 are now obsolete. New project files can be
7284found
7285under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
7286details.
7287
7288Example Code and Data Size: These are the sizes for the OS-independent
7289acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7290debug version of the code includes the debug output trace mechanism and
7291has a
7292much larger code and data size.
7293
7294  Previous Release (VC 6.0):
7295    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
7296    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
7297  Current Release (VC 9.0):
7298    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7299    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7300
73012) iASL Compiler/Disassembler and Tools:
7302
7303iASL: Added generic data types to the Data Table compiler. Add "generic"
7304data
7305types such as UINT32, String, Unicode, etc., to simplify the generation
7306of
7307platform-defined tables such as UEFI. Lin Ming.
7308
7309iASL: Added listing support for the Data Table Compiler. Adds listing
7310support
7311(-l) to display actual binary output for each line of input code.
7312
7313----------------------------------------
731409 December 2010. Summary of changes for version 20101209:
7315
73161) ACPI CA Core Subsystem:
7317
7318Completed the major overhaul of the GPE support code that was begun in
7319July
73202010. Major features include: removal of _PRW execution in ACPICA (host
7321executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
7322changes to existing interfaces, simplification of GPE handler operation,
7323and
7324a handful of new interfaces:
7325
7326    AcpiUpdateAllGpes
7327    AcpiFinishGpe
7328    AcpiSetupGpeForWake
7329    AcpiSetGpeWakeMask
7330    One new file, evxfgpe.c to consolidate all external GPE interfaces.
7331
7332See the ACPICA Programmer Reference for full details and programming
7333information. See the new section 4.4 "General Purpose Event (GPE)
7334Support"
7335for a full overview, and section 8.7 "ACPI General Purpose Event
7336Management"
7337for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
7338Ming,
7339Bob Moore, Rafael Wysocki.
7340
7341Implemented a new GPE feature for Windows compatibility, the "Implicit
7342Wake
7343GPE Notify". This feature will automatically issue a Notify(2) on a
7344device
7345when a Wake GPE is received if there is no corresponding GPE method or
7346handler. ACPICA BZ 870.
7347
7348Fixed a problem with the Scope() operator during table parse and load
7349phase.
7350During load phase (table load or method execution), the scope operator
7351should
7352not enter the target into the namespace. Instead, it should open a new
7353scope
7354at the target location. Linux BZ 19462, ACPICA BZ 882.
7355
7356Example Code and Data Size: These are the sizes for the OS-independent
7357acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7358debug version of the code includes the debug output trace mechanism and
7359has a
7360much larger code and data size.
7361
7362  Previous Release:
7363    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
7364    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
7365  Current Release:
7366    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7367    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7368
73692) iASL Compiler/Disassembler and Tools:
7370
7371iASL: Relax the alphanumeric restriction on _CID strings. These strings
7372are
7373"bus-specific" per the ACPI specification, and therefore any characters
7374are
7375acceptable. The only checks that can be performed are for a null string
7376and
7377perhaps for a leading asterisk. ACPICA BZ 886.
7378
7379iASL: Fixed a problem where a syntax error that caused a premature EOF
7380condition on the source file emitted a very confusing error message. The
7381premature EOF is now detected correctly. ACPICA BZ 891.
7382
7383Disassembler: Decode the AccessSize within a Generic Address Structure
7384(byte
7385access, word access, etc.) Note, this field does not allow arbitrary bit
7386access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
7387
7388New: AcpiNames utility - Example namespace dump utility. Shows an example
7389of
7390ACPICA configuration for a minimal namespace dump utility. Uses table and
7391namespace managers, but no AML interpreter. Does not add any
7392functionality
7393over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
7394partition and configure ACPICA. ACPICA BZ 883.
7395
7396AML Debugger: Increased the debugger buffer size for method return
7397objects.
7398Was 4K, increased to 16K. Also enhanced error messages for debugger
7399method
7400execution, including the buffer overflow case.
7401
7402----------------------------------------
740313 October 2010. Summary of changes for version 20101013:
7404
74051) ACPI CA Core Subsystem:
7406
7407Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
7408now
7409clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
7410HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
7411
7412Changed the type of the predefined namespace object _TZ from ThermalZone
7413to
7414Device. This was found to be confusing to the host software that
7415processes
7416the various thermal zones, since _TZ is not really a ThermalZone.
7417However,
7418a
7419Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
7420Zhang.
7421
7422Added Windows Vista SP2 to the list of supported _OSI strings. The actual
7423string is "Windows 2006 SP2".
7424
7425Eliminated duplicate code in AcpiUtExecute* functions. Now that the
7426nsrepair
7427code automatically repairs _HID-related strings, this type of code is no
7428longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
7429878.
7430
7431Example Code and Data Size: These are the sizes for the OS-independent
7432acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7433debug version of the code includes the debug output trace mechanism and
7434has a
7435much larger code and data size.
7436
7437  Previous Release:
7438    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7439    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7440  Current Release:
7441    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7442    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7443
74442) iASL Compiler/Disassembler and Tools:
7445
7446iASL: Implemented additional compile-time validation for _HID strings.
7447The
7448non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
7449length
7450of
7451the string must be exactly seven or eight characters. For both _HID and
7452_CID
7453strings, all characters must be alphanumeric. ACPICA BZ 874.
7454
7455iASL: Allow certain "null" resource descriptors. Some BIOS code creates
7456descriptors that are mostly or all zeros, with the expectation that they
7457will
7458be filled in at runtime. iASL now allows this as long as there is a
7459"resource
7460tag" (name) associated with the descriptor, which gives the ASL a handle
7461needed to modify the descriptor. ACPICA BZ 873.
7462
7463Added single-thread support to the generic Unix application OSL.
7464Primarily
7465for iASL support, this change removes the use of semaphores in the
7466single-
7467threaded ACPICA tools/applications - increasing performance. The
7468_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
7469option. ACPICA BZ 879.
7470
7471AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
7472support
7473for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
7474
7475iASL: Moved all compiler messages to a new file, aslmessages.h.
7476
7477----------------------------------------
747815 September 2010. Summary of changes for version 20100915:
7479
74801) ACPI CA Core Subsystem:
7481
7482Removed the AcpiOsDerivePciId OSL interface. The various host
7483implementations
7484of this function were not OS-dependent and are now obsolete and can be
7485removed from all host OSLs. This function has been replaced by
7486AcpiHwDerivePciId, which is now part of the ACPICA core code.
7487AcpiHwDerivePciId has been implemented without recursion. Adds one new
7488module, hwpci.c. ACPICA BZ 857.
7489
7490Implemented a dynamic repair for _HID and _CID strings. The following
7491problems are now repaired at runtime: 1) Remove a leading asterisk in the
7492string, and 2) the entire string is uppercased. Both repairs are in
7493accordance with the ACPI specification and will simplify host driver
7494code.
7495ACPICA BZ 871.
7496
7497The ACPI_THREAD_ID type is no longer configurable, internally it is now
7498always UINT64. This simplifies the ACPICA code, especially any printf
7499output.
7500UINT64 is the only common data type for all thread_id types across all
7501operating systems. It is now up to the host OSL to cast the native
7502thread_id
7503type to UINT64 before returning the value to ACPICA (via
7504AcpiOsGetThreadId).
7505Lin Ming, Bob Moore.
7506
7507Added the ACPI_INLINE type to enhance the ACPICA configuration. The
7508"inline"
7509keyword is not standard across compilers, and this type allows inline to
7510be
7511configured on a per-compiler basis. Lin Ming.
7512
7513Made the system global AcpiGbl_SystemAwakeAndRunning publicly
7514available.
7515Added an extern for this boolean in acpixf.h. Some hosts utilize this
7516value
7517during suspend/restore operations. ACPICA BZ 869.
7518
7519All code that implements error/warning messages with the "ACPI:" prefix
7520has
7521been moved to a new module, utxferror.c.
7522
7523The UINT64_OVERLAY was moved to utmath.c, which is the only module where
7524it
7525is used. ACPICA BZ 829. Lin Ming, Bob Moore.
7526
7527Example Code and Data Size: These are the sizes for the OS-independent
7528acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7529debug version of the code includes the debug output trace mechanism and
7530has a
7531much larger code and data size.
7532
7533  Previous Release:
7534    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
7535    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
7536  Current Release:
7537    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7538    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7539
75402) iASL Compiler/Disassembler and Tools:
7541
7542iASL/Disassembler: Write ACPI errors to stderr instead of the output
7543file.
7544This keeps the output files free of random error messages that may
7545originate
7546from within the namespace/interpreter code. Used this opportunity to
7547merge
7548all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
7549866. Lin Ming, Bob Moore.
7550
7551Tools: update some printfs for ansi warnings on size_t. Handle width
7552change
7553of size_t on 32-bit versus 64-bit generations. Lin Ming.
7554
7555----------------------------------------
755606 August 2010. Summary of changes for version 20100806:
7557
75581) ACPI CA Core Subsystem:
7559
7560Designed and implemented a new host interface to the _OSI support code.
7561This
7562will allow the host to dynamically add or remove multiple _OSI strings,
7563as
7564well as install an optional handler that is called for each _OSI
7565invocation.
7566Also added a new AML debugger command, 'osi' to display and modify the
7567global
7568_OSI string table, and test support in the AcpiExec utility. See the
7569ACPICA
7570reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
7571New Functions:
7572    AcpiInstallInterface - Add an _OSI string.
7573    AcpiRemoveInterface - Delete an _OSI string.
7574    AcpiInstallInterfaceHandler - Install optional _OSI handler.
7575Obsolete Functions:
7576    AcpiOsValidateInterface - no longer used.
7577New Files:
7578    source/components/utilities/utosi.c
7579
7580Re-introduced the support to enable multi-byte transfers for Embedded
7581Controller (EC) operation regions. A reported problem was found to be a
7582bug
7583in the host OS, not in the multi-byte support. Previously, the maximum
7584data
7585size passed to the EC operation region handler was a single byte. There
7586are
7587often EC Fields larger than one byte that need to be transferred, and it
7588is
7589useful for the EC driver to lock these as a single transaction. This
7590change
7591enables single transfers larger than 8 bits. This effectively changes the
7592access to the EC space from ByteAcc to AnyAcc, and will probably require
7593changes to the host OS Embedded Controller driver to enable 16/32/64/256-
7594bit
7595transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
7596
7597Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
7598prototype in acpiosxf.h had the output value pointer as a (void *).
7599It should be a (UINT64 *). This may affect some host OSL code.
7600
7601Fixed a couple problems with the recently modified Linux makefiles for
7602iASL
7603and AcpiExec. These new makefiles place the generated object files in the
7604local directory so that there can be no collisions between the files that
7605are
7606shared between them that are compiled with different options.
7607
7608Example Code and Data Size: These are the sizes for the OS-independent
7609acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7610debug version of the code includes the debug output trace mechanism and
7611has a
7612much larger code and data size.
7613
7614  Previous Release:
7615    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7616    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
7617  Current Release:
7618    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
7619    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
7620
76212) iASL Compiler/Disassembler and Tools:
7622
7623iASL/Disassembler: Added a new option (-da, "disassemble all") to load
7624the
7625namespace from and disassemble an entire group of AML files. Useful for
7626loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
7627and
7628disassembling with one simple command. ACPICA BZ 865. Lin Ming.
7629
7630iASL: Allow multiple invocations of -e option. This change allows
7631multiple
7632uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
7633834.
7634Lin Ming.
7635
7636----------------------------------------
763702 July 2010. Summary of changes for version 20100702:
7638
76391) ACPI CA Core Subsystem:
7640
7641Implemented several updates to the recently added GPE reference count
7642support. The model for "wake" GPEs is changing to give the host OS
7643complete
7644control of these GPEs. Eventually, the ACPICA core will not execute any
7645_PRW
7646methods, since the host already must execute them. Also, additional
7647changes
7648were made to help ensure that the reference counts are kept in proper
7649synchronization with reality. Rafael J. Wysocki.
7650
76511) Ensure that GPEs are not enabled twice during initialization.
76522) Ensure that GPE enable masks stay in sync with the reference count.
76533) Do not inadvertently enable GPEs when writing GPE registers.
76544) Remove the internal wake reference counter and add new AcpiGpeWakeup
7655interface. This interface will set or clear individual GPEs for wakeup.
76565) Remove GpeType argument from AcpiEnable and AcpiDisable. These
7657interfaces
7658are now used for "runtime" GPEs only.
7659
7660Changed the behavior of the GPE install/remove handler interfaces. The
7661GPE
7662is
7663no longer disabled during this process, as it was found to cause problems
7664on
7665some machines. Rafael J. Wysocki.
7666
7667Reverted a change introduced in version 20100528 to enable Embedded
7668Controller multi-byte transfers. This change was found to cause problems
7669with
7670Index Fields and possibly Bank Fields. It will be reintroduced when these
7671problems have been resolved.
7672
7673Fixed a problem with references to Alias objects within Package Objects.
7674A
7675reference to an Alias within the definition of a Package was not always
7676resolved properly. Aliases to objects like Processors, Thermal zones,
7677etc.
7678were resolved to the actual object instead of a reference to the object
7679as
7680it
7681should be. Package objects are only allowed to contain integer, string,
7682buffer, package, and reference objects. Redhat bugzilla 608648.
7683
7684Example Code and Data Size: These are the sizes for the OS-independent
7685acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7686debug version of the code includes the debug output trace mechanism and
7687has a
7688much larger code and data size.
7689
7690  Previous Release:
7691    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7692    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
7693  Current Release:
7694    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7695    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
7696
76972) iASL Compiler/Disassembler and Tools:
7698
7699iASL: Implemented a new compiler subsystem to allow definition and
7700compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
7701These
7702are called "ACPI Data Tables", and the new compiler is the "Data Table
7703Compiler". This compiler is intended to simplify the existing error-prone
7704process of creating these tables for the BIOS, as well as allowing the
7705disassembly, modification, recompilation, and override of existing ACPI
7706data
7707tables. See the iASL User Guide for detailed information.
7708
7709iASL: Implemented a new Template Generator option in support of the new
7710Data
7711Table Compiler. This option will create examples of all known ACPI tables
7712that can be used as the basis for table development. See the iASL
7713documentation and the -T option.
7714
7715Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
7716Descriptor Table).
7717
7718Updated the Linux makefiles for iASL and AcpiExec to place the generated
7719object files in the local directory so that there can be no collisions
7720between the shared files between them that are generated with different
7721options.
7722
7723Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
7724Use
7725the #define __APPLE__ to enable this support.
7726
7727----------------------------------------
772828 May 2010. Summary of changes for version 20100528:
7729
7730Note: The ACPI 4.0a specification was released on April 5, 2010 and is
7731available at www.acpi.info. This is primarily an errata release.
7732
77331) ACPI CA Core Subsystem:
7734
7735Undefined ACPI tables: We are looking for the definitions for the
7736following
7737ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
7738
7739Implemented support to enable multi-byte transfers for Embedded
7740Controller
7741(EC) operation regions. Previously, the maximum data size passed to the
7742EC
7743operation region handler was a single byte. There are often EC Fields
7744larger
7745than one byte that need to be transferred, and it is useful for the EC
7746driver
7747to lock these as a single transaction. This change enables single
7748transfers
7749larger than 8 bits. This effectively changes the access to the EC space
7750from
7751ByteAcc to AnyAcc, and will probably require changes to the host OS
7752Embedded
7753Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
7754bit
7755transfers. Alexey Starikovskiy, Lin Ming
7756
7757Implemented a performance enhancement for namespace search and access.
7758This
7759change enhances the performance of namespace searches and walks by adding
7760a
7761backpointer to the parent in each namespace node. On large namespaces,
7762this
7763change can improve overall ACPI performance by up to 9X. Adding a pointer
7764to
7765each namespace node increases the overall size of the internal namespace
7766by
7767about 5%, since each namespace entry usually consists of both a namespace
7768node and an ACPI operand object. However, this is the first growth of the
7769namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
7770
7771Implemented a performance optimization that reduces the number of
7772namespace
7773walks. On control method exit, only walk the namespace if the method is
7774known
7775to have created namespace objects outside of its local scope. Previously,
7776the
7777entire namespace was traversed on each control method exit. This change
7778can
7779improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
7780Moore.
7781
7782Added support to truncate I/O addresses to 16 bits for Windows
7783compatibility.
7784Some ASL code has been seen in the field that inadvertently has bits set
7785above bit 15. This feature is optional and is enabled if the BIOS
7786requests
7787any Windows OSI strings. It can also be enabled by the host OS. Matthew
7788Garrett, Bob Moore.
7789
7790Added support to limit the maximum time for the ASL Sleep() operator. To
7791prevent accidental deep sleeps, limit the maximum time that Sleep() will
7792actually sleep. Configurable, the default maximum is two seconds. ACPICA
7793bugzilla 854.
7794
7795Added run-time validation support for the _WDG and_WED Microsoft
7796predefined
7797methods. These objects are defined by "Windows Instrumentation", and are
7798not
7799part of the ACPI spec. ACPICA BZ 860.
7800
7801Expanded all statistic counters used during namespace and device
7802initialization from 16 to 32 bits in order to support very large
7803namespaces.
7804
7805Replaced all instances of %d in printf format specifiers with %u since
7806nearly
7807all integers in ACPICA are unsigned.
7808
7809Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
7810returned
7811as AE_NO_HANDLER.
7812
7813Example Code and Data Size: These are the sizes for the OS-independent
7814acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7815debug version of the code includes the debug output trace mechanism and
7816has a
7817much larger code and data size.
7818
7819  Previous Release:
7820    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
7821    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
7822  Current Release:
7823    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7824    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
7825
78262) iASL Compiler/Disassembler and Tools:
7827
7828iASL: Added compiler support for the _WDG and_WED Microsoft predefined
7829methods. These objects are defined by "Windows Instrumentation", and are
7830not
7831part of the ACPI spec. ACPICA BZ 860.
7832
7833AcpiExec: added option to disable the memory tracking mechanism. The -dt
7834option will disable the tracking mechanism, which improves performance
7835considerably.
7836
7837AcpiExec: Restructured the command line options into -d (disable) and -e
7838(enable) options.
7839
7840----------------------------------------
784128 April 2010. Summary of changes for version 20100428:
7842
78431) ACPI CA Core Subsystem:
7844
7845Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
7846including FADT-based and GPE Block Devices, execute any _PRW methods in
7847the
7848new table, and process any _Lxx/_Exx GPE methods in the new table. Any
7849runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
7850immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
7851Devices. Provides compatibility with other ACPI implementations. Two new
7852files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
7853Moore.
7854
7855Fixed a regression introduced in version 20100331 within the table
7856manager
7857where initial table loading could fail. This was introduced in the fix
7858for
7859AcpiReallocateRootTable. Also, renamed some of fields in the table
7860manager
7861data structures to clarify their meaning and use.
7862
7863Fixed a possible allocation overrun during internal object copy in
7864AcpiUtCopySimpleObject. The original code did not correctly handle the
7865case
7866where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
7867847.
7868
7869Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
7870possible access beyond end-of-allocation. Also, now fully validate
7871descriptor
7872(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
7873
7874Example Code and Data Size: These are the sizes for the OS-independent
7875acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7876debug version of the code includes the debug output trace mechanism and
7877has a
7878much larger code and data size.
7879
7880  Previous Release:
7881    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
7882    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
7883  Current Release:
7884    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
7885    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
7886
78872) iASL Compiler/Disassembler and Tools:
7888
7889iASL: Implemented Min/Max/Len/Gran validation for address resource
7890descriptors. This change implements validation for the address fields
7891that
7892are common to all address-type resource descriptors. These checks are
7893implemented: Checks for valid Min/Max, length within the Min/Max window,
7894valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
7895per
7896table 6-40 in the ACPI 4.0a specification. Also split the large
7897aslrestype1.c
7898and aslrestype2.c files into five new files. ACPICA BZ 840.
7899
7900iASL: Added support for the _Wxx predefined names. This support was
7901missing
7902and these names were not recognized by the compiler as valid predefined
7903names. ACPICA BZ 851.
7904
7905iASL: Added an error for all predefined names that are defined to return
7906no
7907value and thus must be implemented as Control Methods. These include all
7908of
7909the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
7910names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
7911
7912iASL: Implemented the -ts option to emit hex AML data in ASL format, as
7913an
7914ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
7915be
7916dynamically loaded via the Load() operator. Also cleaned up output for
7917the
7918-
7919ta and -tc options. ACPICA BZ 853.
7920
7921Tests: Added a new file with examples of extended iASL error checking.
7922Demonstrates the advanced error checking ability of the iASL compiler.
7923Available at tests/misc/badcode.asl.
7924
7925----------------------------------------
792631 March 2010. Summary of changes for version 20100331:
7927
79281) ACPI CA Core Subsystem:
7929
7930Completed a major update for the GPE support in order to improve support
7931for
7932shared GPEs and to simplify both host OS and ACPICA code. Added a
7933reference
7934count mechanism to support shared GPEs that require multiple device
7935drivers.
7936Several external interfaces have changed. One external interface has been
7937removed. One new external interface was added. Most of the GPE external
7938interfaces now use the GPE spinlock instead of the events mutex (and the
7939Flags parameter for many GPE interfaces has been removed.) See the
7940updated
7941ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
7942Rafael
7943Wysocki. ACPICA BZ 831.
7944
7945Changed:
7946    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
7947Removed:
7948    AcpiSetGpeType
7949New:
7950    AcpiSetGpe
7951
7952Implemented write support for DataTable operation regions. These regions
7953are
7954defined via the DataTableRegion() operator. Previously, only read support
7955was
7956implemented. The ACPI specification allows DataTableRegions to be
7957read/write,
7958however.
7959
7960Implemented a new subsystem option to force a copy of the DSDT to local
7961memory. Optionally copy the entire DSDT to local memory (instead of
7962simply
7963mapping it.) There are some (albeit very rare) BIOSs that corrupt or
7964replace
7965the original DSDT, creating the need for this option. Default is FALSE,
7966do
7967not copy the DSDT.
7968
7969Implemented detection of a corrupted or replaced DSDT. This change adds
7970support to detect a DSDT that has been corrupted and/or replaced from
7971outside
7972the OS (by firmware). This is typically catastrophic for the system, but
7973has
7974been seen on some machines. Once this problem has been detected, the DSDT
7975copy option can be enabled via system configuration. Lin Ming, Bob Moore.
7976
7977Fixed two problems with AcpiReallocateRootTable during the root table
7978copy.
7979When copying the root table to the new allocation, the length used was
7980incorrect. The new size was used instead of the current table size,
7981meaning
7982too much data was copied. Also, the count of available slots for ACPI
7983tables
7984was not set correctly. Alexey Starikovskiy, Bob Moore.
7985
7986Example Code and Data Size: These are the sizes for the OS-independent
7987acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7988debug version of the code includes the debug output trace mechanism and
7989has a
7990much larger code and data size.
7991
7992  Previous Release:
7993    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
7994    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
7995  Current Release:
7996    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
7997    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
7998
79992) iASL Compiler/Disassembler and Tools:
8000
8001iASL: Implement limited typechecking for values returned from predefined
8002control methods. The type of any returned static (unnamed) object is now
8003validated. For example, Return(1). ACPICA BZ 786.
8004
8005iASL: Fixed a predefined name object verification regression. Fixes a
8006problem
8007introduced in version 20100304. An error is incorrectly generated if a
8008predefined name is declared as a static named object with a value defined
8009using the keywords "Zero", "One", or "Ones". Lin Ming.
8010
8011iASL: Added Windows 7 support for the -g option (get local ACPI tables)
8012by
8013reducing the requested registry access rights. ACPICA BZ 842.
8014
8015Disassembler: fixed a possible fault when generating External()
8016statements.
8017Introduced in commit ae7d6fd: Properly handle externals with parent-
8018prefix
8019(carat). Fixes a string length allocation calculation. Lin Ming.
8020
8021----------------------------------------
802204 March 2010. Summary of changes for version 20100304:
8023
80241) ACPI CA Core Subsystem:
8025
8026Fixed a possible problem with the AML Mutex handling function
8027AcpiExReleaseMutex where the function could fault under the very rare
8028condition when the interpreter has blocked, the interpreter lock is
8029released,
8030the interpreter is then reentered via the same thread, and attempts to
8031acquire an AML mutex that was previously acquired. FreeBSD report 140979.
8032Lin
8033Ming.
8034
8035Implemented additional configuration support for the AML "Debug Object".
8036Output from the debug object can now be enabled via a global variable,
8037AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
8038debugging.
8039This debug output is now available in the release version of ACPICA
8040instead
8041of just the debug version. Also, the entire debug output module can now
8042be
8043configured out of the ACPICA build if desired. One new file added,
8044executer/exdebug.c. Lin Ming, Bob Moore.
8045
8046Added header support for the ACPI MCHI table (Management Controller Host
8047Interface Table). This table was added in ACPI 4.0, but the defining
8048document
8049has only recently become available.
8050
8051Standardized output of integer values for ACPICA warnings/errors. Always
8052use
80530x prefix for hex output, always use %u for unsigned integer decimal
8054output.
8055Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
8056400
8057invocations.) These invocations were converted from the original
8058ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
8059
8060Example Code and Data Size: These are the sizes for the OS-independent
8061acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8062debug version of the code includes the debug output trace mechanism and
8063has a
8064much larger code and data size.
8065
8066  Previous Release:
8067    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
8068    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
8069  Current Release:
8070    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
8071    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
8072
80732) iASL Compiler/Disassembler and Tools:
8074
8075iASL: Implemented typechecking support for static (non-control method)
8076predefined named objects that are declared with the Name() operator. For
8077example, the type of this object is now validated to be of type Integer:
8078Name(_BBN, 1). This change migrates the compiler to using the core
8079predefined
8080name table instead of maintaining a local version. Added a new file,
8081aslpredef.c. ACPICA BZ 832.
8082
8083Disassembler: Added support for the ACPI 4.0 MCHI table.
8084
8085----------------------------------------
808621 January 2010. Summary of changes for version 20100121:
8087
80881) ACPI CA Core Subsystem:
8089
8090Added the 2010 copyright to all module headers and signons. This affects
8091virtually every file in the ACPICA core subsystem, the iASL compiler, the
8092tools/utilities, and the test suites.
8093
8094Implemented a change to the AcpiGetDevices interface to eliminate
8095unnecessary
8096invocations of the _STA method. In the case where a specific _HID is
8097requested, do not run _STA until a _HID match is found. This eliminates
8098potentially dozens of _STA calls during a search for a particular
8099device/HID,
8100which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
8101
8102Implemented an additional repair for predefined method return values.
8103Attempt
8104to repair unexpected NULL elements within returned Package objects.
8105Create
8106an
8107Integer of value zero, a NULL String, or a zero-length Buffer as
8108appropriate.
8109ACPICA BZ 818. Lin Ming, Bob Moore.
8110
8111Removed the obsolete ACPI_INTEGER data type. This type was introduced as
8112the
8113code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
8114(with
811564-bit AML integers). It is now obsolete and this change removes it from
8116the
8117ACPICA code base, replaced by UINT64. The original typedef has been
8118retained
8119for now for compatibility with existing device driver code. ACPICA BZ
8120824.
8121
8122Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
8123in
8124the parse tree object.
8125
8126Added additional warning options for the gcc-4 generation. Updated the
8127source
8128accordingly. This includes some code restructuring to eliminate
8129unreachable
8130code, elimination of some gotos, elimination of unused return values,
8131some
8132additional casting, and removal of redundant declarations.
8133
8134Example Code and Data Size: These are the sizes for the OS-independent
8135acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8136debug version of the code includes the debug output trace mechanism and
8137has a
8138much larger code and data size.
8139
8140  Previous Release:
8141    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
8142    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
8143  Current Release:
8144    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
8145    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
8146
81472) iASL Compiler/Disassembler and Tools:
8148
8149No functional changes for this release.
8150
8151----------------------------------------
815214 December 2009. Summary of changes for version 20091214:
8153
81541) ACPI CA Core Subsystem:
8155
8156Enhanced automatic data type conversions for predefined name repairs.
8157This
8158change expands the automatic repairs/conversions for predefined name
8159return
8160values to make Integers, Strings, and Buffers fully interchangeable.
8161Also,
8162a
8163Buffer can be converted to a Package of Integers if necessary. The
8164nsrepair.c
8165module was completely restructured. Lin Ming, Bob Moore.
8166
8167Implemented automatic removal of null package elements during predefined
8168name
8169repairs. This change will automatically remove embedded and trailing NULL
8170package elements from returned package objects that are defined to
8171contain
8172a
8173variable number of sub-packages. The driver is then presented with a
8174package
8175with no null elements to deal with. ACPICA BZ 819.
8176
8177Implemented a repair for the predefined _FDE and _GTM names. The expected
8178return value for both names is a Buffer of 5 DWORDs. This repair fixes
8179two
8180possible problems (both seen in the field), where a package of integers
8181is
8182returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
8183Kim.
8184
8185Implemented additional module-level code support. This change will
8186properly
8187execute module-level code that is not at the root of the namespace (under
8188a
8189Device object, etc.). Now executes the code within the current scope
8190instead
8191of the root. ACPICA BZ 762. Lin Ming.
8192
8193Fixed possible mutex acquisition errors when running _REG methods. Fixes
8194a
8195problem where mutex errors can occur when running a _REG method that is
8196in
8197the same scope as a method-defined operation region or an operation
8198region
8199under a module-level IF block. This type of code is rare, so the problem
8200has
8201not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
8202
8203Fixed a possible memory leak during module-level code execution. An
8204object
8205could be leaked for each block of executed module-level code if the
8206interpreter slack mode is enabled This change deletes any implicitly
8207returned
8208object from the module-level code block. Lin Ming.
8209
8210Removed messages for successful predefined repair(s). The repair
8211mechanism
8212was considered too wordy. Now, messages are only unconditionally emitted
8213if
8214the return object cannot be repaired. Existing messages for successful
8215repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
8216827.
8217
8218Example Code and Data Size: These are the sizes for the OS-independent
8219acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8220debug version of the code includes the debug output trace mechanism and
8221has a
8222much larger code and data size.
8223
8224  Previous Release:
8225    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
8226    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
8227  Current Release:
8228    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
8229    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
8230
82312) iASL Compiler/Disassembler and Tools:
8232
8233iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
8234files
8235were no longer automatically removed at the termination of the compile.
8236
8237acpiexec: Implemented the -f option to specify default region fill value.
8238This option specifies the value used to initialize buffers that simulate
8239operation regions. Default value is zero. Useful for debugging problems
8240that
8241depend on a specific initial value for a region or field.
8242
8243----------------------------------------
824412 November 2009. Summary of changes for version 20091112:
8245
82461) ACPI CA Core Subsystem:
8247
8248Implemented a post-order callback to AcpiWalkNamespace. The existing
8249interface only has a pre-order callback. This change adds an additional
8250parameter for a post-order callback which will be more useful for bus
8251scans.
8252ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
8253
8254Modified the behavior of the operation region memory mapping cache for
8255SystemMemory. Ensure that the memory mappings created for operation
8256regions
8257do not cross 4K page boundaries. Crossing a page boundary while mapping
8258regions can cause kernel warnings on some hosts if the pages have
8259different
8260attributes. Such regions are probably BIOS bugs, and this is the
8261workaround.
8262Linux BZ 14445. Lin Ming.
8263
8264Implemented an automatic repair for predefined methods that must return
8265sorted lists. This change will repair (by sorting) packages returned by
8266_ALR,
8267_PSS, and _TSS. Drivers can now assume that the packages are correctly
8268sorted
8269and do not contain NULL package elements. Adds one new file,
8270namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
8271
8272Fixed a possible fault during predefined name validation if a return
8273Package
8274object contains NULL elements. Also adds a warning if a NULL element is
8275followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
8276may
8277include repair or removal of all such NULL elements where possible.
8278
8279Implemented additional module-level executable AML code support. This
8280change
8281will execute module-level code that is not at the root of the namespace
8282(under a Device object, etc.) at table load time. Module-level executable
8283AML
8284code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
8285
8286Implemented a new internal function to create Integer objects. This
8287function
8288simplifies miscellaneous object creation code. ACPICA BZ 823.
8289
8290Reduced the severity of predefined repair messages, Warning to Info.
8291Since
8292the object was successfully repaired, a warning is too severe. Reduced to
8293an
8294info message for now. These messages may eventually be changed to debug-
8295only.
8296ACPICA BZ 812.
8297
8298Example Code and Data Size: These are the sizes for the OS-independent
8299acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8300debug version of the code includes the debug output trace mechanism and
8301has a
8302much larger code and data size.
8303
8304  Previous Release:
8305    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
8306    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
8307  Current Release:
8308    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
8309    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
8310
83112) iASL Compiler/Disassembler and Tools:
8312
8313iASL: Implemented Switch() with While(1) so that Break works correctly.
8314This
8315change correctly implements the Switch operator with a surrounding
8316While(1)
8317so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
8318
8319iASL: Added a message if a package initializer list is shorter than
8320package
8321length. Adds a new remark for a Package() declaration if an initializer
8322list
8323exists, but is shorter than the declared length of the package. Although
8324technically legal, this is probably a coding error and it is seen in the
8325field. ACPICA BZ 815. Lin Ming, Bob Moore.
8326
8327iASL: Fixed a problem where the compiler could fault after the maximum
8328number
8329of errors was reached (200).
8330
8331acpixtract: Fixed a possible warning for pointer cast if the compiler
8332warning
8333level set very high.
8334
8335----------------------------------------
833613 October 2009. Summary of changes for version 20091013:
8337
83381) ACPI CA Core Subsystem:
8339
8340Fixed a problem where an Operation Region _REG method could be executed
8341more
8342than once. If a custom address space handler is installed by the host
8343before
8344the "initialize operation regions" phase of the ACPICA initialization,
8345any
8346_REG methods for that address space could be executed twice. This change
8347fixes the problem. ACPICA BZ 427. Lin Ming.
8348
8349Fixed a possible memory leak for the Scope() ASL operator. When the exact
8350invocation of "Scope(\)" is executed (change scope to root), one internal
8351operand object was leaked. Lin Ming.
8352
8353Implemented a run-time repair for the _MAT predefined method. If the _MAT
8354return value is defined as a Field object in the AML, and the field
8355size is less than or equal to the default width of an integer (32 or
835664),_MAT
8357can incorrectly return an Integer instead of a Buffer. ACPICA now
8358automatically repairs this problem. ACPICA BZ 810.
8359
8360Implemented a run-time repair for the _BIF and _BIX predefined methods.
8361The
8362"OEM Information" field is often incorrectly returned as an Integer with
8363value zero if the field is not supported by the platform. This is due to
8364an
8365ambiguity in the ACPI specification. The field should always be a string.
8366ACPICA now automatically repairs this problem by returning a NULL string
8367within the returned Package. ACPICA BZ 807.
8368
8369Example Code and Data Size: These are the sizes for the OS-independent
8370acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8371debug version of the code includes the debug output trace mechanism and
8372has a
8373much larger code and data size.
8374
8375  Previous Release:
8376    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
8377    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
8378  Current Release:
8379    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
8380    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
8381
83822) iASL Compiler/Disassembler and Tools:
8383
8384Disassembler: Fixed a problem where references to external symbols that
8385contained one or more parent-prefixes (carats) were not handled
8386correctly,
8387possibly causing a fault. ACPICA BZ 806. Lin Ming.
8388
8389Disassembler: Restructured the code so that all functions that handle
8390external symbols are in a single module. One new file is added,
8391common/dmextern.c.
8392
8393AML Debugger: Added a max count argument for the Batch command (which
8394executes multiple predefined methods within the namespace.)
8395
8396iASL: Updated the compiler documentation (User Reference.) Available at
8397http://www.acpica.org/documentation/. ACPICA BZ 750.
8398
8399AcpiXtract: Updated for Lint and other formatting changes. Close all open
8400files.
8401
8402----------------------------------------
840303 September 2009. Summary of changes for version 20090903:
8404
84051) ACPI CA Core Subsystem:
8406
8407For Windows Vista compatibility, added the automatic execution of an _INI
8408method located at the namespace root (\_INI). This method is executed at
8409table load time. This support is in addition to the automatic execution
8410of
8411\_SB._INI. Lin Ming.
8412
8413Fixed a possible memory leak in the interpreter for AML package objects
8414if
8415the package initializer list is longer than the defined size of the
8416package.
8417This apparently can only happen if the BIOS changes the package size on
8418the
8419fly (seen in a _PSS object), as ASL compilers do not allow this. The
8420interpreter will truncate the package to the defined size (and issue an
8421error
8422message), but previously could leave the extra objects undeleted if they
8423were
8424pre-created during the argument processing (such is the case if the
8425package
8426consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
8427
8428Fixed a problem seen when a Buffer or String is stored to itself via ASL.
8429This has been reported in the field. Previously, ACPICA would zero out
8430the
8431buffer/string. Now, the operation is treated as a noop. Provides Windows
8432compatibility. ACPICA BZ 803. Lin Ming.
8433
8434Removed an extraneous error message for ASL constructs of the form
8435Store(LocalX,LocalX) when LocalX is uninitialized. These curious
8436statements
8437are seen in many BIOSs and are once again treated as NOOPs and no error
8438is
8439emitted when they are encountered. ACPICA BZ 785.
8440
8441Fixed an extraneous warning message if a _DSM reserved method returns a
8442Package object. _DSM can return any type of object, so validation on the
8443return type cannot be performed. ACPICA BZ 802.
8444
8445Example Code and Data Size: These are the sizes for the OS-independent
8446acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8447debug version of the code includes the debug output trace mechanism and
8448has a
8449much larger code and data size.
8450
8451  Previous Release:
8452    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
8453    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
8454  Current Release:
8455    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
8456    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
8457
84582) iASL Compiler/Disassembler and Tools:
8459
8460iASL: Fixed a problem with the use of the Alias operator and Resource
8461Templates. The correct alias is now constructed and no error is emitted.
8462ACPICA BZ 738.
8463
8464iASL: Implemented the -I option to specify additional search directories
8465for
8466include files. Allows multiple additional search paths for include files.
8467Directories are searched in the order specified on the command line
8468(after
8469the local directory is searched.) ACPICA BZ 800.
8470
8471iASL: Fixed a problem where the full pathname for include files was not
8472emitted for warnings/errors. This caused the IDE support to not work
8473properly. ACPICA BZ 765.
8474
8475iASL: Implemented the -@ option to specify a Windows-style response file
8476containing additional command line options. ACPICA BZ 801.
8477
8478AcpiExec: Added support to load multiple AML files simultaneously (such
8479as
8480a
8481DSDT and multiple SSDTs). Also added support for wildcards within the AML
8482pathname. These features allow all machine tables to be easily loaded and
8483debugged together. ACPICA BZ 804.
8484
8485Disassembler: Added missing support for disassembly of HEST table Error
8486Bank
8487subtables.
8488
8489----------------------------------------
849030 July 2009. Summary of changes for version 20090730:
8491
8492The ACPI 4.0 implementation for ACPICA is complete with this release.
8493
84941) ACPI CA Core Subsystem:
8495
8496ACPI 4.0: Added header file support for all new and changed ACPI tables.
8497Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
8498new
8499for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
8500BERT,
8501EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
8502There
8503have been some ACPI 4.0 changes to other existing tables. Split the large
8504actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
8505
8506ACPI 4.0: Implemented predefined name validation for all new names. There
8507are
850831 new names in ACPI 4.0. The predefined validation module was split into
8509two
8510files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
8511
8512Implemented support for so-called "module-level executable code". This is
8513executable AML code that exists outside of any control method and is
8514intended
8515to be executed at table load time. Although illegal since ACPI 2.0, this
8516type
8517of code still exists and is apparently still being created. Blocks of
8518this
8519code are now detected and executed as intended. Currently, the code
8520blocks
8521must exist under either an If, Else, or While construct; these are the
8522typical cases seen in the field. ACPICA BZ 762. Lin Ming.
8523
8524Implemented an automatic dynamic repair for predefined names that return
8525nested Package objects. This applies to predefined names that are defined
8526to
8527return a variable-length Package of sub-packages. If the number of sub-
8528packages is one, BIOS code is occasionally seen that creates a simple
8529single
8530package with no sub-packages. This code attempts to fix the problem by
8531wrapping a new package object around the existing package. These methods
8532can
8533be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
8534BZ
8535790.
8536
8537Fixed a regression introduced in 20090625 for the AcpiGetDevices
8538interface.
8539The _HID/_CID matching was broken and no longer matched IDs correctly.
8540ACPICA
8541BZ 793.
8542
8543Fixed a problem with AcpiReset where the reset would silently fail if the
8544register was one of the protected I/O ports. AcpiReset now bypasses the
8545port
8546validation mechanism. This may eventually be driven into the
8547AcpiRead/Write
8548interfaces.
8549
8550Fixed a regression related to the recent update of the AcpiRead/Write
8551interfaces. A sleep/suspend could fail if the optional PM2 Control
8552register
8553does not exist during an attempt to write the Bus Master Arbitration bit.
8554(However, some hosts already delete the code that writes this bit, and
8555the
8556code may in fact be obsolete at this date.) ACPICA BZ 799.
8557
8558Fixed a problem where AcpiTerminate could fault if inadvertently called
8559twice
8560in succession. ACPICA BZ 795.
8561
8562Example Code and Data Size: These are the sizes for the OS-independent
8563acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8564debug version of the code includes the debug output trace mechanism and
8565has a
8566much larger code and data size.
8567
8568  Previous Release:
8569    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
8570    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
8571  Current Release:
8572    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
8573    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
8574
85752) iASL Compiler/Disassembler and Tools:
8576
8577ACPI 4.0: Implemented disassembler support for all new ACPI tables and
8578changes to existing tables. ACPICA BZ 775.
8579
8580----------------------------------------
858125 June 2009. Summary of changes for version 20090625:
8582
8583The ACPI 4.0 Specification was released on June 16 and is available at
8584www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
8585continue for the next few releases.
8586
85871) ACPI CA Core Subsystem:
8588
8589ACPI 4.0: Implemented interpreter support for the IPMI operation region
8590address space. Includes support for bi-directional data buffers and an
8591IPMI
8592address space handler (to be installed by an IPMI device driver.) ACPICA
8593BZ
8594773. Lin Ming.
8595
8596ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
8597Includes
8598support in both the header files and the disassembler.
8599
8600Completed a major update for the AcpiGetObjectInfo external interface.
8601Changes include:
8602 - Support for variable, unlimited length HID, UID, and CID strings.
8603 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
8604etc.)
8605 - Call the _SxW power methods on behalf of a device object.
8606 - Determine if a device is a PCI root bridge.
8607 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
8608These changes will require an update to all callers of this interface.
8609See
8610the updated ACPICA Programmer Reference for details. One new source file
8611has
8612been added - utilities/utids.c. ACPICA BZ 368, 780.
8613
8614Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
8615transfers. The Value parameter has been extended from 32 bits to 64 bits
8616in
8617order to support new ACPI 4.0 tables. These changes will require an
8618update
8619to
8620all callers of these interfaces. See the ACPICA Programmer Reference for
8621details. ACPICA BZ 768.
8622
8623Fixed several problems with AcpiAttachData. The handler was not invoked
8624when
8625the host node was deleted. The data sub-object was not automatically
8626deleted
8627when the host node was deleted. The interface to the handler had an
8628unused
8629parameter, this was removed. ACPICA BZ 778.
8630
8631Enhanced the function that dumps ACPI table headers. All non-printable
8632characters in the string fields are now replaced with '?' (Signature,
8633OemId,
8634OemTableId, and CompilerId.) ACPI tables with non-printable characters in
8635these fields are occasionally seen in the field. ACPICA BZ 788.
8636
8637Fixed a problem with predefined method repair code where the code that
8638attempts to repair/convert an object of incorrect type is only executed
8639on
8640the first time the predefined method is called. The mechanism that
8641disables
8642warnings on subsequent calls was interfering with the repair mechanism.
8643ACPICA BZ 781.
8644
8645Fixed a possible memory leak in the predefined validation/repair code
8646when
8647a
8648buffer is automatically converted to an expected string object.
8649
8650Removed obsolete 16-bit files from the distribution and from the current
8651git
8652tree head. ACPICA BZ 776.
8653
8654Example Code and Data Size: These are the sizes for the OS-independent
8655acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8656debug version of the code includes the debug output trace mechanism and
8657has a
8658much larger code and data size.
8659
8660  Previous Release:
8661    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
8662    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
8663  Current Release:
8664    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
8665    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
8666
86672) iASL Compiler/Disassembler and Tools:
8668
8669ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
8670operation region keyword. ACPICA BZ 771, 772. Lin Ming.
8671
8672ACPI 4.0: iASL - implemented compile-time validation support for all new
8673predefined names and control methods (31 total). ACPICA BZ 769.
8674
8675----------------------------------------
867621 May 2009. Summary of changes for version 20090521:
8677
86781) ACPI CA Core Subsystem:
8679
8680Disabled the preservation of the SCI enable bit in the PM1 control
8681register.
8682The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
8683to
8684be
8685a "preserved" bit - "OSPM always preserves this bit position", section
86864.7.3.2.1. However, some machines fail if this bit is in fact preserved
8687because the bit needs to be explicitly set by the OS as a workaround. No
8688machines fail if the bit is not preserved. Therefore, ACPICA no longer
8689attempts to preserve this bit.
8690
8691Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
8692incorrectly formed _PRT package could cause a fault. Added validation to
8693ensure that each package element is actually a sub-package.
8694
8695Implemented a new interface to install or override a single control
8696method,
8697AcpiInstallMethod. This interface is useful when debugging in order to
8698repair
8699an existing method or to install a missing method without having to
8700override
8701the entire ACPI table. See the ACPICA Programmer Reference for use and
8702examples. Lin Ming, Bob Moore.
8703
8704Fixed several reference count issues with the DdbHandle object that is
8705created from a Load or LoadTable operator. Prevent premature deletion of
8706the
8707object. Also, mark the object as invalid once the table has been
8708unloaded.
8709This is needed because the handle itself may not be deleted after the
8710table
8711unload, depending on whether it has been stored in a named object by the
8712caller. Lin Ming.
8713
8714Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
8715mutexes of the same sync level are acquired but then not released in
8716strict
8717opposite order, the internally maintained Current Sync Level becomes
8718confused
8719and can cause subsequent execution errors. ACPICA BZ 471.
8720
8721Changed the allowable release order for ASL mutex objects. The ACPI 4.0
8722specification has been changed to make the SyncLevel for mutex objects
8723more
8724useful. When releasing a mutex, the SyncLevel of the mutex must now be
8725the
8726same as the current sync level. This makes more sense than the previous
8727rule
8728(SyncLevel less than or equal). This change updates the code to match the
8729specification.
8730
8731Fixed a problem with the local version of the AcpiOsPurgeCache function.
8732The
8733(local) cache must be locked during all cache object deletions. Andrew
8734Baumann.
8735
8736Updated the Load operator to use operation region interfaces. This
8737replaces
8738direct memory mapping with region access calls. Now, all region accesses
8739go
8740through the installed region handler as they should.
8741
8742Simplified and optimized the NsGetNextNode function. Reduced parameter
8743count
8744and reduced code for this frequently used function.
8745
8746Example Code and Data Size: These are the sizes for the OS-independent
8747acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8748debug version of the code includes the debug output trace mechanism and
8749has a
8750much larger code and data size.
8751
8752  Previous Release:
8753    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
8754    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
8755  Current Release:
8756    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
8757    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
8758
87592) iASL Compiler/Disassembler and Tools:
8760
8761Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
8762problems
8763with sub-table disassembly and handling invalid sub-tables. Attempt
8764recovery
8765after an invalid sub-table ID.
8766
8767----------------------------------------
876822 April 2009. Summary of changes for version 20090422:
8769
87701) ACPI CA Core Subsystem:
8771
8772Fixed a compatibility issue with the recently released I/O port
8773protection
8774mechanism. For windows compatibility, 1) On a port protection violation,
8775simply ignore the request and do not return an exception (allow the
8776control
8777method to continue execution.) 2) If only part of the request overlaps a
8778protected port, read/write the individual ports that are not protected.
8779Linux
8780BZ 13036. Lin Ming
8781
8782Enhanced the execution of the ASL/AML BreakPoint operator so that it
8783actually
8784breaks into the AML debugger if the debugger is present. This matches the
8785ACPI-defined behavior.
8786
8787Fixed several possible warnings related to the use of the configurable
8788ACPI_THREAD_ID. This type can now be configured as either an integer or a
8789pointer with no warnings. Also fixes several warnings in printf-like
8790statements for the 64-bit build when the type is configured as a pointer.
8791ACPICA BZ 766, 767.
8792
8793Fixed a number of possible warnings when compiling with gcc 4+ (depending
8794on
8795warning options.) Examples include printf formats, aliasing, unused
8796globals,
8797missing prototypes, missing switch default statements, use of non-ANSI
8798library functions, use of non-ANSI constructs. See generate/unix/Makefile
8799for
8800a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
8801
8802Example Code and Data Size: These are the sizes for the OS-independent
8803acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8804debug version of the code includes the debug output trace mechanism and
8805has a
8806much larger code and data size.
8807
8808  Previous Release:
8809    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
8810    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
8811  Current Release:
8812    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
8813    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
8814
88152) iASL Compiler/Disassembler and Tools:
8816
8817iASL: Fixed a generation warning from Bison 2.3 and fixed several
8818warnings
8819on
8820the 64-bit build.
8821
8822iASL: Fixed a problem where the Unix/Linux versions of the compiler could
8823not
8824correctly digest Windows/DOS formatted files (with CR/LF).
8825
8826iASL: Added a new option for "quiet mode" (-va) that produces only the
8827compilation summary, not individual errors and warnings. Useful for large
8828batch compilations.
8829
8830AcpiExec: Implemented a new option (-z) to enable a forced
8831semaphore/mutex
8832timeout that can be used to detect hang conditions during execution of
8833AML
8834code (includes both internal semaphores and AML-defined mutexes and
8835events.)
8836
8837Added new makefiles for the generation of acpica in a generic unix-like
8838environment. These makefiles are intended to generate the acpica tools
8839and
8840utilities from the original acpica git source tree structure.
8841
8842Test Suites: Updated and cleaned up the documentation files. Updated the
8843copyrights to 2009, affecting all source files. Use the new version of
8844iASL
8845with quiet mode. Increased the number of available semaphores in the
8846Windows
8847OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
8848added
8849an alternate implementation of the semaphore timeout to allow aslts to
8850execute fully on Cygwin.
8851
8852----------------------------------------
885320 March 2009. Summary of changes for version 20090320:
8854
88551) ACPI CA Core Subsystem:
8856
8857Fixed a possible race condition between AcpiWalkNamespace and dynamic
8858table
8859unloads. Added a reader/writer locking mechanism to allow multiple
8860concurrent
8861namespace walks (readers), but block a dynamic table unload until it can
8862gain
8863exclusive write access to the namespace. This fixes a problem where a
8864table
8865unload could (possibly catastrophically) delete the portion of the
8866namespace
8867that is currently being examined by a walk. Adds a new file, utlock.c,
8868that
8869implements the reader/writer lock mechanism. ACPICA BZ 749.
8870
8871Fixed a regression introduced in version 20090220 where a change to the
8872FADT
8873handling could cause the ACPICA subsystem to access non-existent I/O
8874ports.
8875
8876Modified the handling of FADT register and table (FACS/DSDT) addresses.
8877The
8878FADT can contain both 32-bit and 64-bit versions of these addresses.
8879Previously, the 64-bit versions were favored, meaning that if both 32 and
888064
8881versions were valid, but not equal, the 64-bit version was used. This was
8882found to cause some machines to fail. Now, in this case, the 32-bit
8883version
8884is used instead. This now matches the Windows behavior.
8885
8886Implemented a new mechanism to protect certain I/O ports. Provides
8887Microsoft
8888compatibility and protects the standard PC I/O ports from access via AML
8889code. Adds a new file, hwvalid.c
8890
8891Fixed a possible extraneous warning message from the FADT support. The
8892message warns of a 32/64 length mismatch between the legacy and GAS
8893definitions for a register.
8894
8895Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
8896is
8897made obsolete by the port protection mechanism above. It was previously
8898used
8899to validate the entire address range of an operation region, which could
8900be
8901incorrect if the range included illegal ports, but fields within the
8902operation region did not actually access those ports. Validation is now
8903performed on a per-field basis instead of the entire region.
8904
8905Modified the handling of the PM1 Status Register ignored bit (bit 11.)
8906Ignored bits must be "preserved" according to the ACPI spec. Usually,
8907this
8908means a read/modify/write when writing to the register. However, for
8909status
8910registers, writing a one means clear the event. Writing a zero means
8911preserve
8912the event (do not clear.) This behavior is clarified in the ACPI 4.0
8913spec,
8914and the ACPICA code now simply always writes a zero to the ignored bit.
8915
8916Modified the handling of ignored bits for the PM1 A/B Control Registers.
8917As
8918per the ACPI specification, for the control registers, preserve
8919(read/modify/write) all bits that are defined as either reserved or
8920ignored.
8921
8922Updated the handling of write-only bits in the PM1 A/B Control Registers.
8923When reading the register, zero the write-only bits as per the ACPI spec.
8924ACPICA BZ 443. Lin Ming.
8925
8926Removed "Linux" from the list of supported _OSI strings. Linux no longer
8927wants to reply true to this request. The Windows strings are the only
8928paths
8929through the AML that are tested and known to work properly.
8930
8931  Previous Release:
8932    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
8933    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
8934  Current Release:
8935    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
8936    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
8937
89382) iASL Compiler/Disassembler and Tools:
8939
8940Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
8941and
8942aetables.c
8943
8944----------------------------------------
894520 February 2009. Summary of changes for version 20090220:
8946
89471) ACPI CA Core Subsystem:
8948
8949Optimized the ACPI register locking. Removed locking for reads from the
8950ACPI
8951bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
8952is
8953not required when reading the single-bit registers. The
8954AcpiGetRegisterUnlocked function is no longer needed and has been
8955removed.
8956This will improve performance for reads on these registers. ACPICA BZ
8957760.
8958
8959Fixed the parameter validation for AcpiRead/Write. Now return
8960AE_BAD_PARAMETER if the input register pointer is null, and
8961AE_BAD_ADDRESS
8962if
8963the register has an address of zero. Previously, these cases simply
8964returned
8965AE_OK. For optional registers such as PM1B status/enable/control, the
8966caller
8967should check for a valid register address before calling. ACPICA BZ 748.
8968
8969Renamed the external ACPI bit register access functions. Renamed
8970AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
8971functions. The new names are AcpiReadBitRegister and
8972AcpiWriteBitRegister.
8973Also, restructured the code for these functions by simplifying the code
8974path
8975and condensing duplicate code to reduce code size.
8976
8977Added new functions to transparently handle the possibly split PM1 A/B
8978registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
8979functions
8980now handle the split registers for PM1 Status, Enable, and Control.
8981ACPICA
8982BZ
8983746.
8984
8985Added a function to handle the PM1 control registers,
8986AcpiHwWritePm1Control.
8987This function writes both of the PM1 control registers (A/B). These
8988registers
8989are different than the PM1 A/B status and enable registers in that
8990different
8991values can be written to the A/B registers. Most notably, the SLP_TYP
8992bits
8993can be different, as per the values returned from the _Sx predefined
8994methods.
8995
8996Removed an extra register write within AcpiHwClearAcpiStatus. This
8997function
8998was writing an optional PM1B status register twice. The existing call to
8999the
9000low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
9001A/B
9002register. ACPICA BZ 751.
9003
9004Split out the PM1 Status registers from the FADT. Added new globals for
9005these
9006registers (A/B), similar to the way the PM1 Enable registers are handled.
9007Instead of overloading the FADT Event Register blocks. This makes the
9008code
9009clearer and less prone to error.
9010
9011Fixed the warning message for when the platform contains too many ACPI
9012tables
9013for the default size of the global root table data structure. The
9014calculation
9015for the truncation value was incorrect.
9016
9017Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
9018obsolete macro, since it is now a simple reference to ->common.type.
9019There
9020were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
9021
9022Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
9023TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
9024simply SLEEP_TYPE. ACPICA BZ 754.
9025
9026Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
9027function is only needed on 64-bit host operating systems and is thus not
9028included for 32-bit hosts.
9029
9030Debug output: print the input and result for invocations of the _OSI
9031reserved
9032control method via the ACPI_LV_INFO debug level. Also, reduced some of
9033the
9034verbosity of this debug level. Len Brown.
9035
9036Example Code and Data Size: These are the sizes for the OS-independent
9037acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9038debug version of the code includes the debug output trace mechanism and
9039has a
9040much larger code and data size.
9041
9042  Previous Release:
9043    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
9044    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
9045  Current Release:
9046    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
9047    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
9048
90492) iASL Compiler/Disassembler and Tools:
9050
9051Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
9052various legal performance profiles.
9053
9054----------------------------------------
905523 January 2009. Summary of changes for version 20090123:
9056
90571) ACPI CA Core Subsystem:
9058
9059Added the 2009 copyright to all module headers and signons. This affects
9060virtually every file in the ACPICA core subsystem, the iASL compiler, and
9061the tools/utilities.
9062
9063Implemented a change to allow the host to override any ACPI table,
9064including
9065dynamically loaded tables. Previously, only the DSDT could be replaced by
9066the
9067host. With this change, the AcpiOsTableOverride interface is called for
9068each
9069table found in the RSDT/XSDT during ACPICA initialization, and also
9070whenever
9071a table is dynamically loaded via the AML Load operator.
9072
9073Updated FADT flag definitions, especially the Boot Architecture flags.
9074
9075Debugger: For the Find command, automatically pad the input ACPI name
9076with
9077underscores if the name is shorter than 4 characters. This enables a
9078match
9079with the actual namespace entry which is itself padded with underscores.
9080
9081Example Code and Data Size: These are the sizes for the OS-independent
9082acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9083debug version of the code includes the debug output trace mechanism and
9084has a
9085much larger code and data size.
9086
9087  Previous Release:
9088    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
9089    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
9090  Current Release:
9091    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
9092    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
9093
90942) iASL Compiler/Disassembler and Tools:
9095
9096Fix build error under Bison-2.4.
9097
9098Disassembler: Enhanced FADT support. Added decoding of the Boot
9099Architecture
9100flags. Now decode all flags, regardless of the FADT version. Flag output
9101includes the FADT version which first defined each flag.
9102
9103The iASL -g option now dumps the RSDT to a file (in addition to the FADT
9104and
9105DSDT). Windows only.
9106
9107----------------------------------------
910804 December 2008. Summary of changes for version 20081204:
9109
91101) ACPI CA Core Subsystem:
9111
9112The ACPICA Programmer Reference has been completely updated and revamped
9113for
9114this release. This includes updates to the external interfaces, OSL
9115interfaces, the overview sections, and the debugger reference.
9116
9117Several new ACPICA interfaces have been implemented and documented in the
9118programmer reference:
9119AcpiReset - Writes the reset value to the FADT-defined reset register.
9120AcpiDisableAllGpes - Disable all available GPEs.
9121AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
9122AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
9123AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
9124AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
9125AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
9126
9127Most of the public ACPI hardware-related interfaces have been moved to a
9128new
9129file, components/hardware/hwxface.c
9130
9131Enhanced the FADT parsing and low-level ACPI register access: The ACPI
9132register lengths within the FADT are now used, and the low level ACPI
9133register access no longer hardcodes the ACPI register lengths. Given that
9134there may be some risk in actually trusting the FADT register lengths, a
9135run-
9136time option was added to fall back to the default hardcoded lengths if
9137the
9138FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
9139option is set to true for now, and a warning is issued if a suspicious
9140FADT
9141register length is overridden with the default value.
9142
9143Fixed a reference count issue in NsRepairObject. This problem was
9144introduced
9145in version 20081031 as part of a fix to repair Buffer objects within
9146Packages. Lin Ming.
9147
9148Added semaphore support to the Linux/Unix application OS-services layer
9149(OSL). ACPICA BZ 448. Lin Ming.
9150
9151Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
9152will
9153be implemented in the OSL, or will binary semaphores be used instead.
9154
9155Example Code and Data Size: These are the sizes for the OS-independent
9156acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9157debug version of the code includes the debug output trace mechanism and
9158has a
9159much larger code and data size.
9160
9161  Previous Release:
9162    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
9163    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
9164  Current Release:
9165    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
9166    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
9167
91682) iASL Compiler/Disassembler and Tools:
9169
9170iASL: Completed the '-e' option to include additional ACPI tables in
9171order
9172to
9173aid with disassembly and External statement generation. ACPICA BZ 742.
9174Lin
9175Ming.
9176
9177iASL: Removed the "named object in while loop" error. The compiler cannot
9178determine how many times a loop will execute. ACPICA BZ 730.
9179
9180Disassembler: Implemented support for FADT revision 2 (MS extension).
9181ACPICA
9182BZ 743.
9183
9184Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
9185MCFG).
9186
9187----------------------------------------
918831 October 2008. Summary of changes for version 20081031:
9189
91901) ACPI CA Core Subsystem:
9191
9192Restructured the ACPICA header files into public/private. acpi.h now
9193includes
9194only the "public" acpica headers. All other acpica headers are "private"
9195and
9196should not be included by acpica users. One new file, accommon.h is used
9197to
9198include the commonly used private headers for acpica code generation.
9199Future
9200plans include moving all private headers to a new subdirectory.
9201
9202Implemented an automatic Buffer->String return value conversion for
9203predefined ACPI methods. For these methods (such as _BIF), added
9204automatic
9205conversion for return objects that are required to be a String, but a
9206Buffer
9207was found instead. This can happen when reading string battery data from
9208an
9209operation region, because it used to be difficult to convert the data
9210from
9211buffer to string from within the ASL. Ensures that the host OS is
9212provided
9213with a valid null-terminated string. Linux BZ 11822.
9214
9215Updated the FACS waking vector interfaces. Split
9216AcpiSetFirmwareWakingVector
9217into two: one for the 32-bit vector, another for the 64-bit vector. This
9218is
9219required because the host OS must setup the wake much differently for
9220each
9221vector (real vs. protected mode, etc.) and the interface itself should
9222not
9223be
9224deciding which vector to use. Also, eliminated the
9225GetFirmwareWakingVector
9226interface, as it served no purpose (only the firmware reads the vector,
9227OS
9228only writes the vector.) ACPICA BZ 731.
9229
9230Implemented a mechanism to escape infinite AML While() loops. Added a
9231loop
9232counter to force exit from AML While loops if the count becomes too
9233large.
9234This can occur in poorly written AML when the hardware does not respond
9235within a while loop and the loop does not implement a timeout. The
9236maximum
9237loop count is configurable. A new exception code is returned when a loop
9238is
9239broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
9240
9241Optimized the execution of AML While loops. Previously, a control state
9242object was allocated and freed for each execution of the loop. The
9243optimization is to simply reuse the control state for each iteration.
9244This
9245speeds up the raw loop execution time by about 5%.
9246
9247Enhanced the implicit return mechanism. For Windows compatibility, return
9248an
9249implicit integer of value zero for methods that contain no executable
9250code.
9251Such methods are seen in the field as stubs (presumably), and can cause
9252drivers to fail if they expect a return value. Lin Ming.
9253
9254Allow multiple backslashes as root prefixes in namepaths. In a fully
9255qualified namepath, allow multiple backslash prefixes. This can happen
9256(and
9257is seen in the field) because of the use of a double-backslash in strings
9258(since backslash is the escape character) causing confusion. ACPICA BZ
9259739
9260Lin Ming.
9261
9262Emit a warning if two different FACS or DSDT tables are discovered in the
9263FADT. Checks if there are two valid but different addresses for the FACS
9264and
9265DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
9266
9267Consolidated the method argument count validation code. Merged the code
9268that
9269validates control method argument counts into the predefined validation
9270module. Eliminates possible multiple warnings for incorrect argument
9271counts.
9272
9273Implemented ACPICA example code. Includes code for ACPICA initialization,
9274handler installation, and calling a control method. Available at
9275source/tools/examples.
9276
9277Added a global pointer for FACS table to simplify internal FACS access.
9278Use
9279the global pointer instead of using AcpiGetTableByIndex for each FACS
9280access.
9281This simplifies the code for the Global Lock and the Firmware Waking
9282Vector(s).
9283
9284Example Code and Data Size: These are the sizes for the OS-independent
9285acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9286debug version of the code includes the debug output trace mechanism and
9287has a
9288much larger code and data size.
9289
9290  Previous Release:
9291    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
9292    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
9293  Current Release:
9294    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
9295    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
9296
92972) iASL Compiler/Disassembler and Tools:
9298
9299iASL: Improved disassembly of external method calls. Added the -e option
9300to
9301allow the inclusion of additional ACPI tables to help with the
9302disassembly
9303of
9304method invocations and the generation of external declarations during the
9305disassembly. Certain external method invocations cannot be disassembled
9306properly without the actual declaration of the method. Use the -e option
9307to
9308include the table where the external method(s) are actually declared.
9309Most
9310useful for disassembling SSDTs that make method calls back to the master
9311DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
9312-d
9313-e dsdt.aml ssdt1.aml
9314
9315iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
9316problem where the use of an alias within a namepath would result in a not
9317found error or cause the compiler to fault. Also now allows forward
9318references from the Alias operator itself. ACPICA BZ 738.
9319
9320----------------------------------------
932126 September 2008. Summary of changes for version 20080926:
9322
93231) ACPI CA Core Subsystem:
9324
9325Designed and implemented a mechanism to validate predefined ACPI methods
9326and
9327objects. This code validates the predefined ACPI objects (objects whose
9328names
9329start with underscore) that appear in the namespace, at the time they are
9330evaluated. The argument count and the type of the returned object are
9331validated against the ACPI specification. The purpose of this validation
9332is
9333to detect problems with the BIOS-implemented predefined ACPI objects
9334before
9335the results are returned to the ACPI-related drivers. Future enhancements
9336may
9337include actual repair of incorrect return objects where possible. Two new
9338files are nspredef.c and acpredef.h.
9339
9340Fixed a fault in the AML parser if a memory allocation fails during the
9341Op
9342completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
9343
9344Fixed an issue with implicit return compatibility. This change improves
9345the
9346implicit return mechanism to be more compatible with the MS interpreter.
9347Lin
9348Ming, ACPICA BZ 349.
9349
9350Implemented support for zero-length buffer-to-string conversions. Allow
9351zero
9352length strings during interpreter buffer-to-string conversions. For
9353example,
9354during the ToDecimalString and ToHexString operators, as well as implicit
9355conversions. Fiodor Suietov, ACPICA BZ 585.
9356
9357Fixed two possible memory leaks in the error exit paths of
9358AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
9359are
9360similar in that they use a stack of state objects in order to eliminate
9361recursion. The stack must be fully unwound and deallocated if an error
9362occurs. Lin Ming. ACPICA BZ 383.
9363
9364Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
9365global
9366ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
9367Moore ACPICA BZ 442.
9368
9369Removed the obsolete version number in module headers. Removed the
9370"$Revision" number that appeared in each module header. This version
9371number
9372was useful under SourceSafe and CVS, but has no meaning under git. It is
9373not
9374only incorrect, it could also be misleading.
9375
9376Example Code and Data Size: These are the sizes for the OS-independent
9377acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9378debug version of the code includes the debug output trace mechanism and
9379has a
9380much larger code and data size.
9381
9382  Previous Release:
9383    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9384    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
9385  Current Release:
9386    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
9387    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
9388
9389----------------------------------------
939029 August 2008. Summary of changes for version 20080829:
9391
93921) ACPI CA Core Subsystem:
9393
9394Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
9395Reference. Changes include the elimination of cheating on the Object
9396field
9397for the DdbHandle subtype, addition of a reference class field to
9398differentiate the various reference types (instead of an AML opcode), and
9399the
9400cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
9401
9402Reduce an error to a warning for an incorrect method argument count.
9403Previously aborted with an error if too few arguments were passed to a
9404control method via the external ACPICA interface. Now issue a warning
9405instead
9406and continue. Handles the case where the method inadvertently declares
9407too
9408many arguments, but does not actually use the extra ones. Applies mainly
9409to
9410the predefined methods. Lin Ming. Linux BZ 11032.
9411
9412Disallow the evaluation of named object types with no intrinsic value.
9413Return
9414AE_TYPE for objects that have no value and therefore evaluation is
9415undefined:
9416Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
9417of
9418these types were allowed, but an exception would be generated at some
9419point
9420during the evaluation. Now, the error is generated up front.
9421
9422Fixed a possible memory leak in the AcpiNsGetExternalPathname function
9423(nsnames.c). Fixes a leak in the error exit path.
9424
9425Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
9426debug
9427levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
9428ACPI_EXCEPTION
9429interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
9430ACPI_LV_EVENTS.
9431
9432Removed obsolete and/or unused exception codes from the acexcep.h header.
9433There is the possibility that certain device drivers may be affected if
9434they
9435use any of these exceptions.
9436
9437The ACPICA documentation has been added to the public git source tree,
9438under
9439acpica/documents. Included are the ACPICA programmer reference, the iASL
9440compiler reference, and the changes.txt release logfile.
9441
9442Example Code and Data Size: These are the sizes for the OS-independent
9443acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9444debug version of the code includes the debug output trace mechanism and
9445has a
9446much larger code and data size.
9447
9448  Previous Release:
9449    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9450    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
9451  Current Release:
9452    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9453    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
9454
94552) iASL Compiler/Disassembler and Tools:
9456
9457Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
9458defines _SCP with 3 arguments. Previous versions defined it with only 1
9459argument. iASL now allows both definitions.
9460
9461iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
9462zero-
9463length subtables when disassembling ACPI tables. Also fixed a couple of
9464errors where a full 16-bit table type field was not extracted from the
9465input
9466properly.
9467
9468acpisrc: Improve comment counting mechanism for generating source code
9469statistics. Count first and last lines of multi-line comments as
9470whitespace,
9471not comment lines. Handle Linux legal header in addition to standard
9472acpica
9473header.
9474
9475----------------------------------------
9476
947729 July 2008. Summary of changes for version 20080729:
9478
94791) ACPI CA Core Subsystem:
9480
9481Fix a possible deadlock in the GPE dispatch. Remove call to
9482AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
9483attempt
9484to acquire the GPE lock but can deadlock since the GPE lock is already
9485held
9486at dispatch time. This code was introduced in version 20060831 as a
9487response
9488to Linux BZ 6881 and has since been removed from Linux.
9489
9490Add a function to dereference returned reference objects. Examines the
9491return
9492object from a call to AcpiEvaluateObject. Any Index or RefOf references
9493are
9494automatically dereferenced in an attempt to return something useful
9495(these
9496reference types cannot be converted into an external ACPI_OBJECT.)
9497Provides
9498MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
9499
9500x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
9501subtables for the MADT and one new subtable for the SRAT. Includes
9502disassembler and AcpiSrc support. Data from the Intel 64 Architecture
9503x2APIC
9504Specification, June 2008.
9505
9506Additional error checking for pathname utilities. Add error check after
9507all
9508calls to AcpiNsGetPathnameLength. Add status return from
9509AcpiNsBuildExternalPath and check after all calls. Add parameter
9510validation
9511to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
9512
9513Return status from the global init function AcpiUtGlobalInitialize. This
9514is
9515used by both the kernel subsystem and the utilities such as iASL
9516compiler.
9517The function could possibly fail when the caches are initialized. Yang
9518Yi.
9519
9520Add a function to decode reference object types to strings. Created for
9521improved error messages.
9522
9523Improve object conversion error messages. Better error messages during
9524object
9525conversion from internal to the external ACPI_OBJECT. Used for external
9526calls
9527to AcpiEvaluateObject.
9528
9529Example Code and Data Size: These are the sizes for the OS-independent
9530acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9531debug version of the code includes the debug output trace mechanism and
9532has a
9533much larger code and data size.
9534
9535  Previous Release:
9536    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
9537    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
9538  Current Release:
9539    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9540    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
9541
95422) iASL Compiler/Disassembler and Tools:
9543
9544Debugger: fix a possible hang when evaluating non-methods. Fixes a
9545problem
9546introduced in version 20080701. If the object being evaluated (via
9547execute
9548command) is not a method, the debugger can hang while trying to obtain
9549non-
9550existent parameters.
9551
9552iASL: relax error for using reserved "_T_x" identifiers. These names can
9553appear in a disassembled ASL file if they were emitted by the original
9554compiler. Instead of issuing an error or warning and forcing the user to
9555manually change these names, issue a remark instead.
9556
9557iASL: error if named object created in while loop. Emit an error if any
9558named
9559object is created within a While loop. If allowed, this code will
9560generate
9561a
9562run-time error on the second iteration of the loop when an attempt is
9563made
9564to
9565create the same named object twice. ACPICA bugzilla 730.
9566
9567iASL: Support absolute pathnames for include files. Add support for
9568absolute
9569pathnames within the Include operator. previously, only relative
9570pathnames
9571were supported.
9572
9573iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
9574Descriptor.
9575The ACPI spec requires one interrupt minimum. BZ 423
9576
9577iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
9578Handles the case for the Interrupt Resource Descriptor where
9579the ResourceSource argument is omitted but ResourceSourceIndex
9580is present. Now leave room for the Index. BZ 426
9581
9582iASL: Prevent error message if CondRefOf target does not exist. Fixes
9583cases
9584where an error message is emitted if the target does not exist. BZ 516
9585
9586iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
9587(get ACPI tables on Windows). This was apparently broken in version
958820070919.
9589
9590AcpiXtract: Handle EOF while extracting data. Correctly handle the case
9591where
9592the EOF happens immediately after the last table in the input file. Print
9593completion message. Previously, no message was displayed in this case.
9594
9595----------------------------------------
959601 July 2008. Summary of changes for version 20080701:
9597
95980) Git source tree / acpica.org
9599
9600Fixed a problem where a git-clone from http would not transfer the entire
9601source tree.
9602
96031) ACPI CA Core Subsystem:
9604
9605Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
9606enable bit. Now performs a read-change-write of the enable register
9607instead
9608of simply writing out the cached enable mask. This will prevent
9609inadvertent
9610enabling of GPEs if a rogue GPE is received during initialization (before
9611GPE
9612handlers are installed.)
9613
9614Implemented a copy for dynamically loaded tables. Previously, dynamically
9615loaded tables were simply mapped - but on some machines this memory is
9616corrupted after suspend. Now copy the table to a local buffer. For the
9617OpRegion case, added checksum verify. Use the table length from the table
9618header, not the region length. For the Buffer case, use the table length
9619also. Dennis Noordsij, Bob Moore. BZ 10734
9620
9621Fixed a problem where the same ACPI table could not be dynamically loaded
9622and
9623unloaded more than once. Without this change, a table cannot be loaded
9624again
9625once it has been loaded/unloaded one time. The current mechanism does not
9626unregister a table upon an unload. During a load, if the same table is
9627found,
9628this no longer returns an exception. BZ 722
9629
9630Fixed a problem where the wrong descriptor length was calculated for the
9631EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
9632EndTag
9633are calculated as 12 bytes long, but the actual length in the internal
9634descriptor is 16 because of the round-up to 8 on the 64-bit build.
9635Reported
9636by Linn Crosetto. BZ 728
9637
9638Fixed a possible memory leak in the Unload operator. The DdbHandle
9639returned
9640by Load() did not have its reference count decremented during unload,
9641leading
9642to a memory leak. Lin Ming. BZ 727
9643
9644Fixed a possible memory leak when deleting thermal/processor objects. Any
9645associated notify handlers (and objects) were not being deleted. Fiodor
9646Suietov. BZ 506
9647
9648Fixed the ordering of the ASCII names in the global mutex table to match
9649the
9650actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
9651only.
9652Vegard Nossum. BZ 726
9653
9654Enhanced the AcpiGetObjectInfo interface to return the number of required
9655arguments if the object is a control method. Added this call to the
9656debugger
9657so the proper number of default arguments are passed to a method. This
9658prevents a warning when executing methods from AcpiExec.
9659
9660Added a check for an invalid handle in AcpiGetObjectInfo. Return
9661AE_BAD_PARAMETER if input handle is invalid. BZ 474
9662
9663Fixed an extraneous warning from exconfig.c on the 64-bit build.
9664
9665Example Code and Data Size: These are the sizes for the OS-independent
9666acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9667debug version of the code includes the debug output trace mechanism and
9668has a
9669much larger code and data size.
9670
9671  Previous Release:
9672    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
9673    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
9674  Current Release:
9675    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
9676    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
9677
96782) iASL Compiler/Disassembler and Tools:
9679
9680iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
9681resource descriptor names.
9682
9683iASL: Detect invalid ASCII characters in input (windows version). Removed
9684the
9685"-CF" flag from the flex compile, enables correct detection of non-ASCII
9686characters in the input. BZ 441
9687
9688iASL: Eliminate warning when result of LoadTable is not used. Eliminate
9689the
9690"result of operation not used" warning when the DDB handle returned from
9691LoadTable is not used. The warning is not needed. BZ 590
9692
9693AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
9694method
9695to
9696pass address of table to the AML. Added option to disable OpRegion
9697simulation
9698to allow creation of an OpRegion with a real address that was passed to
9699_CFG.
9700All of this allows testing of the Load and Unload operators from
9701AcpiExec.
9702
9703Debugger: update tables command for unloaded tables. Handle unloaded
9704tables
9705and use the standard table header output routine.
9706
9707----------------------------------------
970809 June 2008. Summary of changes for version 20080609:
9709
97101) ACPI CA Core Subsystem:
9711
9712Implemented a workaround for reversed _PRT entries. A significant number
9713of
9714BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
9715change dynamically detects and repairs this problem. Provides
9716compatibility
9717with MS ACPI. BZ 6859
9718
9719Simplified the internal ACPI hardware interfaces to eliminate the locking
9720flag parameter from Register Read/Write. Added a new external interface,
9721AcpiGetRegisterUnlocked.
9722
9723Fixed a problem where the invocation of a GPE control method could hang.
9724This
9725was a regression introduced in 20080514. The new method argument count
9726validation mechanism can enter an infinite loop when a GPE method is
9727dispatched. Problem fixed by removing the obsolete code that passed GPE
9728block
9729information to the notify handler via the control method parameter
9730pointer.
9731
9732Fixed a problem where the _SST execution status was incorrectly returned
9733to
9734the caller of AcpiEnterSleepStatePrep. This was a regression introduced
9735in
973620080514. _SST is optional and a NOT_FOUND exception should never be
9737returned. BZ 716
9738
9739Fixed a problem where a deleted object could be accessed from within the
9740AML
9741parser. This was a regression introduced in version 20080123 as a fix for
9742the
9743Unload operator. Lin Ming. BZ 10669
9744
9745Cleaned up the debug operand dump mechanism. Eliminated unnecessary
9746operands
9747and eliminated the use of a negative index in a loop. Operands are now
9748displayed in the correct order, not backwards. This also fixes a
9749regression
9750introduced in 20080514 on 64-bit systems where the elimination of
9751ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
9752715
9753
9754Fixed a possible memory leak in EvPciConfigRegionSetup where the error
9755exit
9756path did not delete a locally allocated structure.
9757
9758Updated definitions for the DMAR and SRAT tables to synchronize with the
9759current specifications. Includes disassembler support.
9760
9761Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
9762loop termination value was used. Loop terminated on iteration early,
9763missing
9764one mutex. Linn Crosetto
9765
9766Example Code and Data Size: These are the sizes for the OS-independent
9767acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9768debug version of the code includes the debug output trace mechanism and
9769has a
9770much larger code and data size.
9771
9772  Previous Release:
9773    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
9774    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
9775  Current Release:
9776    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
9777    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
9778
97792) iASL Compiler/Disassembler and Tools:
9780
9781Disassembler: Implemented support for EisaId() within _CID objects. Now
9782disassemble integer _CID objects back to EisaId invocations, including
9783multiple integers within _CID packages. Includes single-step support for
9784debugger also.
9785
9786Disassembler: Added support for DMAR and SRAT table definition changes.
9787
9788----------------------------------------
978914 May 2008. Summary of changes for version 20080514:
9790
97911) ACPI CA Core Subsystem:
9792
9793Fixed a problem where GPEs were enabled too early during the ACPICA
9794initialization. This could lead to "handler not installed" errors on some
9795machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
9796This
9797ensures that all operation regions and devices throughout the namespace
9798have
9799been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
9800
9801Implemented a change to the enter sleep code. Moved execution of the _GTS
9802method to just before setting sleep enable bit. The execution was moved
9803from
9804AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
9805immediately before the SLP_EN bit is set, as per the ACPI specification.
9806Luming Yu, BZ 1653.
9807
9808Implemented a fix to disable unknown GPEs (2nd version). Now always
9809disable
9810the GPE, even if ACPICA thinks that that it is already disabled. It is
9811possible that the AML or some other code has enabled the GPE unbeknownst
9812to
9813the ACPICA code.
9814
9815Fixed a problem with the Field operator where zero-length fields would
9816return
9817an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
9818ASL
9819field declarations in Field(), BankField(), and IndexField(). BZ 10606.
9820
9821Implemented a fix for the Load operator, now load the table at the
9822namespace
9823root. This reverts a change introduced in version 20071019. The table is
9824now
9825loaded at the namespace root even though this goes against the ACPI
9826specification. This provides compatibility with other ACPI
9827implementations.
9828The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
9829Ming.
9830
9831Fixed a problem where ACPICA would not Load() tables with unusual
9832signatures.
9833Now ignore ACPI table signature for Load() operator. Only "SSDT" is
9834acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
9835Therefore, signature validation is worthless. Apparently MS ACPI accepts
9836such
9837signatures, ACPICA must be compatible. BZ 10454.
9838
9839Fixed a possible negative array index in AcpiUtValidateException. Added
9840NULL
9841fields to the exception string arrays to eliminate a -1 subtraction on
9842the
9843SubStatus field.
9844
9845Updated the debug tracking macros to reduce overall code and data size.
9846Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
9847instead of pointers to static strings. Jan Beulich and Bob Moore.
9848
9849Implemented argument count checking in control method invocation via
9850AcpiEvaluateObject. Now emit an error if too few arguments, warning if
9851too
9852many. This applies only to extern programmatic control method execution,
9853not
9854method-to-method calls within the AML. Lin Ming.
9855
9856Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
9857no
9858longer needed, especially with the removal of 16-bit support. It was
9859replaced
9860mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
9861bit
9862on
986332/64-bit platforms is required.
9864
9865Added the C const qualifier for appropriate string constants -- mostly
9866MODULE_NAME and printf format strings. Jan Beulich.
9867
9868Example Code and Data Size: These are the sizes for the OS-independent
9869acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9870debug version of the code includes the debug output trace mechanism and
9871has a
9872much larger code and data size.
9873
9874  Previous Release:
9875    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
9876    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
9877  Current Release:
9878    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
9879    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
9880
98812) iASL Compiler/Disassembler and Tools:
9882
9883Implemented ACPI table revision ID validation in the disassembler. Zero
9884is
9885always invalid. For DSDTs, the ID controls the interpreter integer width.
98861
9887means 32-bit and this is unusual. 2 or greater is 64-bit.
9888
9889----------------------------------------
989021 March 2008. Summary of changes for version 20080321:
9891
98921) ACPI CA Core Subsystem:
9893
9894Implemented an additional change to the GPE support in order to suppress
9895spurious or stray GPEs. The AcpiEvDisableGpe function will now
9896permanently
9897disable incoming GPEs that are neither enabled nor disabled -- meaning
9898that
9899the GPE is unknown to the system. This should prevent future interrupt
9900floods
9901from that GPE. BZ 6217 (Zhang Rui)
9902
9903Fixed a problem where NULL package elements were not returned to the
9904AcpiEvaluateObject interface correctly. The element was simply ignored
9905instead of returning a NULL ACPI_OBJECT package element, potentially
9906causing
9907a buffer overflow and/or confusing the caller who expected a fixed number
9908of
9909elements. BZ 10132 (Lin Ming, Bob Moore)
9910
9911Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
9912Dword,
9913Qword), Field, BankField, and IndexField operators when invoked from
9914inside
9915an executing control method. In this case, these operators created
9916namespace
9917nodes that were incorrectly left marked as permanent nodes instead of
9918temporary nodes. This could cause a problem if there is race condition
9919between an exiting control method and a running namespace walk. (Reported
9920by
9921Linn Crosetto)
9922
9923Fixed a problem where the CreateField and CreateXXXField operators would
9924incorrectly allow duplicate names (the name of the field) with no
9925exception
9926generated.
9927
9928Implemented several changes for Notify handling. Added support for new
9929Notify
9930values (ACPI 2.0+) and improved the Notify debug output. Notify on
9931PowerResource objects is no longer allowed, as per the ACPI
9932specification.
9933(Bob Moore, Zhang Rui)
9934
9935All Reference Objects returned via the AcpiEvaluateObject interface are
9936now
9937marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
9938for
9939NULL objects - either NULL package elements or unresolved named
9940references.
9941
9942Fixed a problem where an extraneous debug message was produced for
9943package
9944objects (when debugging enabled). The message "Package List length larger
9945than NumElements count" is now produced in the correct case, and is now
9946an
9947error message rather than a debug message. Added a debug message for the
9948opposite case, where NumElements is larger than the Package List (the
9949package
9950will be padded out with NULL elements as per the ACPI spec.)
9951
9952Implemented several improvements for the output of the ASL "Debug" object
9953to
9954clarify and keep all data for a given object on one output line.
9955
9956Fixed two size calculation issues with the variable-length Start
9957Dependent
9958resource descriptor.
9959
9960Example Code and Data Size: These are the sizes for the OS-independent
9961acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9962debug version of the code includes the debug output trace mechanism and
9963has
9964a much larger code and data size.
9965
9966  Previous Release:
9967    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
9968    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
9969  Current Release:
9970    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
9971    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
9972
99732) iASL Compiler/Disassembler and Tools:
9974
9975Fixed a problem with the use of the Switch operator where execution of
9976the
9977containing method by multiple concurrent threads could cause an
9978AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
9979actual Switch opcode, it must be simulated with local named temporary
9980variables and if/else pairs. The solution chosen was to mark any method
9981that
9982uses Switch as Serialized, thus preventing multiple thread entries. BZ
9983469.
9984
9985----------------------------------------
998613 February 2008. Summary of changes for version 20080213:
9987
99881) ACPI CA Core Subsystem:
9989
9990Implemented another MS compatibility design change for GPE/Notify
9991handling.
9992GPEs are now cleared/enabled asynchronously to allow all pending notifies
9993to
9994complete first. It is expected that the OSL will queue the enable request
9995behind all pending notify requests (may require changes to the local host
9996OSL
9997in AcpiOsExecute). Alexey Starikovskiy.
9998
9999Fixed a problem where buffer and package objects passed as arguments to a
10000control method via the external AcpiEvaluateObject interface could cause
10001an
10002AE_AML_INTERNAL exception depending on the order and type of operators
10003executed by the target control method.
10004
10005Fixed a problem where resource descriptor size optimization could cause a
10006problem when a _CRS resource template is passed to a _SRS method. The
10007_SRS
10008resource template must use the same descriptors (with the same size) as
10009returned from _CRS. This change affects the following resource
10010descriptors:
10011IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
100129487)
10013
10014Fixed a problem where a CopyObject to RegionField, BankField, and
10015IndexField
10016objects did not perform an implicit conversion as it should. These types
10017must
10018retain their initial type permanently as per the ACPI specification.
10019However,
10020a CopyObject to all other object types should not perform an implicit
10021conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
10022
10023Fixed a problem with the AcpiGetDevices interface where the mechanism to
10024match device CIDs did not examine the entire list of available CIDs, but
10025instead aborted on the first non-matching CID. Andrew Patterson.
10026
10027Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
10028was
10029inadvertently changed to return a 16-bit value instead of a 32-bit value,
10030truncating the upper dword of a 64-bit value. This macro is only used to
10031display debug output, so no incorrect calculations were made. Also,
10032reimplemented the macro so that a 64-bit shift is not performed by
10033inefficient compilers.
10034
10035Added missing va_end statements that should correspond with each va_start
10036statement.
10037
10038Example Code and Data Size: These are the sizes for the OS-independent
10039acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10040debug version of the code includes the debug output trace mechanism and
10041has
10042a much larger code and data size.
10043
10044  Previous Release:
10045    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
10046    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
10047  Current Release:
10048    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
10049    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
10050
100512) iASL Compiler/Disassembler and Tools:
10052
10053Implemented full disassembler support for the following new ACPI tables:
10054BERT, EINJ, and ERST. Implemented partial disassembler support for the
10055complicated HEST table. These tables support the Windows Hardware Error
10056Architecture (WHEA).
10057
10058----------------------------------------
1005923 January 2008. Summary of changes for version 20080123:
10060
100611) ACPI CA Core Subsystem:
10062
10063Added the 2008 copyright to all module headers and signons. This affects
10064virtually every file in the ACPICA core subsystem, the iASL compiler, and
10065the tools/utilities.
10066
10067Fixed a problem with the SizeOf operator when used with Package and
10068Buffer
10069objects. These objects have deferred execution for some arguments, and
10070the
10071execution is now completed before the SizeOf is executed. This problem
10072caused
10073unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
10074BZ
100759558
10076
10077Implemented an enhancement to the interpreter "slack mode". In the
10078absence
10079of
10080an explicit return or an implicitly returned object from the last
10081executed
10082opcode, a control method will now implicitly return an integer of value 0
10083for
10084Microsoft compatibility. (Lin Ming) BZ 392
10085
10086Fixed a problem with the Load operator where an exception was not
10087returned
10088in
10089the case where the table is already loaded. (Lin Ming) BZ 463
10090
10091Implemented support for the use of DDBHandles as an Indexed Reference, as
10092per
10093the ACPI spec. (Lin Ming) BZ 486
10094
10095Implemented support for UserTerm (Method invocation) for the Unload
10096operator
10097as per the ACPI spec. (Lin Ming) BZ 580
10098
10099Fixed a problem with the LoadTable operator where the OemId and
10100OemTableId
10101input strings could cause unexpected failures if they were shorter than
10102the
10103maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
10104
10105Implemented support for UserTerm (Method invocation) for the Unload
10106operator
10107as per the ACPI spec. (Lin Ming) BZ 580
10108
10109Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
10110HEST,
10111IBFT, UEFI, WDAT. Disassembler support is forthcoming.
10112
10113Example Code and Data Size: These are the sizes for the OS-independent
10114acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10115debug version of the code includes the debug output trace mechanism and
10116has
10117a much larger code and data size.
10118
10119  Previous Release:
10120    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
10121    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
10122  Current Release:
10123    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
10124    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
10125
101262) iASL Compiler/Disassembler and Tools:
10127
10128Implemented support in the disassembler for checksum validation on
10129incoming
10130binary DSDTs and SSDTs. If incorrect, a message is displayed within the
10131table
10132header dump at the start of the disassembly.
10133
10134Implemented additional debugging information in the namespace listing
10135file
10136created during compilation. In addition to the namespace hierarchy, the
10137full
10138pathname to each namespace object is displayed.
10139
10140Fixed a problem with the disassembler where invalid ACPI tables could
10141cause
10142faults or infinite loops.
10143
10144Fixed an unexpected parse error when using the optional "parameter types"
10145list in a control method declaration. (Lin Ming) BZ 397
10146
10147Fixed a problem where two External declarations with the same name did
10148not
10149cause an error (Lin Ming) BZ 509
10150
10151Implemented support for full TermArgs (adding Argx, Localx and method
10152invocation) for the ParameterData parameter to the LoadTable operator.
10153(Lin
10154Ming) BZ 583,587
10155
10156----------------------------------------
1015719 December 2007. Summary of changes for version 20071219:
10158
101591) ACPI CA Core Subsystem:
10160
10161Implemented full support for deferred execution for the TermArg string
10162arguments for DataTableRegion. This enables forward references and full
10163operand resolution for the three string arguments. Similar to
10164OperationRegion
10165deferred argument execution.) Lin Ming. BZ 430
10166
10167Implemented full argument resolution support for the BankValue argument
10168to
10169BankField. Previously, only constants were supported, now any TermArg may
10170be
10171used. Lin Ming BZ 387, 393
10172
10173Fixed a problem with AcpiGetDevices where the search of a branch of the
10174device tree could be terminated prematurely. In accordance with the ACPI
10175specification, the search down the current branch is terminated if a
10176device
10177is both not present and not functional (instead of just not present.)
10178Yakui
10179Zhao.
10180
10181Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
10182if
10183the underlying AML code changed the GPE enable registers. Now, any
10184unknown
10185incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
10186disabled
10187instead of simply ignored. Rui Zhang.
10188
10189Fixed a problem with Index Fields where the Index register was
10190incorrectly
10191limited to a maximum of 32 bits. Now any size may be used.
10192
10193Fixed a couple memory leaks associated with "implicit return" objects
10194when
10195the AML Interpreter slack mode is enabled. Lin Ming BZ 349
10196
10197Example Code and Data Size: These are the sizes for the OS-independent
10198acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10199debug version of the code includes the debug output trace mechanism and
10200has
10201a much larger code and data size.
10202
10203  Previous Release:
10204    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
10205    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
10206  Current Release:
10207    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
10208    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
10209
10210----------------------------------------
1021114 November 2007. Summary of changes for version 20071114:
10212
102131) ACPI CA Core Subsystem:
10214
10215Implemented event counters for each of the Fixed Events, the ACPI SCI
10216(interrupt) itself, and control methods executed. Named
10217AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
10218These
10219should be useful for debugging and statistics.
10220
10221Implemented a new external interface, AcpiGetStatistics, to retrieve the
10222contents of the various event counters. Returns the current values for
10223AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
10224AcpiMethodCount. The interface can be expanded in the future if new
10225counters
10226are added. Device drivers should use this interface rather than access
10227the
10228counters directly.
10229
10230Fixed a problem with the FromBCD and ToBCD operators. With some
10231compilers,
10232the ShortDivide function worked incorrectly, causing problems with the
10233BCD
10234functions with large input values. A truncation from 64-bit to 32-bit
10235inadvertently occurred. Internal BZ 435. Lin Ming
10236
10237Fixed a problem with Index references passed as method arguments.
10238References
10239passed as arguments to control methods were dereferenced immediately
10240(before
10241control was passed to the called method). The references are now
10242correctly
10243passed directly to the called method. BZ 5389. Lin Ming
10244
10245Fixed a problem with CopyObject used in conjunction with the Index
10246operator.
10247The reference was incorrectly dereferenced before the copy. The reference
10248is
10249now correctly copied. BZ 5391. Lin Ming
10250
10251Fixed a problem with Control Method references within Package objects.
10252These
10253references are now correctly generated. This completes the package
10254construction overhaul that began in version 20071019.
10255
10256Example Code and Data Size: These are the sizes for the OS-independent
10257acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10258debug version of the code includes the debug output trace mechanism and
10259has
10260a much larger code and data size.
10261
10262  Previous Release:
10263    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
10264    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
10265  Current Release:
10266    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
10267    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
10268
10269
102702) iASL Compiler/Disassembler and Tools:
10271
10272The AcpiExec utility now installs handlers for all of the predefined
10273Operation Region types. New types supported are: PCI_Config, CMOS, and
10274PCIBARTarget.
10275
10276Fixed a problem with the 64-bit version of AcpiExec where the extended
10277(64-
10278bit) address fields for the DSDT and FACS within the FADT were not being
10279used, causing truncation of the upper 32-bits of these addresses. Lin
10280Ming
10281and Bob Moore
10282
10283----------------------------------------
1028419 October 2007. Summary of changes for version 20071019:
10285
102861) ACPI CA Core Subsystem:
10287
10288Fixed a problem with the Alias operator when the target of the alias is a
10289named ASL operator that opens a new scope -- Scope, Device,
10290PowerResource,
10291Processor, and ThermalZone. In these cases, any children of the original
10292operator could not be accessed via the alias, potentially causing
10293unexpected
10294AE_NOT_FOUND exceptions. (BZ 9067)
10295
10296Fixed a problem with the Package operator where all named references were
10297created as object references and left otherwise unresolved. According to
10298the
10299ACPI specification, a Package can only contain Data Objects or references
10300to
10301control methods. The implication is that named references to Data Objects
10302(Integer, Buffer, String, Package, BufferField, Field) should be resolved
10303immediately upon package creation. This is the approach taken with this
10304change. References to all other named objects (Methods, Devices, Scopes,
10305etc.) are all now properly created as reference objects. (BZ 5328)
10306
10307Reverted a change to Notify handling that was introduced in version
1030820070508. This version changed the Notify handling from asynchronous to
10309fully synchronous (Device driver Notify handling with respect to the
10310Notify
10311ASL operator). It was found that this change caused more problems than it
10312solved and was removed by most users.
10313
10314Fixed a problem with the Increment and Decrement operators where the type
10315of
10316the target object could be unexpectedly and incorrectly changed. (BZ 353)
10317Lin Ming.
10318
10319Fixed a problem with the Load and LoadTable operators where the table
10320location within the namespace was ignored. Instead, the table was always
10321loaded into the root or current scope. Lin Ming.
10322
10323Fixed a problem with the Load operator when loading a table from a buffer
10324object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
10325
10326Fixed a problem with the Debug object where a store of a DdbHandle
10327reference
10328object to the Debug object could cause a fault.
10329
10330Added a table checksum verification for the Load operator, in the case
10331where
10332the load is from a buffer. (BZ 578).
10333
10334Implemented additional parameter validation for the LoadTable operator.
10335The
10336length of the input strings SignatureString, OemIdString, and OemTableId
10337are
10338now checked for maximum lengths. (BZ 582) Lin Ming.
10339
10340Example Code and Data Size: These are the sizes for the OS-independent
10341acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10342debug version of the code includes the debug output trace mechanism and
10343has
10344a much larger code and data size.
10345
10346  Previous Release:
10347    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
10348    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
10349  Current Release:
10350    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
10351    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
10352
10353
103542) iASL Compiler/Disassembler:
10355
10356Fixed a problem where if a single file was specified and the file did not
10357exist, no error message was emitted. (Introduced with wildcard support in
10358version 20070917.)
10359
10360----------------------------------------
1036119 September 2007. Summary of changes for version 20070919:
10362
103631) ACPI CA Core Subsystem:
10364
10365Designed and implemented new external interfaces to install and remove
10366handlers for ACPI table-related events. Current events that are defined
10367are
10368LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
10369they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
10370AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
10371
10372Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
10373(acpi_serialized option on Linux) could cause some systems to hang during
10374initialization. (Bob Moore) BZ 8171
10375
10376Fixed a problem where objects of certain types (Device, ThermalZone,
10377Processor, PowerResource) can be not found if they are declared and
10378referenced from within the same control method (Lin Ming) BZ 341
10379
10380Example Code and Data Size: These are the sizes for the OS-independent
10381acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10382debug version of the code includes the debug output trace mechanism and
10383has
10384a much larger code and data size.
10385
10386  Previous Release:
10387    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
10388    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
10389  Current Release:
10390    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
10391    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
10392
10393
103942) iASL Compiler/Disassembler:
10395
10396Implemented support to allow multiple files to be compiled/disassembled
10397in
10398a
10399single invocation. This includes command line wildcard support for both
10400the
10401Windows and Unix versions of the compiler. This feature simplifies the
10402disassembly and compilation of multiple ACPI tables in a single
10403directory.
10404
10405----------------------------------------
1040608 May 2007. Summary of changes for version 20070508:
10407
104081) ACPI CA Core Subsystem:
10409
10410Implemented a Microsoft compatibility design change for the handling of
10411the
10412Notify AML operator. Previously, notify handlers were dispatched and
10413executed completely asynchronously in a deferred thread. The new design
10414still executes the notify handlers in a different thread, but the
10415original
10416thread that executed the Notify() now waits at a synchronization point
10417for
10418the notify handler to complete. Some machines depend on a synchronous
10419Notify
10420operator in order to operate correctly.
10421
10422Implemented support to allow Package objects to be passed as method
10423arguments to the external AcpiEvaluateObject interface. Previously, this
10424would return the AE_NOT_IMPLEMENTED exception. This feature had not been
10425implemented since there were no reserved control methods that required it
10426until recently.
10427
10428Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
10429that
10430contained invalid non-zero values in reserved fields could cause later
10431failures because these fields have meaning in later revisions of the
10432FADT.
10433For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
10434fields
10435are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
10436
10437Fixed a problem where the Global Lock handle was not properly updated if
10438a
10439thread that acquired the Global Lock via executing AML code then
10440attempted
10441to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
10442Joe
10443Liu.
10444
10445Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
10446could be corrupted if the interrupt being removed was at the head of the
10447list. Reported by Linn Crosetto.
10448
10449Example Code and Data Size: These are the sizes for the OS-independent
10450acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10451debug version of the code includes the debug output trace mechanism and
10452has
10453a much larger code and data size.
10454
10455  Previous Release:
10456    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10457    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
10458  Current Release:
10459    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
10460    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
10461
10462----------------------------------------
1046320 March 2007. Summary of changes for version 20070320:
10464
104651) ACPI CA Core Subsystem:
10466
10467Implemented a change to the order of interpretation and evaluation of AML
10468operand objects within the AML interpreter. The interpreter now evaluates
10469operands in the order that they appear in the AML stream (and the
10470corresponding ASL code), instead of in the reverse order (after the
10471entire
10472operand list has been parsed). The previous behavior caused several
10473subtle
10474incompatibilities with the Microsoft AML interpreter as well as being
10475somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
10476
10477Implemented a change to the ACPI Global Lock support. All interfaces to
10478the
10479global lock now allow the same thread to acquire the lock multiple times.
10480This affects the AcpiAcquireGlobalLock external interface to the global
10481lock
10482as well as the internal use of the global lock to support AML fields -- a
10483control method that is holding the global lock can now simultaneously
10484access
10485AML fields that require global lock protection. Previously, in both
10486cases,
10487this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
10488to
10489AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
10490Controller. There is no change to the behavior of the AML Acquire
10491operator,
10492as this can already be used to acquire a mutex multiple times by the same
10493thread. BZ 8066. With assistance from Alexey Starikovskiy.
10494
10495Fixed a problem where invalid objects could be referenced in the AML
10496Interpreter after error conditions. During operand evaluation, ensure
10497that
10498the internal "Return Object" field is cleared on error and only valid
10499pointers are stored there. Caused occasional access to deleted objects
10500that
10501resulted in "large reference count" warning messages. Valery Podrezov.
10502
10503Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
10504on
10505deeply nested control method invocations. BZ 7873, local BZ 487. Valery
10506Podrezov.
10507
10508Fixed an internal problem with the handling of result objects on the
10509interpreter result stack. BZ 7872. Valery Podrezov.
10510
10511Removed obsolete code that handled the case where AML_NAME_OP is the
10512target
10513of a reference (Reference.Opcode). This code was no longer necessary. BZ
105147874. Valery Podrezov.
10515
10516Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
10517was
10518a
10519remnant from the previously discontinued 16-bit support.
10520
10521Example Code and Data Size: These are the sizes for the OS-independent
10522acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10523debug version of the code includes the debug output trace mechanism and
10524has
10525a much larger code and data size.
10526
10527  Previous Release:
10528    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10529    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10530  Current Release:
10531    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10532    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
10533
10534----------------------------------------
1053526 January 2007. Summary of changes for version 20070126:
10536
105371) ACPI CA Core Subsystem:
10538
10539Added the 2007 copyright to all module headers and signons. This affects
10540virtually every file in the ACPICA core subsystem, the iASL compiler, and
10541the utilities.
10542
10543Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
10544during a table load. A bad pointer was passed in the case where the DSDT
10545is
10546overridden, causing a fault in this case.
10547
10548Example Code and Data Size: These are the sizes for the OS-independent
10549acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10550debug version of the code includes the debug output trace mechanism and
10551has
10552a much larger code and data size.
10553
10554  Previous Release:
10555    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10556    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10557  Current Release:
10558    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10559    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10560
10561----------------------------------------
1056215 December 2006. Summary of changes for version 20061215:
10563
105641) ACPI CA Core Subsystem:
10565
10566Support for 16-bit ACPICA has been completely removed since it is no
10567longer
10568necessary and it clutters the code. All 16-bit macros, types, and
10569conditional compiles have been removed, cleaning up and simplifying the
10570code
10571across the entire subsystem. DOS support is no longer needed since the
10572bootable Linux firmware kit is now available.
10573
10574The handler for the Global Lock is now removed during AcpiTerminate to
10575enable a clean subsystem restart, via the implementation of the
10576AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
10577HP)
10578
10579Implemented enhancements to the multithreading support within the
10580debugger
10581to enable improved multithreading debugging and evaluation of the
10582subsystem.
10583(Valery Podrezov)
10584
10585Debugger: Enhanced the Statistics/Memory command to emit the total
10586(maximum)
10587memory used during the execution, as well as the maximum memory consumed
10588by
10589each of the various object types. (Valery Podrezov)
10590
10591Example Code and Data Size: These are the sizes for the OS-independent
10592acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10593debug version of the code includes the debug output trace mechanism and
10594has
10595a much larger code and data size.
10596
10597  Previous Release:
10598    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
10599    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
10600  Current Release:
10601    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10602    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10603
10604
106052) iASL Compiler/Disassembler and Tools:
10606
10607AcpiExec: Implemented a new option (-m) to display full memory use
10608statistics upon subsystem/program termination. (Valery Podrezov)
10609
10610----------------------------------------
1061109 November 2006. Summary of changes for version 20061109:
10612
106131) ACPI CA Core Subsystem:
10614
10615Optimized the Load ASL operator in the case where the source operand is
10616an
10617operation region. Simply map the operation region memory, instead of
10618performing a bytewise read. (Region must be of type SystemMemory, see
10619below.)
10620
10621Fixed the Load ASL operator for the case where the source operand is a
10622region field. A buffer object is also allowed as the source operand. BZ
10623480
10624
10625Fixed a problem where the Load ASL operator allowed the source operand to
10626be
10627an operation region of any type. It is now restricted to regions of type
10628SystemMemory, as per the ACPI specification. BZ 481
10629
10630Additional cleanup and optimizations for the new Table Manager code.
10631
10632AcpiEnable will now fail if all of the required ACPI tables are not
10633loaded
10634(FADT, FACS, DSDT). BZ 477
10635
10636Added #pragma pack(8/4) to acobject.h to ensure that the structures in
10637this
10638header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
10639manually optimized to be aligned and will not work if it is byte-packed.
10640
10641Example Code and Data Size: These are the sizes for the OS-independent
10642acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10643debug version of the code includes the debug output trace mechanism and
10644has
10645a much larger code and data size.
10646
10647  Previous Release:
10648    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
10649    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
10650  Current Release:
10651    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
10652    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
10653
10654
106552) iASL Compiler/Disassembler and Tools:
10656
10657Fixed a problem where the presence of the _OSI predefined control method
10658within complex expressions could cause an internal compiler error.
10659
10660AcpiExec: Implemented full region support for multiple address spaces.
10661SpaceId is now part of the REGION object. BZ 429
10662
10663----------------------------------------
1066411 October 2006. Summary of changes for version 20061011:
10665
106661) ACPI CA Core Subsystem:
10667
10668Completed an AML interpreter performance enhancement for control method
10669execution. Previously a 2-pass parse/execution, control methods are now
10670completely parsed and executed in a single pass. This improves overall
10671interpreter performance by ~25%, reduces code size, and reduces CPU stack
10672use. (Valery Podrezov + interpreter changes in version 20051202 that
10673eliminated namespace loading during the pass one parse.)
10674
10675Implemented _CID support for PCI Root Bridge detection. If the _HID does
10676not
10677match the predefined PCI Root Bridge IDs, the _CID list (if present) is
10678now
10679obtained and also checked for an ID match.
10680
10681Implemented additional support for the PCI _ADR execution: upsearch until
10682a
10683device scope is found before executing _ADR. This allows PCI_Config
10684operation regions to be declared locally within control methods
10685underneath
10686PCI device objects.
10687
10688Fixed a problem with a possible race condition between threads executing
10689AcpiWalkNamespace and the AML interpreter. This condition was removed by
10690modifying AcpiWalkNamespace to (by default) ignore all temporary
10691namespace
10692entries created during any concurrent control method execution. An
10693additional namespace race condition is known to exist between
10694AcpiWalkNamespace and the Load/Unload ASL operators and is still under
10695investigation.
10696
10697Restructured the AML ParseLoop function, breaking it into several
10698subfunctions in order to reduce CPU stack use and improve
10699maintainability.
10700(Mikhail Kouzmich)
10701
10702AcpiGetHandle: Fix for parameter validation to detect invalid
10703combinations
10704of prefix handle and pathname. BZ 478
10705
10706Example Code and Data Size: These are the sizes for the OS-independent
10707acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10708debug version of the code includes the debug output trace mechanism and
10709has
10710a much larger code and data size.
10711
10712  Previous Release:
10713    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10714    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
10715  Current Release:
10716    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
10717    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
10718
107192) iASL Compiler/Disassembler and Tools:
10720
10721Ported the -g option (get local ACPI tables) to the new ACPICA Table
10722Manager
10723to restore original behavior.
10724
10725----------------------------------------
1072627 September 2006. Summary of changes for version 20060927:
10727
107281) ACPI CA Core Subsystem:
10729
10730Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
10731These functions now use a spinlock for mutual exclusion and the interrupt
10732level indication flag is not needed.
10733
10734Fixed a problem with the Global Lock where the lock could appear to be
10735obtained before it is actually obtained. The global lock semaphore was
10736inadvertently created with one unit instead of zero units. (BZ 464)
10737Fiodor
10738Suietov.
10739
10740Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
10741during
10742a read from a buffer or region field. (BZ 458) Fiodor Suietov.
10743
10744Example Code and Data Size: These are the sizes for the OS-independent
10745acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10746debug version of the code includes the debug output trace mechanism and
10747has
10748a much larger code and data size.
10749
10750  Previous Release:
10751    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10752    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
10753  Current Release:
10754    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10755    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
10756
10757
107582) iASL Compiler/Disassembler and Tools:
10759
10760Fixed a compilation problem with the pre-defined Resource Descriptor
10761field
10762names where an "object does not exist" error could be incorrectly
10763generated
10764if the parent ResourceTemplate pathname places the template within a
10765different namespace scope than the current scope. (BZ 7212)
10766
10767Fixed a problem where the compiler could hang after syntax errors
10768detected
10769in an ElseIf construct. (BZ 453)
10770
10771Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
10772operator. An incorrect output filename was produced when this parameter
10773was
10774a null string (""). Now, the original input filename is used as the AML
10775output filename, with an ".aml" extension.
10776
10777Implemented a generic batch command mode for the AcpiExec utility
10778(execute
10779any AML debugger command) (Valery Podrezov).
10780
10781----------------------------------------
1078212 September 2006. Summary of changes for version 20060912:
10783
107841) ACPI CA Core Subsystem:
10785
10786Enhanced the implementation of the "serialized mode" of the interpreter
10787(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
10788specified, instead of creating a serialization semaphore per control
10789method,
10790the interpreter lock is simply no longer released before a blocking
10791operation during control method execution. This effectively makes the AML
10792Interpreter single-threaded. The overhead of a semaphore per-method is
10793eliminated.
10794
10795Fixed a regression where an error was no longer emitted if a control
10796method
10797attempts to create 2 objects of the same name. This once again returns
10798AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
10799that
10800will dynamically serialize the control method to possible prevent future
10801errors. (BZ 440)
10802
10803Integrated a fix for a problem with PCI Express HID detection in the PCI
10804Config Space setup procedure. (BZ 7145)
10805
10806Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
10807AcpiHwInitialize function - the FADT registers are now validated when the
10808table is loaded.
10809
10810Added two new warnings during FADT verification - 1) if the FADT is
10811larger
10812than the largest known FADT version, and 2) if there is a mismatch
10813between
10814a
1081532-bit block address and the 64-bit X counterpart (when both are non-
10816zero.)
10817
10818Example Code and Data Size: These are the sizes for the OS-independent
10819acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10820debug version of the code includes the debug output trace mechanism and
10821has
10822a much larger code and data size.
10823
10824  Previous Release:
10825    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
10826    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
10827  Current Release:
10828    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10829    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
10830
10831
108322) iASL Compiler/Disassembler and Tools:
10833
10834Fixed a problem with the implementation of the Switch() operator where
10835the
10836temporary variable was declared too close to the actual Switch, instead
10837of
10838at method level. This could cause a problem if the Switch() operator is
10839within a while loop, causing an error on the second iteration. (BZ 460)
10840
10841Disassembler - fix for error emitted for unknown type for target of scope
10842operator. Now, ignore it and continue.
10843
10844Disassembly of an FADT now verifies the input FADT and reports any errors
10845found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
10846
10847Disassembly of raw data buffers with byte initialization data now
10848prefixes
10849each output line with the current buffer offset.
10850
10851Disassembly of ASF! table now includes all variable-length data fields at
10852the end of some of the subtables.
10853
10854The disassembler now emits a comment if a buffer appears to be a
10855ResourceTemplate, but cannot be disassembled as such because the EndTag
10856does
10857not appear at the very end of the buffer.
10858
10859AcpiExec - Added the "-t" command line option to enable the serialized
10860mode
10861of the AML interpreter.
10862
10863----------------------------------------
1086431 August 2006. Summary of changes for version 20060831:
10865
108661) ACPI CA Core Subsystem:
10867
10868Miscellaneous fixes for the Table Manager:
10869- Correctly initialize internal common FADT for all 64-bit "X" fields
10870- Fixed a couple table mapping issues during table load
10871- Fixed a couple alignment issues for IA64
10872- Initialize input array to zero in AcpiInitializeTables
10873- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
10874AcpiGetTableByIndex
10875
10876Change for GPE support: when a "wake" GPE is received, all wake GPEs are
10877now
10878immediately disabled to prevent the waking GPE from firing again and to
10879prevent other wake GPEs from interrupting the wake process.
10880
10881Added the AcpiGpeCount global that tracks the number of processed GPEs,
10882to
10883be used for debugging systems with a large number of ACPI interrupts.
10884
10885Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
10886both the ACPICA headers and the disassembler.
10887
10888Example Code and Data Size: These are the sizes for the OS-independent
10889acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10890debug version of the code includes the debug output trace mechanism and
10891has
10892a much larger code and data size.
10893
10894  Previous Release:
10895    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
10896    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
10897  Current Release:
10898    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
10899    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
10900
10901
109022) iASL Compiler/Disassembler and Tools:
10903
10904Disassembler support for the DMAR ACPI table.
10905
10906----------------------------------------
1090723 August 2006. Summary of changes for version 20060823:
10908
109091) ACPI CA Core Subsystem:
10910
10911The Table Manager component has been completely redesigned and
10912reimplemented. The new design is much simpler, and reduces the overall
10913code
10914and data size of the kernel-resident ACPICA by approximately 5%. Also, it
10915is
10916now possible to obtain the ACPI tables very early during kernel
10917initialization, even before dynamic memory management is initialized.
10918(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
10919
10920Obsolete ACPICA interfaces:
10921
10922- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
10923init
10924time).
10925- AcpiLoadTable: Not needed.
10926- AcpiUnloadTable: Not needed.
10927
10928New ACPICA interfaces:
10929
10930- AcpiInitializeTables: Must be called before the table manager can be
10931used.
10932- AcpiReallocateRootTable: Used to transfer the root table to dynamically
10933allocated memory after it becomes available.
10934- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
10935tables
10936in the RSDT/XSDT.
10937
10938Other ACPICA changes:
10939
10940- AcpiGetTableHeader returns the actual mapped table header, not a copy.
10941Use
10942AcpiOsUnmapMemory to free this mapping.
10943- AcpiGetTable returns the actual mapped table. The mapping is managed
10944internally and must not be deleted by the caller. Use of this interface
10945causes no additional dynamic memory allocation.
10946- AcpiFindRootPointer: Support for physical addressing has been
10947eliminated,
10948it appeared to be unused.
10949- The interface to AcpiOsMapMemory has changed to be consistent with the
10950other allocation interfaces.
10951- The interface to AcpiOsGetRootPointer has changed to eliminate
10952unnecessary
10953parameters.
10954- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
1095564-
10956bit platforms. Was previously 64 bits on all platforms.
10957- The interface to the ACPI Global Lock acquire/release macros have
10958changed
10959slightly since ACPICA no longer keeps a local copy of the FACS with a
10960constructed pointer to the actual global lock.
10961
10962Porting to the new table manager:
10963
10964- AcpiInitializeTables: Must be called once, and can be called anytime
10965during the OS initialization process. It allows the host to specify an
10966area
10967of memory to be used to store the internal version of the RSDT/XSDT (root
10968table). This allows the host to access ACPI tables before memory
10969management
10970is initialized and running.
10971- AcpiReallocateRootTable: Can be called after memory management is
10972running
10973to copy the root table to a dynamically allocated array, freeing up the
10974scratch memory specified in the call to AcpiInitializeTables.
10975- AcpiSubsystemInitialize: This existing interface is independent of the
10976Table Manager, and does not have to be called before the Table Manager
10977can
10978be used, it only must be called before the rest of ACPICA can be used.
10979- ACPI Tables: Some changes have been made to the names and structure of
10980the
10981actbl.h and actbl1.h header files and may require changes to existing
10982code.
10983For example, bitfields have been completely removed because of their lack
10984of
10985portability across C compilers.
10986- Update interfaces to the Global Lock acquire/release macros if local
10987versions are used. (see acwin.h)
10988
10989Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
10990
10991New files: tbfind.c
10992
10993Example Code and Data Size: These are the sizes for the OS-independent
10994acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10995debug version of the code includes the debug output trace mechanism and
10996has
10997a much larger code and data size.
10998
10999  Previous Release:
11000    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11001    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11002  Current Release:
11003    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
11004    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
11005
11006
110072) iASL Compiler/Disassembler and Tools:
11008
11009No changes for this release.
11010
11011----------------------------------------
1101221 July 2006. Summary of changes for version 20060721:
11013
110141) ACPI CA Core Subsystem:
11015
11016The full source code for the ASL test suite used to validate the iASL
11017compiler and the ACPICA core subsystem is being released with the ACPICA
11018source for the first time. The source is contained in a separate package
11019and
11020consists of over 1100 files that exercise all ASL/AML operators. The
11021package
11022should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
11023Fiodor
11024Suietov)
11025
11026Completed a new design and implementation for support of the ACPI Global
11027Lock. On the OS side, the global lock is now treated as a standard AML
11028mutex. Previously, multiple OS threads could "acquire" the global lock
11029simultaneously. However, this could cause the BIOS to be starved out of
11030the
11031lock - especially in cases such as the Embedded Controller driver where
11032there is a tight coupling between the OS and the BIOS.
11033
11034Implemented an optimization for the ACPI Global Lock interrupt mechanism.
11035The Global Lock interrupt handler no longer queues the execution of a
11036separate thread to signal the global lock semaphore. Instead, the
11037semaphore
11038is signaled directly from the interrupt handler.
11039
11040Implemented support within the AML interpreter for package objects that
11041contain a larger AML length (package list length) than the package
11042element
11043count. In this case, the length of the package is truncated to match the
11044package element count. Some BIOS code apparently modifies the package
11045length
11046on the fly, and this change supports this behavior. Provides
11047compatibility
11048with the MS AML interpreter. (With assistance from Fiodor Suietov)
11049
11050Implemented a temporary fix for the BankValue parameter of a Bank Field
11051to
11052support all constant values, now including the Zero and One opcodes.
11053Evaluation of this parameter must eventually be converted to a full
11054TermArg
11055evaluation. A not-implemented error is now returned (temporarily) for
11056non-
11057constant values for this parameter.
11058
11059Fixed problem reports (Fiodor Suietov) integrated:
11060- Fix for premature object deletion after CopyObject on Operation Region
11061(BZ
11062350)
11063
11064Example Code and Data Size: These are the sizes for the OS-independent
11065acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11066debug version of the code includes the debug output trace mechanism and
11067has
11068a much larger code and data size.
11069
11070  Previous Release:
11071    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
11072    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
11073  Current Release:
11074    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11075    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11076
11077
110782) iASL Compiler/Disassembler and Tools:
11079
11080No changes for this release.
11081
11082----------------------------------------
1108307 July 2006. Summary of changes for version 20060707:
11084
110851) ACPI CA Core Subsystem:
11086
11087Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
11088that do not allow the initialization of address pointers within packed
11089structures - even though the hardware itself may support misaligned
11090transfers. Some of the debug data structures are packed by default to
11091minimize size.
11092
11093Added an error message for the case where AcpiOsGetThreadId() returns
11094zero.
11095A non-zero value is required by the core ACPICA code to ensure the proper
11096operation of AML mutexes and recursive control methods.
11097
11098The DSDT is now the only ACPI table that determines whether the AML
11099interpreter is in 32-bit or 64-bit mode. Not really a functional change,
11100but
11101the hooks for per-table 32/64 switching have been removed from the code.
11102A
11103clarification to the ACPI specification is forthcoming in ACPI 3.0B.
11104
11105Fixed a possible leak of an OwnerID in the error path of
11106AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
11107deletion to a single place in AcpiTbUninstallTable to correct possible
11108leaks
11109when using the AcpiTbDeleteTablesByType interface (with assistance from
11110Lance Ortiz.)
11111
11112Fixed a problem with Serialized control methods where the semaphore
11113associated with the method could be over-signaled after multiple method
11114invocations.
11115
11116Fixed two issues with the locking of the internal namespace data
11117structure.
11118Both the Unload() operator and AcpiUnloadTable interface now lock the
11119namespace during the namespace deletion associated with the table unload
11120(with assistance from Linn Crosetto.)
11121
11122Fixed problem reports (Valery Podrezov) integrated:
11123- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
11124
11125Fixed problem reports (Fiodor Suietov) integrated:
11126- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
11127- On Address Space handler deletion, needless deactivation call (BZ 374)
11128- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
11129375)
11130- Possible memory leak, Notify sub-objects of Processor, Power,
11131ThermalZone
11132(BZ 376)
11133- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
11134- Minimum Length of RSDT should be validated (BZ 379)
11135- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
11136Handler (BZ (380)
11137- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
11138loaded
11139(BZ 381)
11140
11141Example Code and Data Size: These are the sizes for the OS-independent
11142acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11143debug version of the code includes the debug output trace mechanism and
11144has
11145a much larger code and data size.
11146
11147  Previous Release:
11148    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
11149    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
11150  Current Release:
11151    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11152    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11153
11154
111552) iASL Compiler/Disassembler and Tools:
11156
11157Fixed problem reports:
11158Compiler segfault when ASL contains a long (>1024) String declaration (BZ
11159436)
11160
11161----------------------------------------
1116223 June 2006. Summary of changes for version 20060623:
11163
111641) ACPI CA Core Subsystem:
11165
11166Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
11167allows the type to be customized to the host OS for improved efficiency
11168(since a spinlock is usually a very small object.)
11169
11170Implemented support for "ignored" bits in the ACPI registers. According
11171to
11172the ACPI specification, these bits should be preserved when writing the
11173registers via a read/modify/write cycle. There are 3 bits preserved in
11174this
11175manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
11176
11177Implemented the initial deployment of new OSL mutex interfaces. Since
11178some
11179host operating systems have separate mutex and semaphore objects, this
11180feature was requested. The base code now uses mutexes (and the new mutex
11181interfaces) wherever a binary semaphore was used previously. However, for
11182the current release, the mutex interfaces are defined as macros to map
11183them
11184to the existing semaphore interfaces. Therefore, no OSL changes are
11185required
11186at this time. (See acpiosxf.h)
11187
11188Fixed several problems with the support for the control method SyncLevel
11189parameter. The SyncLevel now works according to the ACPI specification
11190and
11191in concert with the Mutex SyncLevel parameter, since the current
11192SyncLevel
11193is a property of the executing thread. Mutual exclusion for control
11194methods
11195is now implemented with a mutex instead of a semaphore.
11196
11197Fixed three instances of the use of the C shift operator in the bitfield
11198support code (exfldio.c) to avoid the use of a shift value larger than
11199the
11200target data width. The behavior of C compilers is undefined in this case
11201and
11202can cause unpredictable results, and therefore the case must be detected
11203and
11204avoided. (Fiodor Suietov)
11205
11206Added an info message whenever an SSDT or OEM table is loaded dynamically
11207via the Load() or LoadTable() ASL operators. This should improve
11208debugging
11209capability since it will show exactly what tables have been loaded
11210(beyond
11211the tables present in the RSDT/XSDT.)
11212
11213Example Code and Data Size: These are the sizes for the OS-independent
11214acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11215debug version of the code includes the debug output trace mechanism and
11216has
11217a much larger code and data size.
11218
11219  Previous Release:
11220    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
11221    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
11222  Current Release:
11223    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
11224    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
11225
11226
112272) iASL Compiler/Disassembler and Tools:
11228
11229No changes for this release.
11230
11231----------------------------------------
1123208 June 2006. Summary of changes for version 20060608:
11233
112341) ACPI CA Core Subsystem:
11235
11236Converted the locking mutex used for the ACPI hardware to a spinlock.
11237This
11238change should eliminate all problems caused by attempting to acquire a
11239semaphore at interrupt level, and it means that all ACPICA external
11240interfaces that directly access the ACPI hardware can be safely called
11241from
11242interrupt level. OSL code that implements the semaphore interfaces should
11243be
11244able to eliminate any workarounds for being called at interrupt level.
11245
11246Fixed a regression introduced in 20060526 where the ACPI device
11247initialization could be prematurely aborted with an AE_NOT_FOUND if a
11248device
11249did not have an optional _INI method.
11250
11251Fixed an IndexField issue where a write to the Data Register should be
11252limited in size to the AccessSize (width) of the IndexField itself. (BZ
11253433,
11254Fiodor Suietov)
11255
11256Fixed problem reports (Valery Podrezov) integrated:
11257- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
11258
11259Fixed problem reports (Fiodor Suietov) integrated:
11260- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
11261
11262Removed four global mutexes that were obsolete and were no longer being
11263used.
11264
11265Example Code and Data Size: These are the sizes for the OS-independent
11266acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11267debug version of the code includes the debug output trace mechanism and
11268has
11269a much larger code and data size.
11270
11271  Previous Release:
11272    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
11273    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
11274  Current Release:
11275    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
11276    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
11277
11278
112792) iASL Compiler/Disassembler and Tools:
11280
11281Fixed a fault when using -g option (get tables from registry) on Windows
11282machines.
11283
11284Fixed problem reports integrated:
11285- Generate error if CreateField NumBits parameter is zero. (BZ 405)
11286- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
11287Suietov)
11288- Global table revision override (-r) is ignored (BZ 413)
11289
11290----------------------------------------
1129126 May 2006. Summary of changes for version 20060526:
11292
112931) ACPI CA Core Subsystem:
11294
11295Restructured, flattened, and simplified the internal interfaces for
11296namespace object evaluation - resulting in smaller code, less CPU stack
11297use,
11298and fewer interfaces. (With assistance from Mikhail Kouzmich)
11299
11300Fixed a problem with the CopyObject operator where the first parameter
11301was
11302not typed correctly for the parser, interpreter, compiler, and
11303disassembler.
11304Caused various errors and unexpected behavior.
11305
11306Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
11307produced incorrect results with some C compilers. Since the behavior of C
11308compilers when the shift value is larger than the datatype width is
11309apparently not well defined, the interpreter now detects this condition
11310and
11311simply returns zero as expected in all such cases. (BZ 395)
11312
11313Fixed problem reports (Valery Podrezov) integrated:
11314- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
11315- Allow interpreter to handle nested method declarations (BZ 5361)
11316
11317Fixed problem reports (Fiodor Suietov) integrated:
11318- AcpiTerminate doesn't free debug memory allocation list objects (BZ
11319355)
11320- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
11321356)
11322- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
11323- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
11324- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
11325- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
11326- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
11327- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
11328- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
11329365)
11330- Status of the Global Initialization Handler call not used (BZ 366)
11331- Incorrect object parameter to Global Initialization Handler (BZ 367)
11332
11333Example Code and Data Size: These are the sizes for the OS-independent
11334acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11335debug version of the code includes the debug output trace mechanism and
11336has
11337a much larger code and data size.
11338
11339  Previous Release:
11340    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
11341    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
11342  Current Release:
11343    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
11344    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
11345
11346
113472) iASL Compiler/Disassembler and Tools:
11348
11349Modified the parser to allow the names IO, DMA, and IRQ to be used as
11350namespace identifiers with no collision with existing resource descriptor
11351macro names. This provides compatibility with other ASL compilers and is
11352most useful for disassembly/recompilation of existing tables without
11353parse
11354errors. (With assistance from Thomas Renninger)
11355
11356Disassembler: fixed an incorrect disassembly problem with the
11357DataTableRegion and CopyObject operators. Fixed a possible fault during
11358disassembly of some Alias operators.
11359
11360----------------------------------------
1136112 May 2006. Summary of changes for version 20060512:
11362
113631) ACPI CA Core Subsystem:
11364
11365Replaced the AcpiOsQueueForExecution interface with a new interface named
11366AcpiOsExecute. The major difference is that the new interface does not
11367have
11368a Priority parameter, this appeared to be useless and has been replaced
11369by
11370a
11371Type parameter. The Type tells the host what type of execution is being
11372requested, such as global lock handler, notify handler, GPE handler, etc.
11373This allows the host to queue and execute the request as appropriate for
11374the
11375request type, possibly using different work queues and different
11376priorities
11377for the various request types. This enables fixes for multithreading
11378deadlock problems such as BZ #5534, and will require changes to all
11379existing
11380OS interface layers. (Alexey Starikovskiy and Bob Moore)
11381
11382Fixed a possible memory leak associated with the support for the so-
11383called
11384"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
11385Suietov)
11386
11387Fixed a problem with the Load() operator where a table load from an
11388operation region could overwrite an internal table buffer by up to 7
11389bytes
11390and cause alignment faults on IPF systems. (With assistance from Luming
11391Yu)
11392
11393Example Code and Data Size: These are the sizes for the OS-independent
11394acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11395debug version of the code includes the debug output trace mechanism and
11396has
11397a much larger code and data size.
11398
11399  Previous Release:
11400    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
11401    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
11402  Current Release:
11403    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
11404    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
11405
11406
11407
114082) iASL Compiler/Disassembler and Tools:
11409
11410Disassembler: Implemented support to cross reference the internal
11411namespace
11412and automatically generate ASL External() statements for symbols not
11413defined
11414within the current table being disassembled. This will simplify the
11415disassembly and recompilation of interdependent tables such as SSDTs
11416since
11417these statements will no longer have to be added manually.
11418
11419Disassembler: Implemented experimental support to automatically detect
11420invocations of external control methods and generate appropriate
11421External()
11422statements. This is problematic because the AML cannot be correctly
11423parsed
11424until the number of arguments for each control method is known.
11425Currently,
11426standalone method invocations and invocations as the source operand of a
11427Store() statement are supported.
11428
11429Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
11430LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
11431LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
11432more readable and likely closer to the original ASL source.
11433
11434----------------------------------------
1143521 April 2006. Summary of changes for version 20060421:
11436
114371) ACPI CA Core Subsystem:
11438
11439Removed a device initialization optimization introduced in 20051216 where
11440the _STA method was not run unless an _INI was also present for the same
11441device. This optimization could cause problems because it could allow
11442_INI
11443methods to be run within a not-present device subtree. (If a not-present
11444device had no _INI, _STA would not be run, the not-present status would
11445not
11446be discovered, and the children of the device would be incorrectly
11447traversed.)
11448
11449Implemented a new _STA optimization where namespace subtrees that do not
11450contain _INI are identified and ignored during device initialization.
11451Selectively running _STA can significantly improve boot time on large
11452machines (with assistance from Len Brown.)
11453
11454Implemented support for the device initialization case where the returned
11455_STA flags indicate a device not-present but functioning. In this case,
11456_INI
11457is not run, but the device children are examined for presence, as per the
11458ACPI specification.
11459
11460Implemented an additional change to the IndexField support in order to
11461conform to MS behavior. The value written to the Index Register is not
11462simply a byte offset, it is a byte offset in units of the access width of
11463the parent Index Field. (Fiodor Suietov)
11464
11465Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
11466interface is called during the creation of all AML operation regions, and
11467allows the host OS to exert control over what addresses it will allow the
11468AML code to access. Operation Regions whose addresses are disallowed will
11469cause a runtime exception when they are actually accessed (will not
11470affect
11471or abort table loading.) See oswinxf or osunixxf for an example
11472implementation.
11473
11474Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
11475interface allows the host OS to match the various "optional"
11476interface/behavior strings for the _OSI predefined control method as
11477appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
11478for an example implementation.
11479
11480Restructured and corrected various problems in the exception handling
11481code
11482paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
11483(with assistance from Takayoshi Kochi.)
11484
11485Modified the Linux source converter to ignore quoted string literals
11486while
11487converting identifiers from mixed to lower case. This will correct
11488problems
11489with the disassembler and other areas where such strings must not be
11490modified.
11491
11492The ACPI_FUNCTION_* macros no longer require quotes around the function
11493name. This allows the Linux source converter to convert the names, now
11494that
11495the converter ignores quoted strings.
11496
11497Example Code and Data Size: These are the sizes for the OS-independent
11498acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11499debug version of the code includes the debug output trace mechanism and
11500has
11501a much larger code and data size.
11502
11503  Previous Release:
11504
11505    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
11506    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
11507  Current Release:
11508    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
11509    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
11510
11511
115122) iASL Compiler/Disassembler and Tools:
11513
11514Implemented 3 new warnings for iASL, and implemented multiple warning
11515levels
11516(w2 flag).
11517
115181) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
11519not
11520WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
11521check for the possible timeout, a warning is issued.
11522
115232) Useless operators: If an ASL operator does not specify an optional
11524target
11525operand and it also does not use the function return value from the
11526operator, a warning is issued since the operator effectively does
11527nothing.
11528
115293) Unreferenced objects: If a namespace object is created, but never
11530referenced, a warning is issued. This is a warning level 2 since there
11531are
11532cases where this is ok, such as when a secondary table is loaded that
11533uses
11534the unreferenced objects. Even so, care is taken to only flag objects
11535that
11536don't look like they will ever be used. For example, the reserved methods
11537(starting with an underscore) are usually not referenced because it is
11538expected that the OS will invoke them.
11539
11540----------------------------------------
1154131 March 2006. Summary of changes for version 20060331:
11542
115431) ACPI CA Core Subsystem:
11544
11545Implemented header file support for the following additional ACPI tables:
11546ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
11547support,
11548all current and known ACPI tables are now defined in the ACPICA headers
11549and
11550are available for use by device drivers and other software.
11551
11552Implemented support to allow tables that contain ACPI names with invalid
11553characters to be loaded. Previously, this would cause the table load to
11554fail, but since there are several known cases of such tables on existing
11555machines, this change was made to enable ACPI support for them. Also,
11556this
11557matches the behavior of the Microsoft ACPI implementation.
11558
11559Fixed a couple regressions introduced during the memory optimization in
11560the
1156120060317 release. The namespace node definition required additional
11562reorganization and an internal datatype that had been changed to 8-bit
11563was
11564restored to 32-bit. (Valery Podrezov)
11565
11566Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
11567could be passed through to AcpiOsReleaseObject which is unexpected. Such
11568null pointers are now trapped and ignored, matching the behavior of the
11569previous implementation before the deployment of AcpiOsReleaseObject.
11570(Valery Podrezov, Fiodor Suietov)
11571
11572Fixed a memory mapping leak during the deletion of a SystemMemory
11573operation
11574region where a cached memory mapping was not deleted. This became a
11575noticeable problem for operation regions that are defined within
11576frequently
11577used control methods. (Dana Meyers)
11578
11579Reorganized the ACPI table header files into two main files: one for the
11580ACPI tables consumed by the ACPICA core, and another for the
11581miscellaneous
11582ACPI tables that are consumed by the drivers and other software. The
11583various
11584FADT definitions were merged into one common section and three different
11585tables (ACPI 1.0, 1.0+, and 2.0)
11586
11587Example Code and Data Size: These are the sizes for the OS-independent
11588acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11589debug version of the code includes the debug output trace mechanism and
11590has
11591a much larger code and data size.
11592
11593  Previous Release:
11594    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
11595    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
11596  Current Release:
11597    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
11598    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
11599
11600
116012) iASL Compiler/Disassembler and Tools:
11602
11603Disassembler: Implemented support to decode and format all non-AML ACPI
11604tables (tables other than DSDTs and SSDTs.) This includes the new tables
11605added to the ACPICA headers, therefore all current and known ACPI tables
11606are
11607supported.
11608
11609Disassembler: The change to allow ACPI names with invalid characters also
11610enables the disassembly of such tables. Invalid characters within names
11611are
11612changed to '*' to make the name printable; the iASL compiler will still
11613generate an error for such names, however, since this is an invalid ACPI
11614character.
11615
11616Implemented an option for AcpiXtract (-a) to extract all tables found in
11617the
11618input file. The default invocation extracts only the DSDTs and SSDTs.
11619
11620Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
11621makefile for the AcpiXtract utility.
11622
11623----------------------------------------
1162417 March 2006. Summary of changes for version 20060317:
11625
116261) ACPI CA Core Subsystem:
11627
11628Implemented the use of a cache object for all internal namespace nodes.
11629Since there are about 1000 static nodes in a typical system, this will
11630decrease memory use for cache implementations that minimize per-
11631allocation
11632overhead (such as a slab allocator.)
11633
11634Removed the reference count mechanism for internal namespace nodes, since
11635it
11636was deemed unnecessary. This reduces the size of each namespace node by
11637about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
11638case,
11639and 32 bytes for the 64-bit case.
11640
11641Optimized several internal data structures to reduce object size on 64-
11642bit
11643platforms by packing data within the 64-bit alignment. This includes the
11644frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
11645instances corresponding to the namespace objects.
11646
11647Added two new strings for the predefined _OSI method: "Windows 2001.1
11648SP1"
11649and "Windows 2006".
11650
11651Split the allocation tracking mechanism out to a separate file, from
11652utalloc.c to uttrack.c. This mechanism appears to be only useful for
11653application-level code. Kernels may wish to not include uttrack.c in
11654distributions.
11655
11656Removed all remnants of the obsolete ACPI_REPORT_* macros and the
11657associated
11658code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
11659macros.)
11660
11661Code and Data Size: These are the sizes for the acpica.lib produced by
11662the
11663Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11664ACPI
11665driver or OSPM code. The debug version of the code includes the debug
11666output
11667trace mechanism and has a much larger code and data size. Note that these
11668values will vary depending on the efficiency of the compiler and the
11669compiler options used during generation.
11670
11671  Previous Release:
11672    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11673    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
11674  Current Release:
11675    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
11676    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
11677
11678
116792) iASL Compiler/Disassembler and Tools:
11680
11681Implemented an ANSI C version of the acpixtract utility. This version
11682will
11683automatically extract the DSDT and all SSDTs from the input acpidump text
11684file and dump the binary output to separate files. It can also display a
11685summary of the input file including the headers for each table found and
11686will extract any single ACPI table, with any signature. (See
11687source/tools/acpixtract)
11688
11689----------------------------------------
1169010 March 2006. Summary of changes for version 20060310:
11691
116921) ACPI CA Core Subsystem:
11693
11694Tagged all external interfaces to the subsystem with the new
11695ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
11696assist
11697kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
11698macro. The default definition is NULL.
11699
11700Added the ACPI_THREAD_ID type for the return value from
11701AcpiOsGetThreadId.
11702This allows the host to define this as necessary to simplify kernel
11703integration. The default definition is ACPI_NATIVE_UINT.
11704
11705Fixed two interpreter problems related to error processing, the deletion
11706of
11707objects, and placing invalid pointers onto the internal operator result
11708stack. BZ 6028, 6151 (Valery Podrezov)
11709
11710Increased the reference count threshold where a warning is emitted for
11711large
11712reference counts in order to eliminate unnecessary warnings on systems
11713with
11714large namespaces (especially 64-bit.) Increased the value from 0x400 to
117150x800.
11716
11717Due to universal disagreement as to the meaning of the 'c' in the
11718calloc()
11719function, the ACPI_MEM_CALLOCATE macro has been renamed to
11720ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
11721ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
11722ACPI_FREE.
11723
11724Code and Data Size: These are the sizes for the acpica.lib produced by
11725the
11726Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11727ACPI
11728driver or OSPM code. The debug version of the code includes the debug
11729output
11730trace mechanism and has a much larger code and data size. Note that these
11731values will vary depending on the efficiency of the compiler and the
11732compiler options used during generation.
11733
11734  Previous Release:
11735    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
11736    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
11737  Current Release:
11738    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11739    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
11740
11741
117422) iASL Compiler/Disassembler:
11743
11744Disassembler: implemented support for symbolic resource descriptor
11745references. If a CreateXxxxField operator references a fixed offset
11746within
11747a
11748resource descriptor, a name is assigned to the descriptor and the offset
11749is
11750translated to the appropriate resource tag and pathname. The addition of
11751this support brings the disassembled code very close to the original ASL
11752source code and helps eliminate run-time errors when the disassembled
11753code
11754is modified (and recompiled) in such a way as to invalidate the original
11755fixed offsets.
11756
11757Implemented support for a Descriptor Name as the last parameter to the
11758ASL
11759Register() macro. This parameter was inadvertently left out of the ACPI
11760specification, and will be added for ACPI 3.0b.
11761
11762Fixed a problem where the use of the "_OSI" string (versus the full path
11763"\_OSI") caused an internal compiler error. ("No back ptr to op")
11764
11765Fixed a problem with the error message that occurs when an invalid string
11766is
11767used for a _HID object (such as one with an embedded asterisk:
11768"*PNP010A".)
11769The correct message is now displayed.
11770
11771----------------------------------------
1177217 February 2006. Summary of changes for version 20060217:
11773
117741) ACPI CA Core Subsystem:
11775
11776Implemented a change to the IndexField support to match the behavior of
11777the
11778Microsoft AML interpreter. The value written to the Index register is now
11779a
11780byte offset, no longer an index based upon the width of the Data
11781register.
11782This should fix IndexField problems seen on some machines where the Data
11783register is not exactly one byte wide. The ACPI specification will be
11784clarified on this point.
11785
11786Fixed a problem where several resource descriptor types could overrun the
11787internal descriptor buffer due to size miscalculation: VendorShort,
11788VendorLong, and Interrupt. This was noticed on IA64 machines, but could
11789affect all platforms.
11790
11791Fixed a problem where individual resource descriptors were misaligned
11792within
11793the internal buffer, causing alignment faults on IA64 platforms.
11794
11795Code and Data Size: These are the sizes for the acpica.lib produced by
11796the
11797Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11798ACPI
11799driver or OSPM code. The debug version of the code includes the debug
11800output
11801trace mechanism and has a much larger code and data size. Note that these
11802values will vary depending on the efficiency of the compiler and the
11803compiler options used during generation.
11804
11805  Previous Release:
11806    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11807    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
11808  Current Release:
11809    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
11810    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
11811
11812
118132) iASL Compiler/Disassembler:
11814
11815Implemented support for new reserved names: _WDG and _WED are Microsoft
11816extensions for Windows Instrumentation Management, _TDL is a new ACPI-
11817defined method (Throttling Depth Limit.)
11818
11819Fixed a problem where a zero-length VendorShort or VendorLong resource
11820descriptor was incorrectly emitted as a descriptor of length one.
11821
11822----------------------------------------
1182310 February 2006. Summary of changes for version 20060210:
11824
118251) ACPI CA Core Subsystem:
11826
11827Removed a couple of extraneous ACPI_ERROR messages that appeared during
11828normal execution. These became apparent after the conversion from
11829ACPI_DEBUG_PRINT.
11830
11831Fixed a problem where the CreateField operator could hang if the BitIndex
11832or
11833NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
11834
11835Fixed a problem where a DeRefOf operation on a buffer object incorrectly
11836failed with an exception. This also fixes a couple of related RefOf and
11837DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
11838
11839Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
11840of
11841AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
11842BZ
118435480)
11844
11845Implemented a memory cleanup at the end of the execution of each
11846iteration
11847of an AML While() loop, preventing the accumulation of outstanding
11848objects.
11849(Valery Podrezov, BZ 5427)
11850
11851Eliminated a chunk of duplicate code in the object resolution code.
11852(Valery
11853Podrezov, BZ 5336)
11854
11855Fixed several warnings during the 64-bit code generation.
11856
11857The AcpiSrc source code conversion tool now inserts one line of
11858whitespace
11859after an if() statement that is followed immediately by a comment,
11860improving
11861readability of the Linux code.
11862
11863Code and Data Size: The current and previous library sizes for the core
11864subsystem are shown below. These are the code and data sizes for the
11865acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11866These
11867values do not include any ACPI driver or OSPM code. The debug version of
11868the
11869code includes the debug output trace mechanism and has a much larger code
11870and data size. Note that these values will vary depending on the
11871efficiency
11872of the compiler and the compiler options used during generation.
11873
11874  Previous Release:
11875    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
11876    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
11877  Current Release:
11878    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11879    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
11880
11881
118822) iASL Compiler/Disassembler:
11883
11884Fixed a problem with the disassembly of a BankField operator with a
11885complex
11886expression for the BankValue parameter.
11887
11888----------------------------------------
1188927 January 2006. Summary of changes for version 20060127:
11890
118911) ACPI CA Core Subsystem:
11892
11893Implemented support in the Resource Manager to allow unresolved
11894namestring
11895references within resource package objects for the _PRT method. This
11896support
11897is in addition to the previously implemented unresolved reference support
11898within the AML parser. If the interpreter slack mode is enabled, these
11899unresolved references will be passed through to the caller as a NULL
11900package
11901entry.
11902
11903Implemented and deployed new macros and functions for error and warning
11904messages across the subsystem. These macros are simpler and generate less
11905code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
11906ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
11907macros remain defined to allow ACPI drivers time to migrate to the new
11908macros.
11909
11910Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
11911the
11912Acquire/Release Lock OSL interfaces.
11913
11914Fixed a problem where Alias ASL operators are sometimes not correctly
11915resolved, in both the interpreter and the iASL compiler.
11916
11917Fixed several problems with the implementation of the
11918ConcatenateResTemplate
11919ASL operator. As per the ACPI specification, zero length buffers are now
11920treated as a single EndTag. One-length buffers always cause a fatal
11921exception. Non-zero length buffers that do not end with a full 2-byte
11922EndTag
11923cause a fatal exception.
11924
11925Fixed a possible structure overwrite in the AcpiGetObjectInfo external
11926interface. (With assistance from Thomas Renninger)
11927
11928Code and Data Size: The current and previous library sizes for the core
11929subsystem are shown below. These are the code and data sizes for the
11930acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11931These
11932values do not include any ACPI driver or OSPM code. The debug version of
11933the
11934code includes the debug output trace mechanism and has a much larger code
11935and data size. Note that these values will vary depending on the
11936efficiency
11937of the compiler and the compiler options used during generation.
11938
11939  Previous Release:
11940    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
11941    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
11942  Current Release:
11943    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
11944    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
11945
11946
119472) iASL Compiler/Disassembler:
11948
11949Fixed an internal error that was generated for any forward references to
11950ASL
11951Alias objects.
11952
11953----------------------------------------
1195413 January 2006. Summary of changes for version 20060113:
11955
119561) ACPI CA Core Subsystem:
11957
11958Added 2006 copyright to all module headers and signons. This affects
11959virtually every file in the ACPICA core subsystem, iASL compiler, and the
11960utilities.
11961
11962Enhanced the ACPICA error reporting in order to simplify user migration
11963to
11964the non-debug version of ACPICA. Replaced all instances of the
11965ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
11966debug
11967levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
11968respectively. This preserves all error and warning messages in the non-
11969debug
11970version of the ACPICA code (this has been referred to as the "debug lite"
11971option.) Over 200 cases were converted to create a total of over 380
11972error/warning messages across the ACPICA code. This increases the code
11973and
11974data size of the default non-debug version of the code somewhat (about
1197513K),
11976but all error/warning reporting may be disabled if desired (and code
11977eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
11978configuration option. The size of the debug version of ACPICA remains
11979about
11980the same.
11981
11982Fixed a memory leak within the AML Debugger "Set" command. One object was
11983not properly deleted for every successful invocation of the command.
11984
11985Code and Data Size: The current and previous library sizes for the core
11986subsystem are shown below. These are the code and data sizes for the
11987acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11988These
11989values do not include any ACPI driver or OSPM code. The debug version of
11990the
11991code includes the debug output trace mechanism and has a much larger code
11992and data size. Note that these values will vary depending on the
11993efficiency
11994of the compiler and the compiler options used during generation.
11995
11996  Previous Release:
11997    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
11998    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
11999  Current Release:
12000    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
12001    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
12002
12003
120042) iASL Compiler/Disassembler:
12005
12006The compiler now officially supports the ACPI 3.0a specification that was
12007released on December 30, 2005. (Specification is available at
12008www.acpi.info)
12009
12010----------------------------------------
1201116 December 2005. Summary of changes for version 20051216:
12012
120131) ACPI CA Core Subsystem:
12014
12015Implemented optional support to allow unresolved names within ASL Package
12016objects. A null object is inserted in the package when a named reference
12017cannot be located in the current namespace. Enabled via the interpreter
12018slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
12019machines
12020that contain such code.
12021
12022Implemented an optimization to the initialization sequence that can
12023improve
12024boot time. During ACPI device initialization, the _STA method is now run
12025if
12026and only if the _INI method exists. The _STA method is used to determine
12027if
12028the device is present; An _INI can only be run if _STA returns present,
12029but
12030it is a waste of time to run the _STA method if the _INI does not exist.
12031(Prototype and assistance from Dong Wei)
12032
12033Implemented use of the C99 uintptr_t for the pointer casting macros if it
12034is
12035available in the current compiler. Otherwise, the default (void *) cast
12036is
12037used as before.
12038
12039Fixed some possible memory leaks found within the execution path of the
12040Break, Continue, If, and CreateField operators. (Valery Podrezov)
12041
12042Fixed a problem introduced in the 20051202 release where an exception is
12043generated during method execution if a control method attempts to declare
12044another method.
12045
12046Moved resource descriptor string constants that are used by both the AML
12047disassembler and AML debugger to the common utilities directory so that
12048these components are independent.
12049
12050Implemented support in the AcpiExec utility (-e switch) to globally
12051ignore
12052exceptions during control method execution (method is not aborted.)
12053
12054Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
12055generation.
12056
12057Code and Data Size: The current and previous library sizes for the core
12058subsystem are shown below. These are the code and data sizes for the
12059acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12060These
12061values do not include any ACPI driver or OSPM code. The debug version of
12062the
12063code includes the debug output trace mechanism and has a much larger code
12064and data size. Note that these values will vary depending on the
12065efficiency
12066of the compiler and the compiler options used during generation.
12067
12068  Previous Release:
12069    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12070    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
12071  Current Release:
12072    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
12073    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
12074
12075
120762) iASL Compiler/Disassembler:
12077
12078Fixed a problem where a CPU stack overflow fault could occur if a
12079recursive
12080method call was made from within a Return statement.
12081
12082----------------------------------------
1208302 December 2005. Summary of changes for version 20051202:
12084
120851) ACPI CA Core Subsystem:
12086
12087Modified the parsing of control methods to no longer create namespace
12088objects during the first pass of the parse. Objects are now created only
12089during the execute phase, at the moment the namespace creation operator
12090is
12091encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
12092This
12093should eliminate ALREADY_EXISTS exceptions seen on some machines where
12094reentrant control methods are protected by an AML mutex. The mutex will
12095now
12096correctly block multiple threads from attempting to create the same
12097object
12098more than once.
12099
12100Increased the number of available Owner Ids for namespace object tracking
12101from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
12102on
12103some machines with a large number of ACPI tables (either static or
12104dynamic).
12105
12106Fixed a problem with the AcpiExec utility where a fault could occur when
12107the
12108-b switch (batch mode) is used.
12109
12110Enhanced the namespace dump routine to output the owner ID for each
12111namespace object.
12112
12113Code and Data Size: The current and previous library sizes for the core
12114subsystem are shown below. These are the code and data sizes for the
12115acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12116These
12117values do not include any ACPI driver or OSPM code. The debug version of
12118the
12119code includes the debug output trace mechanism and has a much larger code
12120and data size. Note that these values will vary depending on the
12121efficiency
12122of the compiler and the compiler options used during generation.
12123
12124  Previous Release:
12125    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12126    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12127  Current Release:
12128    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12129    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
12130
12131
121322) iASL Compiler/Disassembler:
12133
12134Fixed a parse error during compilation of certain Switch/Case constructs.
12135To
12136simplify the parse, the grammar now allows for multiple Default
12137statements
12138and this error is now detected and flagged during the analysis phase.
12139
12140Disassembler: The disassembly now includes the contents of the original
12141table header within a comment at the start of the file. This includes the
12142name and version of the original ASL compiler.
12143
12144----------------------------------------
1214517 November 2005. Summary of changes for version 20051117:
12146
121471) ACPI CA Core Subsystem:
12148
12149Fixed a problem in the AML parser where the method thread count could be
12150decremented below zero if any errors occurred during the method parse
12151phase.
12152This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
12153machines.
12154This also fixed a related regression with the mechanism that detects and
12155corrects methods that cannot properly handle reentrancy (related to the
12156deployment of the new OwnerId mechanism.)
12157
12158Eliminated the pre-parsing of control methods (to detect errors) during
12159table load. Related to the problem above, this was causing unwind issues
12160if
12161any errors occurred during the parse, and it seemed to be overkill. A
12162table
12163load should not be aborted if there are problems with any single control
12164method, thus rendering this feature rather pointless.
12165
12166Fixed a problem with the new table-driven resource manager where an
12167internal
12168buffer overflow could occur for small resource templates.
12169
12170Implemented a new external interface, AcpiGetVendorResource. This
12171interface
12172will find and return a vendor-defined resource descriptor within a _CRS
12173or
12174_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
12175Helgaas.
12176
12177Removed the length limit (200) on string objects as per the upcoming ACPI
121783.0A specification. This affects the following areas of the interpreter:
121791)
12180any implicit conversion of a Buffer to a String, 2) a String object
12181result
12182of the ASL Concatenate operator, 3) the String object result of the ASL
12183ToString operator.
12184
12185Fixed a problem in the Windows OS interface layer (OSL) where a
12186WAIT_FOREVER
12187on a semaphore object would incorrectly timeout. This allows the
12188multithreading features of the AcpiExec utility to work properly under
12189Windows.
12190
12191Updated the Linux makefiles for the iASL compiler and AcpiExec to include
12192the recently added file named "utresrc.c".
12193
12194Code and Data Size: The current and previous library sizes for the core
12195subsystem are shown below. These are the code and data sizes for the
12196acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12197These
12198values do not include any ACPI driver or OSPM code. The debug version of
12199the
12200code includes the debug output trace mechanism and has a much larger code
12201and data size. Note that these values will vary depending on the
12202efficiency
12203of the compiler and the compiler options used during generation.
12204
12205  Previous Release:
12206    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
12207    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12208  Current Release:
12209    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12210    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12211
12212
122132) iASL Compiler/Disassembler:
12214
12215Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
12216specification. For the iASL compiler, this means that string literals
12217within
12218the source ASL can be of any length.
12219
12220Enhanced the listing output to dump the AML code for resource descriptors
12221immediately after the ASL code for each descriptor, instead of in a block
12222at
12223the end of the entire resource template.
12224
12225Enhanced the compiler debug output to dump the entire original parse tree
12226constructed during the parse phase, before any transforms are applied to
12227the
12228tree. The transformed tree is dumped also.
12229
12230----------------------------------------
1223102 November 2005. Summary of changes for version 20051102:
12232
122331) ACPI CA Core Subsystem:
12234
12235Modified the subsystem initialization sequence to improve GPE support.
12236The
12237GPE initialization has been split into two parts in order to defer
12238execution
12239of the _PRW methods (Power Resources for Wake) until after the hardware
12240is
12241fully initialized and the SCI handler is installed. This allows the _PRW
12242methods to access fields protected by the Global Lock. This will fix
12243systems
12244where a NO_GLOBAL_LOCK exception has been seen during initialization.
12245
12246Converted the ACPI internal object disassemble and display code within
12247the
12248AML debugger to fully table-driven operation, reducing code size and
12249increasing maintainability.
12250
12251Fixed a regression with the ConcatenateResTemplate() ASL operator
12252introduced
12253in the 20051021 release.
12254
12255Implemented support for "local" internal ACPI object types within the
12256debugger "Object" command and the AcpiWalkNamespace external interfaces.
12257These local types include RegionFields, BankFields, IndexFields, Alias,
12258and
12259reference objects.
12260
12261Moved common AML resource handling code into a new file, "utresrc.c".
12262This
12263code is shared by both the Resource Manager and the AML Debugger.
12264
12265Code and Data Size: The current and previous library sizes for the core
12266subsystem are shown below. These are the code and data sizes for the
12267acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12268These
12269values do not include any ACPI driver or OSPM code. The debug version of
12270the
12271code includes the debug output trace mechanism and has a much larger code
12272and data size. Note that these values will vary depending on the
12273efficiency
12274of the compiler and the compiler options used during generation.
12275
12276  Previous Release:
12277    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
12278    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
12279  Current Release:
12280    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
12281    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12282
12283
122842) iASL Compiler/Disassembler:
12285
12286Fixed a problem with very large initializer lists (more than 4000
12287elements)
12288for both Buffer and Package objects where the parse stack could overflow.
12289
12290Enhanced the pre-compile source code scan for non-ASCII characters to
12291ignore
12292characters within comment fields. The scan is now always performed and is
12293no
12294longer optional, detecting invalid characters within a source file
12295immediately rather than during the parse phase or later.
12296
12297Enhanced the ASL grammar definition to force early reductions on all
12298list-
12299style grammar elements so that the overall parse stack usage is greatly
12300reduced. This should improve performance and reduce the possibility of
12301parse
12302stack overflow.
12303
12304Eliminated all reduce/reduce conflicts in the iASL parser generation.
12305Also,
12306with the addition of a %expected statement, the compiler generates from
12307source with no warnings.
12308
12309Fixed a possible segment fault in the disassembler if the input filename
12310does not contain a "dot" extension (Thomas Renninger).
12311
12312----------------------------------------
1231321 October 2005. Summary of changes for version 20051021:
12314
123151) ACPI CA Core Subsystem:
12316
12317Implemented support for the EM64T and other x86-64 processors. This
12318essentially entails recognizing that these processors support non-aligned
12319memory transfers. Previously, all 64-bit processors were assumed to lack
12320hardware support for non-aligned transfers.
12321
12322Completed conversion of the Resource Manager to nearly full table-driven
12323operation. Specifically, the resource conversion code (convert AML to
12324internal format and the reverse) and the debug code to dump internal
12325resource descriptors are fully table-driven, reducing code and data size
12326and
12327improving maintainability.
12328
12329The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
12330word
12331on 64-bit processors instead of a fixed 32-bit word. (With assistance
12332from
12333Alexey Starikovskiy)
12334
12335Implemented support within the resource conversion code for the Type-
12336Specific byte within the various ACPI 3.0 *WordSpace macros.
12337
12338Fixed some issues within the resource conversion code for the type-
12339specific
12340flags for both Memory and I/O address resource descriptors. For Memory,
12341implemented support for the MTP and TTP flags. For I/O, split the TRS and
12342TTP flags into two separate fields.
12343
12344Code and Data Size: The current and previous library sizes for the core
12345subsystem are shown below. These are the code and data sizes for the
12346acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12347These
12348values do not include any ACPI driver or OSPM code. The debug version of
12349the
12350code includes the debug output trace mechanism and has a much larger code
12351and data size. Note that these values will vary depending on the
12352efficiency
12353of the compiler and the compiler options used during generation.
12354
12355  Previous Release:
12356    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
12357    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
12358  Current Release:
12359    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
12360    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
12361
12362
12363
123642) iASL Compiler/Disassembler:
12365
12366Relaxed a compiler restriction that disallowed a ResourceIndex byte if
12367the
12368corresponding ResourceSource string was not also present in a resource
12369descriptor declaration. This restriction caused problems with existing
12370AML/ASL code that includes the Index byte without the string. When such
12371AML
12372was disassembled, it could not be compiled without modification. Further,
12373the modified code created a resource template with a different size than
12374the
12375original, breaking code that used fixed offsets into the resource
12376template
12377buffer.
12378
12379Removed a recent feature of the disassembler to ignore a lone
12380ResourceIndex
12381byte. This byte is now emitted if present so that the exact AML can be
12382reproduced when the disassembled code is recompiled.
12383
12384Improved comments and text alignment for the resource descriptor code
12385emitted by the disassembler.
12386
12387Implemented disassembler support for the ACPI 3.0 AccessSize field within
12388a
12389Register() resource descriptor.
12390
12391----------------------------------------
1239230 September 2005. Summary of changes for version 20050930:
12393
123941) ACPI CA Core Subsystem:
12395
12396Completed a major overhaul of the Resource Manager code - specifically,
12397optimizations in the area of the AML/internal resource conversion code.
12398The
12399code has been optimized to simplify and eliminate duplicated code, CPU
12400stack
12401use has been decreased by optimizing function parameters and local
12402variables, and naming conventions across the manager have been
12403standardized
12404for clarity and ease of maintenance (this includes function, parameter,
12405variable, and struct/typedef names.) The update may force changes in some
12406driver code, depending on how resources are handled by the host OS.
12407
12408All Resource Manager dispatch and information tables have been moved to a
12409single location for clarity and ease of maintenance. One new file was
12410created, named "rsinfo.c".
12411
12412The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
12413guarantee that the argument is not evaluated twice, making them less
12414prone
12415to macro side-effects. However, since there exists the possibility of
12416additional stack use if a particular compiler cannot optimize them (such
12417as
12418in the debug generation case), the original macros are optionally
12419available.
12420Note that some invocations of the return_VALUE macro may now cause size
12421mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
12422to
12423eliminate these. (From Randy Dunlap)
12424
12425Implemented a new mechanism to enable debug tracing for individual
12426control
12427methods. A new external interface, AcpiDebugTrace, is provided to enable
12428this mechanism. The intent is to allow the host OS to easily enable and
12429disable tracing for problematic control methods. This interface can be
12430easily exposed to a user or debugger interface if desired. See the file
12431psxface.c for details.
12432
12433AcpiUtCallocate will now return a valid pointer if a length of zero is
12434specified - a length of one is used and a warning is issued. This matches
12435the behavior of AcpiUtAllocate.
12436
12437Code and Data Size: The current and previous library sizes for the core
12438subsystem are shown below. These are the code and data sizes for the
12439acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12440These
12441values do not include any ACPI driver or OSPM code. The debug version of
12442the
12443code includes the debug output trace mechanism and has a much larger code
12444and data size. Note that these values will vary depending on the
12445efficiency
12446of the compiler and the compiler options used during generation.
12447
12448  Previous Release:
12449    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
12450    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
12451  Current Release:
12452    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
12453    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
12454
12455
124562) iASL Compiler/Disassembler:
12457
12458A remark is issued if the effective compile-time length of a package or
12459buffer is zero. Previously, this was a warning.
12460
12461----------------------------------------
1246216 September 2005. Summary of changes for version 20050916:
12463
124641) ACPI CA Core Subsystem:
12465
12466Fixed a problem within the Resource Manager where support for the Generic
12467Register descriptor was not fully implemented. This descriptor is now
12468fully
12469recognized, parsed, disassembled, and displayed.
12470
12471Completely restructured the Resource Manager code to utilize table-driven
12472dispatch and lookup, eliminating many of the large switch() statements.
12473This
12474reduces overall subsystem code size and code complexity. Affects the
12475resource parsing and construction, disassembly, and debug dump output.
12476
12477Cleaned up and restructured the debug dump output for all resource
12478descriptors. Improved readability of the output and reduced code size.
12479
12480Fixed a problem where changes to internal data structures caused the
12481optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
12482
12483Code and Data Size: The current and previous library sizes for the core
12484subsystem are shown below. These are the code and data sizes for the
12485acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12486These
12487values do not include any ACPI driver or OSPM code. The debug version of
12488the
12489code includes the debug output trace mechanism and has a much larger code
12490and data size. Note that these values will vary depending on the
12491efficiency
12492of the compiler and the compiler options used during generation.
12493
12494  Previous Release:
12495    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
12496    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
12497  Current Release:
12498    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
12499    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
12500
12501
125022) iASL Compiler/Disassembler:
12503
12504Updated the disassembler to automatically insert an EndDependentFn()
12505macro
12506into the ASL stream if this macro is missing in the original AML code,
12507simplifying compilation of the resulting ASL module.
12508
12509Fixed a problem in the disassembler where a disassembled ResourceSource
12510string (within a large resource descriptor) was not surrounded by quotes
12511and
12512not followed by a comma, causing errors when the resulting ASL module was
12513compiled. Also, escape sequences within a ResourceSource string are now
12514handled correctly (especially "\\")
12515
12516----------------------------------------
1251702 September 2005. Summary of changes for version 20050902:
12518
125191) ACPI CA Core Subsystem:
12520
12521Fixed a problem with the internal Owner ID allocation and deallocation
12522mechanisms for control method execution and recursive method invocation.
12523This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
12524messages seen on some systems. Recursive method invocation depth is
12525currently limited to 255. (Alexey Starikovskiy)
12526
12527Completely eliminated all vestiges of support for the "module-level
12528executable code" until this support is fully implemented and debugged.
12529This
12530should eliminate the NO_RETURN_VALUE exceptions seen during table load on
12531some systems that invoke this support.
12532
12533Fixed a problem within the resource manager code where the transaction
12534flags
12535for a 64-bit address descriptor were handled incorrectly in the type-
12536specific flag byte.
12537
12538Consolidated duplicate code within the address descriptor resource
12539manager
12540code, reducing overall subsystem code size.
12541
12542Fixed a fault when using the AML debugger "disassemble" command to
12543disassemble individual control methods.
12544
12545Removed references to the "release_current" directory within the Unix
12546release package.
12547
12548Code and Data Size: The current and previous core subsystem library sizes
12549are shown below. These are the code and data sizes for the acpica.lib
12550produced by the Microsoft Visual C++ 6.0 compiler. These values do not
12551include any ACPI driver or OSPM code. The debug version of the code
12552includes
12553the debug output trace mechanism and has a much larger code and data
12554size.
12555Note that these values will vary depending on the efficiency of the
12556compiler
12557and the compiler options used during generation.
12558
12559  Previous Release:
12560    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12561    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
12562  Current Release:
12563    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
12564    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
12565
12566
125672) iASL Compiler/Disassembler:
12568
12569Implemented an error check for illegal duplicate values in the interrupt
12570and
12571dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
12572Interrupt().
12573
12574Implemented error checking for the Irq() and IrqNoFlags() macros to
12575detect
12576too many values in the interrupt list (16 max) and invalid values in the
12577list (range 0 - 15)
12578
12579The maximum length string literal within an ASL file is now restricted to
12580200 characters as per the ACPI specification.
12581
12582Fixed a fault when using the -ln option (generate namespace listing).
12583
12584Implemented an error check to determine if a DescriptorName within a
12585resource descriptor has already been used within the current scope.
12586
12587----------------------------------------
1258815 August 2005.  Summary of changes for version 20050815:
12589
125901) ACPI CA Core Subsystem:
12591
12592Implemented a full bytewise compare to determine if a table load request
12593is
12594attempting to load a duplicate table. The compare is performed if the
12595table
12596signatures and table lengths match. This will allow different tables with
12597the same OEM Table ID and revision to be loaded - probably against the
12598ACPI
12599specification, but discovered in the field nonetheless.
12600
12601Added the changes.txt logfile to each of the zipped release packages.
12602
12603Code and Data Size: Current and previous core subsystem library sizes are
12604shown below. These are the code and data sizes for the acpica.lib
12605produced
12606by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12607any ACPI driver or OSPM code. The debug version of the code includes the
12608debug output trace mechanism and has a much larger code and data size.
12609Note
12610that these values will vary depending on the efficiency of the compiler
12611and
12612the compiler options used during generation.
12613
12614  Previous Release:
12615    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12616    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
12617  Current Release:
12618    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12619    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
12620
12621
126222) iASL Compiler/Disassembler:
12623
12624Fixed a problem where incorrect AML code could be generated for Package
12625objects if optimization is disabled (via the -oa switch).
12626
12627Fixed a problem with where incorrect AML code is generated for variable-
12628length packages when the package length is not specified and the number
12629of
12630initializer values is greater than 255.
12631
12632
12633----------------------------------------
1263429 July 2005.  Summary of changes for version 20050729:
12635
126361) ACPI CA Core Subsystem:
12637
12638Implemented support to ignore an attempt to install/load a particular
12639ACPI
12640table more than once. Apparently there exists BIOS code that repeatedly
12641attempts to load the same SSDT upon certain events. With assistance from
12642Venkatesh Pallipadi.
12643
12644Restructured the main interface to the AML parser in order to correctly
12645handle all exceptional conditions. This will prevent leakage of the
12646OwnerId
12647resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
12648some
12649machines. With assistance from Alexey Starikovskiy.
12650
12651Support for "module level code" has been disabled in this version due to
12652a
12653number of issues that have appeared on various machines. The support can
12654be
12655enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
12656compilation. When the issues are fully resolved, the code will be enabled
12657by
12658default again.
12659
12660Modified the internal functions for debug print support to define the
12661FunctionName parameter as a (const char *) for compatibility with
12662compiler
12663built-in macros such as __FUNCTION__, etc.
12664
12665Linted the entire ACPICA source tree for both 32-bit and 64-bit.
12666
12667Implemented support to display an object count summary for the AML
12668Debugger
12669commands Object and Methods.
12670
12671Code and Data Size: Current and previous core subsystem library sizes are
12672shown below. These are the code and data sizes for the acpica.lib
12673produced
12674by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12675any ACPI driver or OSPM code. The debug version of the code includes the
12676debug output trace mechanism and has a much larger code and data size.
12677Note
12678that these values will vary depending on the efficiency of the compiler
12679and
12680the compiler options used during generation.
12681
12682  Previous Release:
12683    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
12684    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
12685  Current Release:
12686    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12687    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
12688
12689
126902) iASL Compiler/Disassembler:
12691
12692Fixed a regression that appeared in the 20050708 version of the compiler
12693where an error message was inadvertently emitted for invocations of the
12694_OSI
12695reserved control method.
12696
12697----------------------------------------
1269808 July 2005.  Summary of changes for version 20050708:
12699
127001) ACPI CA Core Subsystem:
12701
12702The use of the CPU stack in the debug version of the subsystem has been
12703considerably reduced. Previously, a debug structure was declared in every
12704function that used the debug macros. This structure has been removed in
12705favor of declaring the individual elements as parameters to the debug
12706functions. This reduces the cumulative stack use during nested execution
12707of
12708ACPI function calls at the cost of a small increase in the code size of
12709the
12710debug version of the subsystem. With assistance from Alexey Starikovskiy
12711and
12712Len Brown.
12713
12714Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
12715headers to define a macro that will return the current function name at
12716runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
12717by
12718the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
12719compiler-dependent header, the function name is saved on the CPU stack
12720(one
12721pointer per function.) This mechanism is used because apparently there
12722exists no standard ANSI-C defined macro that that returns the function
12723name.
12724
12725Redesigned and reimplemented the "Owner ID" mechanism used to track
12726namespace objects created/deleted by ACPI tables and control method
12727execution. A bitmap is now used to allocate and free the IDs, thus
12728solving
12729the wraparound problem present in the previous implementation. The size
12730of
12731the namespace node descriptor was reduced by 2 bytes as a result (Alexey
12732Starikovskiy).
12733
12734Removed the UINT32_BIT and UINT16_BIT types that were used for the
12735bitfield
12736flag definitions within the headers for the predefined ACPI tables. These
12737have been replaced by UINT8_BIT in order to increase the code portability
12738of
12739the subsystem. If the use of UINT8 remains a problem, we may be forced to
12740eliminate bitfields entirely because of a lack of portability.
12741
12742Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
12743This
12744is a frequently used function and this improvement increases the
12745performance
12746of the entire subsystem (Alexey Starikovskiy).
12747
12748Fixed several possible memory leaks and the inverse - premature object
12749deletion (Alexey Starikovskiy).
12750
12751Code and Data Size: Current and previous core subsystem library sizes are
12752shown below. These are the code and data sizes for the acpica.lib
12753produced
12754by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12755any ACPI driver or OSPM code. The debug version of the code includes the
12756debug output trace mechanism and has a much larger code and data size.
12757Note
12758that these values will vary depending on the efficiency of the compiler
12759and
12760the compiler options used during generation.
12761
12762  Previous Release:
12763    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
12764    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
12765  Current Release:
12766    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
12767    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
12768
12769----------------------------------------
1277024 June 2005.  Summary of changes for version 20050624:
12771
127721) ACPI CA Core Subsystem:
12773
12774Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
12775the host-defined cache object. This allows the OSL implementation to
12776define
12777and type this object in any manner desired, simplifying the OSL
12778implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
12779Linux, and should be defined in the OS-specific header file for other
12780operating systems as required.
12781
12782Changed the interface to AcpiOsAcquireObject to directly return the
12783requested object as the function return (instead of ACPI_STATUS.) This
12784change was made for performance reasons, since this is the purpose of the
12785interface in the first place. AcpiOsAcquireObject is now similar to the
12786AcpiOsAllocate interface.
12787
12788Implemented a new AML debugger command named Businfo. This command
12789displays
12790information about all devices that have an associate _PRT object. The
12791_ADR,
12792_HID, _UID, and _CID are displayed for these devices.
12793
12794Modified the initialization sequence in AcpiInitializeSubsystem to call
12795the
12796OSL interface AcpiOslInitialize first, before any local initialization.
12797This
12798change was required because the global initialization now calls OSL
12799interfaces.
12800
12801Enhanced the Dump command to display the entire contents of Package
12802objects
12803(including all sub-objects and their values.)
12804
12805Restructured the code base to split some files because of size and/or
12806because the code logically belonged in a separate file. New files are
12807listed
12808below. All makefiles and project files included in the ACPI CA release
12809have
12810been updated.
12811    utilities/utcache.c           /* Local cache interfaces */
12812    utilities/utmutex.c           /* Local mutex support */
12813    utilities/utstate.c           /* State object support */
12814    interpreter/parser/psloop.c   /* Main AML parse loop */
12815
12816Code and Data Size: Current and previous core subsystem library sizes are
12817shown below. These are the code and data sizes for the acpica.lib
12818produced
12819by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12820any ACPI driver or OSPM code. The debug version of the code includes the
12821debug output trace mechanism and has a much larger code and data size.
12822Note
12823that these values will vary depending on the efficiency of the compiler
12824and
12825the compiler options used during generation.
12826
12827  Previous Release:
12828    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
12829    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
12830  Current Release:
12831    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
12832    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
12833
12834
128352) iASL Compiler/Disassembler:
12836
12837Fixed a regression introduced in version 20050513 where the use of a
12838Package
12839object within a Case() statement caused a compile time exception. The
12840original behavior has been restored (a Match() operator is emitted.)
12841
12842----------------------------------------
1284317 June 2005.  Summary of changes for version 20050617:
12844
128451) ACPI CA Core Subsystem:
12846
12847Moved the object cache operations into the OS interface layer (OSL) to
12848allow
12849the host OS to handle these operations if desired (for example, the Linux
12850OSL will invoke the slab allocator). This support is optional; the
12851compile
12852time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
12853cache
12854code in the ACPI CA core. The new OSL interfaces are shown below. See
12855utalloc.c for an example implementation, and acpiosxf.h for the exact
12856interface definitions. With assistance from Alexey Starikovskiy.
12857    AcpiOsCreateCache
12858    AcpiOsDeleteCache
12859    AcpiOsPurgeCache
12860    AcpiOsAcquireObject
12861    AcpiOsReleaseObject
12862
12863Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
12864return
12865and restore a flags parameter. This fits better with many OS lock models.
12866Note: the current execution state (interrupt handler or not) is no longer
12867passed to these interfaces. If necessary, the OSL must determine this
12868state
12869by itself, a simple and fast operation. With assistance from Alexey
12870Starikovskiy.
12871
12872Fixed a problem in the ACPI table handling where a valid XSDT was assumed
12873present if the revision of the RSDP was 2 or greater. According to the
12874ACPI
12875specification, the XSDT is optional in all cases, and the table manager
12876therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
12877Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
12878contain
12879only the RSDT.
12880
12881Fixed an interpreter problem with the Mid() operator in the case of an
12882input
12883string where the resulting output string is of zero length. It now
12884correctly
12885returns a valid, null terminated string object instead of a string object
12886with a null pointer.
12887
12888Fixed a problem with the control method argument handling to allow a
12889store
12890to an Arg object that already contains an object of type Device. The
12891Device
12892object is now correctly overwritten. Previously, an error was returned.
12893
12894
12895Enhanced the debugger Find command to emit object values in addition to
12896the
12897found object pathnames. The output format is the same as the dump
12898namespace
12899command.
12900
12901Enhanced the debugger Set command. It now has the ability to set the
12902value
12903of any Named integer object in the namespace (Previously, only method
12904locals
12905and args could be set.)
12906
12907Code and Data Size: Current and previous core subsystem library sizes are
12908shown below. These are the code and data sizes for the acpica.lib
12909produced
12910by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12911any ACPI driver or OSPM code. The debug version of the code includes the
12912debug output trace mechanism and has a much larger code and data size.
12913Note
12914that these values will vary depending on the efficiency of the compiler
12915and
12916the compiler options used during generation.
12917
12918  Previous Release:
12919    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
12920    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
12921  Current Release:
12922    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
12923    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
12924
12925
129262) iASL Compiler/Disassembler:
12927
12928Fixed a regression in the disassembler where if/else/while constructs
12929were
12930output incorrectly. This problem was introduced in the previous release
12931(20050526). This problem also affected the single-step disassembly in the
12932debugger.
12933
12934Fixed a problem where compiling the reserved _OSI method would randomly
12935(but
12936rarely) produce compile errors.
12937
12938Enhanced the disassembler to emit compilable code in the face of
12939incorrect
12940AML resource descriptors. If the optional ResourceSourceIndex is present,
12941but the ResourceSource is not, do not emit the ResourceSourceIndex in the
12942disassembly. Otherwise, the resulting code cannot be compiled without
12943errors.
12944
12945----------------------------------------
1294626 May 2005.  Summary of changes for version 20050526:
12947
129481) ACPI CA Core Subsystem:
12949
12950Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
12951the module level (not within a control method.) These opcodes are
12952executed
12953exactly once at the time the table is loaded. This type of code was legal
12954up
12955until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
12956in
12957order to provide backwards compatibility with earlier BIOS
12958implementations.
12959This eliminates the "Encountered executable code at module level" warning
12960that was previously generated upon detection of such code.
12961
12962Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
12963inadvertently be generated during the lookup of namespace objects in the
12964second pass parse of ACPI tables and control methods. It appears that
12965this
12966problem could occur during the resolution of forward references to
12967namespace
12968objects.
12969
12970Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
12971corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
12972allows the deadlock detection debug code to be compiled out in the normal
12973case, improving mutex performance (and overall subsystem performance)
12974considerably.
12975
12976Implemented a handful of miscellaneous fixes for possible memory leaks on
12977error conditions and error handling control paths. These fixes were
12978suggested by FreeBSD and the Coverity Prevent source code analysis tool.
12979
12980Added a check for a null RSDT pointer in AcpiGetFirmwareTable
12981(tbxfroot.c)
12982to prevent a fault in this error case.
12983
12984Code and Data Size: Current and previous core subsystem library sizes are
12985shown below. These are the code and data sizes for the acpica.lib
12986produced
12987by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12988any ACPI driver or OSPM code. The debug version of the code includes the
12989debug output trace mechanism and has a much larger code and data size.
12990Note
12991that these values will vary depending on the efficiency of the compiler
12992and
12993the compiler options used during generation.
12994
12995  Previous Release:
12996    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
12997    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
12998  Current Release:
12999    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
13000    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
13001
13002
130032) iASL Compiler/Disassembler:
13004
13005Implemented support to allow Type 1 and Type 2 ASL operators to appear at
13006the module level (not within a control method.) These operators will be
13007executed once at the time the table is loaded. This type of code was
13008legal
13009up until the release of ACPI 2.0B (2002) and is now supported by the iASL
13010compiler in order to provide backwards compatibility with earlier BIOS
13011ASL
13012code.
13013
13014The ACPI integer width (specified via the table revision ID or the -r
13015override, 32 or 64 bits) is now used internally during compile-time
13016constant
13017folding to ensure that constants are truncated to 32 bits if necessary.
13018Previously, the revision ID value was only emitted in the AML table
13019header.
13020
13021An error message is now generated for the Mutex and Method operators if
13022the
13023SyncLevel parameter is outside the legal range of 0 through 15.
13024
13025Fixed a problem with the Method operator ParameterTypes list handling
13026(ACPI
130273.0). Previously, more than 2 types or 2 arguments generated a syntax
13028error.
13029The actual underlying implementation of method argument typechecking is
13030still under development, however.
13031
13032----------------------------------------
1303313 May 2005.  Summary of changes for version 20050513:
13034
130351) ACPI CA Core Subsystem:
13036
13037Implemented support for PCI Express root bridges -- added support for
13038device
13039PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
13040
13041The interpreter now automatically truncates incoming 64-bit constants to
1304232
13043bits if currently executing out of a 32-bit ACPI table (Revision < 2).
13044This
13045also affects the iASL compiler constant folding. (Note: as per below, the
13046iASL compiler no longer allows 64-bit constants within 32-bit tables.)
13047
13048Fixed a problem where string and buffer objects with "static" pointers
13049(pointers to initialization data within an ACPI table) were not handled
13050consistently. The internal object copy operation now always copies the
13051data
13052to a newly allocated buffer, regardless of whether the source object is
13053static or not.
13054
13055Fixed a problem with the FromBCD operator where an implicit result
13056conversion was improperly performed while storing the result to the
13057target
13058operand. Since this is an "explicit conversion" operator, the implicit
13059conversion should never be performed on the output.
13060
13061Fixed a problem with the CopyObject operator where a copy to an existing
13062named object did not always completely overwrite the existing object
13063stored
13064at name. Specifically, a buffer-to-buffer copy did not delete the
13065existing
13066buffer.
13067
13068Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
13069and
13070structs for consistency.
13071
13072Code and Data Size: Current and previous core subsystem library sizes are
13073shown below. These are the code and data sizes for the acpica.lib
13074produced
13075by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13076any ACPI driver or OSPM code. The debug version of the code includes the
13077debug output trace mechanism and has a much larger code and data size.
13078Note
13079that these values will vary depending on the efficiency of the compiler
13080and
13081the compiler options used during generation.
13082
13083  Previous Release:
13084    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13085    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13086  Current Release: (Same sizes)
13087    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13088    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13089
13090
130912) iASL Compiler/Disassembler:
13092
13093The compiler now emits a warning if an attempt is made to generate a 64-
13094bit
13095integer constant from within a 32-bit ACPI table (Revision < 2). The
13096integer
13097is truncated to 32 bits.
13098
13099Fixed a problem with large package objects: if the static length of the
13100package is greater than 255, the "variable length package" opcode is
13101emitted. Previously, this caused an error. This requires an update to the
13102ACPI spec, since it currently (incorrectly) states that packages larger
13103than
13104255 elements are not allowed.
13105
13106The disassembler now correctly handles variable length packages and
13107packages
13108larger than 255 elements.
13109
13110----------------------------------------
1311108 April 2005.  Summary of changes for version 20050408:
13112
131131) ACPI CA Core Subsystem:
13114
13115Fixed three cases in the interpreter where an "index" argument to an ASL
13116function was still (internally) 32 bits instead of the required 64 bits.
13117This was the Index argument to the Index, Mid, and Match operators.
13118
13119The "strupr" function is now permanently local (AcpiUtStrupr), since this
13120is
13121not a POSIX-defined function and not present in most kernel-level C
13122libraries. All references to the C library strupr function have been
13123removed
13124from the headers.
13125
13126Completed the deployment of static functions/prototypes. All prototypes
13127with
13128the static attribute have been moved from the headers to the owning C
13129file.
13130
13131Implemented an extract option (-e) for the AcpiBin utility (AML binary
13132utility). This option allows the utility to extract individual ACPI
13133tables
13134from the output of AcpiDmp. It provides the same functionality of the
13135acpixtract.pl perl script without the worry of setting the correct perl
13136options. AcpiBin runs on Windows and has not yet been generated/validated
13137in
13138the Linux/Unix environment (but should be soon).
13139
13140Updated and fixed the table dump option for AcpiBin (-d). This option
13141converts a single ACPI table to a hex/ascii file, similar to the output
13142of
13143AcpiDmp.
13144
13145Code and Data Size: Current and previous core subsystem library sizes are
13146shown below. These are the code and data sizes for the acpica.lib
13147produced
13148by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13149any ACPI driver or OSPM code. The debug version of the code includes the
13150debug output trace mechanism and has a much larger code and data size.
13151Note
13152that these values will vary depending on the efficiency of the compiler
13153and
13154the compiler options used during generation.
13155
13156  Previous Release:
13157    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
13158    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
13159  Current Release:
13160    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13161    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13162
13163
131642) iASL Compiler/Disassembler:
13165
13166Disassembler fix: Added a check to ensure that the table length found in
13167the
13168ACPI table header within the input file is not longer than the actual
13169input
13170file size. This indicates some kind of file or table corruption.
13171
13172----------------------------------------
1317329 March 2005.  Summary of changes for version 20050329:
13174
131751) ACPI CA Core Subsystem:
13176
13177An error is now generated if an attempt is made to create a Buffer Field
13178of
13179length zero (A CreateField with a length operand of zero.)
13180
13181The interpreter now issues a warning whenever executable code at the
13182module
13183level is detected during ACPI table load. This will give some idea of the
13184prevalence of this type of code.
13185
13186Implemented support for references to named objects (other than control
13187methods) within package objects.
13188
13189Enhanced package object output for the debug object. Package objects are
13190now
13191completely dumped, showing all elements.
13192
13193Enhanced miscellaneous object output for the debug object. Any object can
13194now be written to the debug object (for example, a device object can be
13195written, and the type of the object will be displayed.)
13196
13197The "static" qualifier has been added to all local functions across both
13198the
13199core subsystem and the iASL compiler.
13200
13201The number of "long" lines (> 80 chars) within the source has been
13202significantly reduced, by about 1/3.
13203
13204Cleaned up all header files to ensure that all CA/iASL functions are
13205prototyped (even static functions) and the formatting is consistent.
13206
13207Two new header files have been added, acopcode.h and acnames.h.
13208
13209Removed several obsolete functions that were no longer used.
13210
13211Code and Data Size: Current and previous core subsystem library sizes are
13212shown below. These are the code and data sizes for the acpica.lib
13213produced
13214by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13215any ACPI driver or OSPM code. The debug version of the code includes the
13216debug output trace mechanism and has a much larger code and data size.
13217Note
13218that these values will vary depending on the efficiency of the compiler
13219and
13220the compiler options used during generation.
13221
13222  Previous Release:
13223    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13224    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
13225  Current Release:
13226    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
13227    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
13228
13229
13230
132312) iASL Compiler/Disassembler:
13232
13233Fixed a problem with the resource descriptor generation/support. For the
13234ResourceSourceIndex and the ResourceSource fields, both must be present,
13235or
13236both must be not present - can't have one without the other.
13237
13238The compiler now returns non-zero from the main procedure if any errors
13239have
13240occurred during the compilation.
13241
13242
13243----------------------------------------
1324409 March 2005.  Summary of changes for version 20050309:
13245
132461) ACPI CA Core Subsystem:
13247
13248The string-to-buffer implicit conversion code has been modified again
13249after
13250a change to the ACPI specification.  In order to match the behavior of
13251the
13252other major ACPI implementation, the target buffer is no longer truncated
13253if
13254the source string is smaller than an existing target buffer. This change
13255requires an update to the ACPI spec, and should eliminate the recent
13256AE_AML_BUFFER_LIMIT issues.
13257
13258The "implicit return" support was rewritten to a new algorithm that
13259solves
13260the general case. Rather than attempt to determine when a method is about
13261to
13262exit, the result of every ASL operator is saved momentarily until the
13263very
13264next ASL operator is executed. Therefore, no matter how the method exits,
13265there will always be a saved implicit return value. This feature is only
13266enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
13267eliminate
13268AE_AML_NO_RETURN_VALUE errors when enabled.
13269
13270Implemented implicit conversion support for the predicate (operand) of
13271the
13272If, Else, and While operators. String and Buffer arguments are
13273automatically
13274converted to Integers.
13275
13276Changed the string-to-integer conversion behavior to match the new ACPI
13277errata: "If no integer object exists, a new integer is created. The ASCII
13278string is interpreted as a hexadecimal constant. Each string character is
13279interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
13280with the first character as the most significant digit, and ending with
13281the
13282first non-hexadecimal character or end-of-string." This means that the
13283first
13284non-hex character terminates the conversion and this is the code that was
13285changed.
13286
13287Fixed a problem where the ObjectType operator would fail (fault) when
13288used
13289on an Index of a Package which pointed to a null package element. The
13290operator now properly returns zero (Uninitialized) in this case.
13291
13292Fixed a problem where the While operator used excessive memory by not
13293properly popping the result stack during execution. There was no memory
13294leak
13295after execution, however. (Code provided by Valery Podrezov.)
13296
13297Fixed a problem where references to control methods within Package
13298objects
13299caused the method to be invoked, instead of producing a reference object
13300pointing to the method.
13301
13302Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
13303to
13304improve performance and reduce code size. (Code provided by Alexey
13305Starikovskiy.)
13306
13307Code and Data Size: Current and previous core subsystem library sizes are
13308shown below. These are the code and data sizes for the acpica.lib
13309produced
13310by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13311any ACPI driver or OSPM code. The debug version of the code includes the
13312debug output trace mechanism and has a much larger code and data size.
13313Note
13314that these values will vary depending on the efficiency of the compiler
13315and
13316the compiler options used during generation.
13317
13318  Previous Release:
13319    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13320    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
13321  Current Release:
13322    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13323    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
13324
13325
133262) iASL Compiler/Disassembler:
13327
13328Fixed a problem with the Return operator with no arguments. Since the AML
13329grammar for the byte encoding requires an operand for the Return opcode,
13330the
13331compiler now emits a Return(Zero) for this case.  An ACPI specification
13332update has been written for this case.
13333
13334For tables other than the DSDT, namepath optimization is automatically
13335disabled. This is because SSDTs can be loaded anywhere in the namespace,
13336the
13337compiler has no knowledge of where, and thus cannot optimize namepaths.
13338
13339Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
13340inadvertently omitted from the ACPI specification, and will require an
13341update to the spec.
13342
13343The source file scan for ASCII characters is now optional (-a). This
13344change
13345was made because some vendors place non-ascii characters within comments.
13346However, the scan is simply a brute-force byte compare to ensure all
13347characters in the file are in the range 0x00 to 0x7F.
13348
13349Fixed a problem with the CondRefOf operator where the compiler was
13350inappropriately checking for the existence of the target. Since the point
13351of
13352the operator is to check for the existence of the target at run-time, the
13353compiler no longer checks for the target existence.
13354
13355Fixed a problem where errors generated from the internal AML interpreter
13356during constant folding were not handled properly, causing a fault.
13357
13358Fixed a problem with overly aggressive range checking for the Stall
13359operator. The valid range (max 255) is now only checked if the operand is
13360of
13361type Integer. All other operand types cannot be statically checked.
13362
13363Fixed a problem where control method references within the RefOf,
13364DeRefOf,
13365and ObjectType operators were not treated properly. They are now treated
13366as
13367actual references, not method invocations.
13368
13369Fixed and enhanced the "list namespace" option (-ln). This option was
13370broken
13371a number of releases ago.
13372
13373Improved error handling for the Field, IndexField, and BankField
13374operators.
13375The compiler now cleanly reports and recovers from errors in the field
13376component (FieldUnit) list.
13377
13378Fixed a disassembler problem where the optional ResourceDescriptor fields
13379TRS and TTP were not always handled correctly.
13380
13381Disassembler - Comments in output now use "//" instead of "/*"
13382
13383----------------------------------------
1338428 February 2005.  Summary of changes for version 20050228:
13385
133861) ACPI CA Core Subsystem:
13387
13388Fixed a problem where the result of an Index() operator (an object
13389reference) must increment the reference count on the target object for
13390the
13391life of the object reference.
13392
13393Implemented AML Interpreter and Debugger support for the new ACPI 3.0
13394Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
13395WordSpace
13396resource descriptors.
13397
13398Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
13399Space Descriptor" string, indicating interpreter support for the
13400descriptors
13401above.
13402
13403Implemented header support for the new ACPI 3.0 FADT flag bits.
13404
13405Implemented header support for the new ACPI 3.0 PCI Express bits for the
13406PM1
13407status/enable registers.
13408
13409Updated header support for the MADT processor local Apic struct and MADT
13410platform interrupt source struct for new ACPI 3.0 fields.
13411
13412Implemented header support for the SRAT and SLIT ACPI tables.
13413
13414Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
13415flag
13416at runtime.
13417
13418Code and Data Size: Current and previous core subsystem library sizes are
13419shown below. These are the code and data sizes for the acpica.lib
13420produced
13421by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13422any ACPI driver or OSPM code. The debug version of the code includes the
13423debug output trace mechanism and has a much larger code and data size.
13424Note
13425that these values will vary depending on the efficiency of the compiler
13426and
13427the compiler options used during generation.
13428
13429  Previous Release:
13430    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
13431    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
13432  Current Release:
13433    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13434    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
13435
13436
134372) iASL Compiler/Disassembler:
13438
13439Fixed a problem with the internal 64-bit String-to-integer conversion
13440with
13441strings less than two characters long.
13442
13443Fixed a problem with constant folding where the result of the Index()
13444operator can not be considered a constant. This means that Index() cannot
13445be
13446a type3 opcode and this will require an update to the ACPI specification.
13447
13448Disassembler: Implemented support for the TTP, MTP, and TRS resource
13449descriptor fields. These fields were inadvertently ignored and not output
13450in
13451the disassembly of the resource descriptor.
13452
13453
13454 ----------------------------------------
1345511 February 2005.  Summary of changes for version 20050211:
13456
134571) ACPI CA Core Subsystem:
13458
13459Implemented ACPI 3.0 support for implicit conversion within the Match()
13460operator. MatchObjects can now be of type integer, buffer, or string
13461instead
13462of just type integer.  Package elements are implicitly converted to the
13463type
13464of the MatchObject. This change aligns the behavior of Match() with the
13465behavior of the other logical operators (LLess(), etc.) It also requires
13466an
13467errata change to the ACPI specification as this support was intended for
13468ACPI 3.0, but was inadvertently omitted.
13469
13470Fixed a problem with the internal implicit "to buffer" conversion.
13471Strings
13472that are converted to buffers will cause buffer truncation if the string
13473is
13474smaller than the target buffer. Integers that are converted to buffers
13475will
13476not cause buffer truncation, only zero extension (both as per the ACPI
13477spec.) The problem was introduced when code was added to truncate the
13478buffer, but this should not be performed in all cases, only the string
13479case.
13480
13481Fixed a problem with the Buffer and Package operators where the
13482interpreter
13483would get confused if two such operators were used as operands to an ASL
13484operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
13485stack was not being popped after the execution of these operators,
13486resulting
13487in an AE_NO_RETURN_VALUE exception.
13488
13489Fixed a problem with constructs of the form Store(Index(...),...). The
13490reference object returned from Index was inadvertently resolved to an
13491actual
13492value. This problem was introduced in version 20050114 when the behavior
13493of
13494Store() was modified to restrict the object types that can be used as the
13495source operand (to match the ACPI specification.)
13496
13497Reduced excessive stack use within the AcpiGetObjectInfo procedure.
13498
13499Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
13500
13501Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
13502
13503Code and Data Size: Current and previous core subsystem library sizes are
13504shown below. These are the code and data sizes for the acpica.lib
13505produced
13506by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13507any ACPI driver or OSPM code. The debug version of the code includes the
13508debug output trace mechanism and has a much larger code and data size.
13509Note
13510that these values will vary depending on the efficiency of the compiler
13511and
13512the compiler options used during generation.
13513
13514  Previous Release:
13515    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
13516    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
13517  Current Release:
13518    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
13519    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
13520
13521
135222) iASL Compiler/Disassembler:
13523
13524Fixed a code generation problem in the constant folding optimization code
13525where incorrect code was generated if a constant was reduced to a buffer
13526object (i.e., a reduced type 5 opcode.)
13527
13528Fixed a typechecking problem for the ToBuffer operator. Caused by an
13529incorrect return type in the internal opcode information table.
13530
13531----------------------------------------
1353225 January 2005.  Summary of changes for version 20050125:
13533
135341) ACPI CA Core Subsystem:
13535
13536Fixed a recently introduced problem with the Global Lock where the
13537underlying semaphore was not created.  This problem was introduced in
13538version 20050114, and caused an AE_AML_NO_OPERAND exception during an
13539Acquire() operation on _GL.
13540
13541The local object cache is now optional, and is disabled by default. Both
13542AcpiExec and the iASL compiler enable the cache because they run in user
13543mode and this enhances their performance. #define
13544ACPI_ENABLE_OBJECT_CACHE
13545to enable the local cache.
13546
13547Fixed an issue in the internal function AcpiUtEvaluateObject concerning
13548the
13549optional "implicit return" support where an error was returned if no
13550return
13551object was expected, but one was implicitly returned. AE_OK is now
13552returned
13553in this case and the implicitly returned object is deleted.
13554AcpiUtEvaluateObject is only occasionally used, and only to execute
13555reserved
13556methods such as _STA and _INI where the return type is known up front.
13557
13558Fixed a few issues with the internal convert-to-integer code. It now
13559returns
13560an error if an attempt is made to convert a null string, a string of only
13561blanks/tabs, or a zero-length buffer. This affects both implicit
13562conversion
13563and explicit conversion via the ToInteger() operator.
13564
13565The internal debug code in AcpiUtAcquireMutex has been commented out. It
13566is
13567not needed for normal operation and should increase the performance of
13568the
13569entire subsystem. The code remains in case it is needed for debug
13570purposes
13571again.
13572
13573The AcpiExec source and makefile are included in the Unix/Linux package
13574for
13575the first time.
13576
13577Code and Data Size: Current and previous core subsystem library sizes are
13578shown below. These are the code and data sizes for the acpica.lib
13579produced
13580by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13581any ACPI driver or OSPM code. The debug version of the code includes the
13582debug output trace mechanism and has a much larger code and data size.
13583Note
13584that these values will vary depending on the efficiency of the compiler
13585and
13586the compiler options used during generation.
13587
13588  Previous Release:
13589    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
13590    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
13591  Current Release:
13592    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
13593    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
13594
135952) iASL Compiler/Disassembler:
13596
13597Switch/Case support: A warning is now issued if the type of the Switch
13598value
13599cannot be determined at compile time. For example, Switch(Arg0) will
13600generate the warning, and the type is assumed to be an integer. As per
13601the
13602ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
13603the
13604warning.
13605
13606Switch/Case support: Implemented support for buffer and string objects as
13607the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
13608buffers and strings.
13609
13610Switch/Case support: The emitted code for the LEqual() comparisons now
13611uses
13612the switch value as the first operand, not the second. The case value is
13613now
13614the second operand, and this allows the case value to be implicitly
13615converted to the type of the switch value, not the other way around.
13616
13617Switch/Case support: Temporary variables are now emitted immediately
13618within
13619the control method, not at the global level. This means that there are
13620now
1362136 temps available per-method, not 36 temps per-module as was the case
13622with
13623the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
13624
13625----------------------------------------
1362614 January 2005.  Summary of changes for version 20050114:
13627
13628Added 2005 copyright to all module headers.  This affects every module in
13629the core subsystem, iASL compiler, and the utilities.
13630
136311) ACPI CA Core Subsystem:
13632
13633Fixed an issue with the String-to-Buffer conversion code where the string
13634null terminator was not included in the buffer after conversion, but
13635there
13636is existing ASL that assumes the string null terminator is included. This
13637is
13638the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
13639introduced in the previous version when the code was updated to correctly
13640set the converted buffer size as per the ACPI specification. The ACPI
13641spec
13642is ambiguous and will be updated to specify that the null terminator must
13643be
13644included in the converted buffer. This also affects the ToBuffer() ASL
13645operator.
13646
13647Fixed a problem with the Mid() ASL/AML operator where it did not work
13648correctly on Buffer objects. Newly created sub-buffers were not being
13649marked
13650as initialized.
13651
13652
13653Fixed a problem in AcpiTbFindTable where incorrect string compares were
13654performed on the OemId and OemTableId table header fields.  These fields
13655are
13656not null terminated, so strncmp is now used instead of strcmp.
13657
13658Implemented a restriction on the Store() ASL/AML operator to align the
13659behavior with the ACPI specification.  Previously, any object could be
13660used
13661as the source operand.  Now, the only objects that may be used are
13662Integers,
13663Buffers, Strings, Packages, Object References, and DDB Handles.  If
13664necessary, the original behavior can be restored by enabling the
13665EnableInterpreterSlack flag.
13666
13667Enhanced the optional "implicit return" support to allow an implicit
13668return
13669value from methods that are invoked externally via the AcpiEvaluateObject
13670interface.  This enables implicit returns from the _STA and _INI methods,
13671for example.
13672
13673Changed the Revision() ASL/AML operator to return the current version of
13674the
13675AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
13676returned
13677the supported ACPI version (This is the function of the _REV method).
13678
13679Updated the _REV predefined method to return the currently supported
13680version
13681of ACPI, now 3.
13682
13683Implemented batch mode option for the AcpiExec utility (-b).
13684
13685Code and Data Size: Current and previous core subsystem library sizes are
13686shown below. These are the code and data sizes for the acpica.lib
13687produced
13688by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13689any ACPI driver or OSPM code. The debug version of the code includes the
13690debug output trace mechanism and has a much larger code and data size.
13691Note
13692that these values will vary depending on the efficiency of the compiler
13693and
13694the compiler options used during generation.
13695
13696  Previous Release:
13697    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13698    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
13699  Current Release:
13700    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
13701    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
13702
13703----------------------------------------
1370410 December 2004.  Summary of changes for version 20041210:
13705
13706ACPI 3.0 support is nearing completion in both the iASL compiler and the
13707ACPI CA core subsystem.
13708
137091) ACPI CA Core Subsystem:
13710
13711Fixed a problem in the ToDecimalString operator where the resulting
13712string
13713length was incorrectly calculated. The length is now calculated exactly,
13714eliminating incorrect AE_STRING_LIMIT exceptions.
13715
13716Fixed a problem in the ToHexString operator to allow a maximum 200
13717character
13718string to be produced.
13719
13720Fixed a problem in the internal string-to-buffer and buffer-to-buffer
13721copy
13722routine where the length of the resulting buffer was not truncated to the
13723new size (if the target buffer already existed).
13724
13725Code and Data Size: Current and previous core subsystem library sizes are
13726shown below. These are the code and data sizes for the acpica.lib
13727produced
13728by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13729any ACPI driver or OSPM code. The debug version of the code includes the
13730debug output trace mechanism and has a much larger code and data size.
13731Note
13732that these values will vary depending on the efficiency of the compiler
13733and
13734the compiler options used during generation.
13735
13736  Previous Release:
13737    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13738    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
13739  Current Release:
13740    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13741    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
13742
13743
137442) iASL Compiler/Disassembler:
13745
13746Implemented the new ACPI 3.0 resource template macros - DWordSpace,
13747ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
13748Includes support in the disassembler.
13749
13750Implemented support for the new (ACPI 3.0) parameter to the Register
13751macro,
13752AccessSize.
13753
13754Fixed a problem where the _HE resource name for the Interrupt macro was
13755referencing bit 0 instead of bit 1.
13756
13757Implemented check for maximum 255 interrupts in the Interrupt macro.
13758
13759Fixed a problem with the predefined resource descriptor names where
13760incorrect AML code was generated if the offset within the resource buffer
13761was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
13762but did not update the surrounding package lengths.
13763
13764Changes to the Dma macro:  All channels within the channel list must be
13765in
13766the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
13767optional (default is BusMaster).
13768
13769Implemented check for maximum 7 data bytes for the VendorShort macro.
13770
13771The ReadWrite parameter is now optional for the Memory32 and similar
13772macros.
13773
13774----------------------------------------
1377503 December 2004.  Summary of changes for version 20041203:
13776
137771) ACPI CA Core Subsystem:
13778
13779The low-level field insertion/extraction code (exfldio) has been
13780completely
13781rewritten to eliminate unnecessary complexity, bugs, and boundary
13782conditions.
13783
13784Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
13785ToDecimalString
13786operators where the input operand could be inadvertently deleted if no
13787conversion was necessary (e.g., if the input to ToInteger was an Integer
13788object.)
13789
13790Fixed a problem with the ToDecimalString and ToHexString where an
13791incorrect
13792exception code was returned if the resulting string would be > 200 chars.
13793AE_STRING_LIMIT is now returned.
13794
13795Fixed a problem with the Concatenate operator where AE_OK was always
13796returned, even if the operation failed.
13797
13798Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
13799semaphores to be allocated.
13800
13801Code and Data Size: Current and previous core subsystem library sizes are
13802shown below. These are the code and data sizes for the acpica.lib
13803produced
13804by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13805any ACPI driver or OSPM code. The debug version of the code includes the
13806debug output trace mechanism and has a much larger code and data size.
13807Note
13808that these values will vary depending on the efficiency of the compiler
13809and
13810the compiler options used during generation.
13811
13812  Previous Release:
13813    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13814    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13815  Current Release:
13816    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13817    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
13818
13819
138202) iASL Compiler/Disassembler:
13821
13822Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
13823recently introduced in 20041119.
13824
13825Fixed a problem with the ToUUID macro where the upper nybble of each
13826buffer
13827byte was inadvertently set to zero.
13828
13829----------------------------------------
1383019 November 2004.  Summary of changes for version 20041119:
13831
138321) ACPI CA Core Subsystem:
13833
13834Fixed a problem in the internal ConvertToInteger routine where new
13835integers
13836were not truncated to 32 bits for 32-bit ACPI tables. This routine
13837converts
13838buffers and strings to integers.
13839
13840Implemented support to store a value to an Index() on a String object.
13841This
13842is an ACPI 2.0 feature that had not yet been implemented.
13843
13844Implemented new behavior for storing objects to individual package
13845elements
13846(via the Index() operator). The previous behavior was to invoke the
13847implicit
13848conversion rules if an object was already present at the index.  The new
13849behavior is to simply delete any existing object and directly store the
13850new
13851object. Although the ACPI specification seems unclear on this subject,
13852other
13853ACPI implementations behave in this manner.  (This is the root of the
13854AE_BAD_HEX_CONSTANT issue.)
13855
13856Modified the RSDP memory scan mechanism to support the extended checksum
13857for
13858ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
13859RSDP signature is found with a valid checksum.
13860
13861Code and Data Size: Current and previous core subsystem library sizes are
13862shown below. These are the code and data sizes for the acpica.lib
13863produced
13864by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13865any ACPI driver or OSPM code. The debug version of the code includes the
13866debug output trace mechanism and has a much larger code and data size.
13867Note
13868that these values will vary depending on the efficiency of the compiler
13869and
13870the compiler options used during generation.
13871
13872  Previous Release:
13873    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13874    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13875  Current Release:
13876    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13877    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13878
13879
138802) iASL Compiler/Disassembler:
13881
13882Fixed a missing semicolon in the aslcompiler.y file.
13883
13884----------------------------------------
1388505 November 2004.  Summary of changes for version 20041105:
13886
138871) ACPI CA Core Subsystem:
13888
13889Implemented support for FADT revision 2.  This was an interim table
13890(between
13891ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
13892
13893Implemented optional support to allow uninitialized LocalX and ArgX
13894variables in a control method.  The variables are initialized to an
13895Integer
13896object with a value of zero.  This support is enabled by setting the
13897AcpiGbl_EnableInterpreterSlack flag to TRUE.
13898
13899Implemented support for Integer objects for the SizeOf operator.  Either
139004
13901or 8 is returned, depending on the current integer size (32-bit or 64-
13902bit,
13903depending on the parent table revision).
13904
13905Fixed a problem in the implementation of the SizeOf and ObjectType
13906operators
13907where the operand was resolved to a value too early, causing incorrect
13908return values for some objects.
13909
13910Fixed some possible memory leaks during exceptional conditions.
13911
13912Code and Data Size: Current and previous core subsystem library sizes are
13913shown below. These are the code and data sizes for the acpica.lib
13914produced
13915by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13916any ACPI driver or OSPM code. The debug version of the code includes the
13917debug output trace mechanism and has a much larger code and data size.
13918Note
13919that these values will vary depending on the efficiency of the compiler
13920and
13921the compiler options used during generation.
13922
13923  Previous Release:
13924    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
13925    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
13926  Current Release:
13927    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13928    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13929
13930
139312) iASL Compiler/Disassembler:
13932
13933Implemented support for all ACPI 3.0 reserved names and methods.
13934
13935Implemented all ACPI 3.0 grammar elements in the front-end, including
13936support for semicolons.
13937
13938Implemented the ACPI 3.0 Function() and ToUUID() macros
13939
13940Fixed a problem in the disassembler where a Scope() operator would not be
13941emitted properly if the target of the scope was in another table.
13942
13943----------------------------------------
1394415 October 2004.  Summary of changes for version 20041015:
13945
13946Note:  ACPI CA is currently undergoing an in-depth and complete formal
13947evaluation to test/verify the following areas. Other suggestions are
13948welcome. This will result in an increase in the frequency of releases and
13949the number of bug fixes in the next few months.
13950  - Functional tests for all ASL/AML operators
13951  - All implicit/explicit type conversions
13952  - Bit fields and operation regions
13953  - 64-bit math support and 32-bit-only "truncated" math support
13954  - Exceptional conditions, both compiler and interpreter
13955  - Dynamic object deletion and memory leaks
13956  - ACPI 3.0 support when implemented
13957  - External interfaces to the ACPI subsystem
13958
13959
139601) ACPI CA Core Subsystem:
13961
13962Fixed two alignment issues on 64-bit platforms - within debug statements
13963in
13964AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
13965Address
13966field within the non-aligned ACPI generic address structure.
13967
13968Fixed a problem in the Increment and Decrement operators where incorrect
13969operand resolution could result in the inadvertent modification of the
13970original integer when the integer is passed into another method as an
13971argument and the arg is then incremented/decremented.
13972
13973Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
13974bit
13975BCD number were truncated during conversion.
13976
13977Fixed a problem in the ToDecimal operator where the length of the
13978resulting
13979string could be set incorrectly too long if the input operand was a
13980Buffer
13981object.
13982
13983Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
13984(0)
13985within a buffer would prematurely terminate a compare between buffer
13986objects.
13987
13988Added a check for string overflow (>200 characters as per the ACPI
13989specification) during the Concatenate operator with two string operands.
13990
13991Code and Data Size: Current and previous core subsystem library sizes are
13992shown below. These are the code and data sizes for the acpica.lib
13993produced
13994by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13995any ACPI driver or OSPM code. The debug version of the code includes the
13996debug output trace mechanism and has a much larger code and data size.
13997Note
13998that these values will vary depending on the efficiency of the compiler
13999and
14000the compiler options used during generation.
14001
14002  Previous Release:
14003    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14004    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
14005  Current Release:
14006    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14007    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
14008
14009
14010
140112) iASL Compiler/Disassembler:
14012
14013Allow the use of the ObjectType operator on uninitialized Locals and Args
14014(returns 0 as per the ACPI specification).
14015
14016Fixed a problem where the compiler would fault if there was a syntax
14017error
14018in the FieldName of all of the various CreateXXXField operators.
14019
14020Disallow the use of lower case letters within the EISAID macro, as per
14021the
14022ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
14023Where
14024U is an uppercase letter and N is a hex digit.
14025
14026
14027----------------------------------------
1402806 October 2004.  Summary of changes for version 20041006:
14029
140301) ACPI CA Core Subsystem:
14031
14032Implemented support for the ACPI 3.0 Timer operator. This ASL function
14033implements a 64-bit timer with 100 nanosecond granularity.
14034
14035Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
14036implement the ACPI 3.0 Timer operator.  This allows the host OS to
14037implement
14038the timer with the best clock available. Also, it keeps the core
14039subsystem
14040out of the clock handling business, since the host OS (usually) performs
14041this function.
14042
14043Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
14044functions use a 64-bit address which is part of the packed ACPI Generic
14045Address Structure. Since the structure is non-aligned, the alignment
14046macros
14047are now used to extract the address to a local variable before use.
14048
14049Fixed a problem where the ToInteger operator assumed all input strings
14050were
14051hexadecimal. The operator now handles both decimal strings and hex
14052strings
14053(prefixed with "0x").
14054
14055Fixed a problem where the string length in the string object created as a
14056result of the internal ConvertToString procedure could be incorrect. This
14057potentially affected all implicit conversions and also the
14058ToDecimalString
14059and ToHexString operators.
14060
14061Fixed two problems in the ToString operator. If the length parameter was
14062zero, an incorrect string object was created and the value of the input
14063length parameter was inadvertently changed from zero to Ones.
14064
14065Fixed a problem where the optional ResourceSource string in the
14066ExtendedIRQ
14067resource macro was ignored.
14068
14069Simplified the interfaces to the internal division functions, reducing
14070code
14071size and complexity.
14072
14073Code and Data Size: Current and previous core subsystem library sizes are
14074shown below. These are the code and data sizes for the acpica.lib
14075produced
14076by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14077any ACPI driver or OSPM code. The debug version of the code includes the
14078debug output trace mechanism and has a much larger code and data size.
14079Note
14080that these values will vary depending on the efficiency of the compiler
14081and
14082the compiler options used during generation.
14083
14084  Previous Release:
14085    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
14086    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
14087  Current Release:
14088    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14089    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
14090
14091
140922) iASL Compiler/Disassembler:
14093
14094Implemented support for the ACPI 3.0 Timer operator.
14095
14096Fixed a problem where the Default() operator was inadvertently ignored in
14097a
14098Switch/Case block.  This was a problem in the translation of the Switch
14099statement to If...Else pairs.
14100
14101Added support to allow a standalone Return operator, with no parentheses
14102(or
14103operands).
14104
14105Fixed a problem with code generation for the ElseIf operator where the
14106translated Else...If parse tree was improperly constructed leading to the
14107loss of some code.
14108
14109----------------------------------------
1411022 September 2004.  Summary of changes for version 20040922:
14111
141121) ACPI CA Core Subsystem:
14113
14114Fixed a problem with the implementation of the LNot() operator where
14115"Ones"
14116was not returned for the TRUE case. Changed the code to return Ones
14117instead
14118of (!Arg) which was usually 1. This change affects iASL constant folding
14119for
14120this operator also.
14121
14122Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
14123not
14124initialized properly -- Now zero the entire buffer in this case where the
14125buffer already exists.
14126
14127Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
14128Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
14129related code considerably. This will require changes/updates to all OS
14130interface layers (OSLs.)
14131
14132Implemented a new external interface, AcpiInstallExceptionHandler, to
14133allow
14134a system exception handler to be installed. This handler is invoked upon
14135any
14136run-time exception that occurs during control method execution.
14137
14138Added support for the DSDT in AcpiTbFindTable. This allows the
14139DataTableRegion() operator to access the local copy of the DSDT.
14140
14141Code and Data Size: Current and previous core subsystem library sizes are
14142shown below. These are the code and data sizes for the acpica.lib
14143produced
14144by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14145any ACPI driver or OSPM code. The debug version of the code includes the
14146debug output trace mechanism and has a much larger code and data size.
14147Note
14148that these values will vary depending on the efficiency of the compiler
14149and
14150the compiler options used during generation.
14151
14152  Previous Release:
14153    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
14154    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
14155  Current Release:
14156    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
14157    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
14158
14159
141602) iASL Compiler/Disassembler:
14161
14162Fixed a problem with constant folding and the LNot operator. LNot was
14163returning 1 in the TRUE case, not Ones as per the ACPI specification.
14164This
14165could result in the generation of an incorrect folded/reduced constant.
14166
14167End-Of-File is now allowed within a "//"-style comment.  A parse error no
14168longer occurs if such a comment is at the very end of the input ASL
14169source
14170file.
14171
14172Implemented the "-r" option to override the Revision in the table header.
14173The initial use of this option will be to simplify the evaluation of the
14174AML
14175interpreter by allowing a single ASL source module to be compiled for
14176either
1417732-bit or 64-bit integers.
14178
14179
14180----------------------------------------
1418127 August 2004.  Summary of changes for version 20040827:
14182
141831) ACPI CA Core Subsystem:
14184
14185- Implemented support for implicit object conversion in the non-numeric
14186logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
14187and
14188LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
14189the second operand is implicitly converted on the fly to match the type
14190of
14191the first operand.  For example:
14192
14193    LEqual (Source1, Source2)
14194
14195Source1 and Source2 must each evaluate to an integer, a string, or a
14196buffer.
14197The data type of Source1 dictates the required type of Source2. Source2
14198is
14199implicitly converted if necessary to match the type of Source1.
14200
14201- Updated and corrected the behavior of the string conversion support.
14202The
14203rules concerning conversion of buffers to strings (according to the ACPI
14204specification) are as follows:
14205
14206ToDecimalString - explicit byte-wise conversion of buffer to string of
14207decimal values (0-255) separated by commas. ToHexString - explicit byte-
14208wise
14209conversion of buffer to string of hex values (0-FF) separated by commas.
14210ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
14211byte
14212copy with no transform except NULL terminated. Any other implicit buffer-
14213to-
14214string conversion - byte-wise conversion of buffer to string of hex
14215values
14216(0-FF) separated by spaces.
14217
14218- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
14219
14220- Fixed a problem in AcpiNsGetPathnameLength where the returned length
14221was
14222one byte too short in the case of a node in the root scope.  This could
14223cause a fault during debug output.
14224
14225- Code and Data Size: Current and previous core subsystem library sizes
14226are
14227shown below.  These are the code and data sizes for the acpica.lib
14228produced
14229by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14230any ACPI driver or OSPM code.  The debug version of the code includes the
14231debug output trace mechanism and has a much larger code and data size.
14232Note
14233that these values will vary depending on the efficiency of the compiler
14234and
14235the compiler options used during generation.
14236
14237  Previous Release:
14238    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
14239    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
14240  Current Release:
14241    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
14242    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
14243
14244
142452) iASL Compiler/Disassembler:
14246
14247- Fixed a Linux generation error.
14248
14249
14250----------------------------------------
1425116 August 2004.  Summary of changes for version 20040816:
14252
142531) ACPI CA Core Subsystem:
14254
14255Designed and implemented support within the AML interpreter for the so-
14256called "implicit return".  This support returns the result of the last
14257ASL
14258operation within a control method, in the absence of an explicit Return()
14259operator.  A few machines depend on this behavior, even though it is not
14260explicitly supported by the ASL language.  It is optional support that
14261can
14262be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
14263
14264Removed support for the PCI_Config address space from the internal low
14265level
14266hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
14267support was not used internally, and would not work correctly anyway
14268because
14269the PCI bus number and segment number were not supported.  There are
14270separate interfaces for PCI configuration space access because of the
14271unique
14272interface.
14273
14274Code and Data Size: Current and previous core subsystem library sizes are
14275shown below.  These are the code and data sizes for the acpica.lib
14276produced
14277by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14278any ACPI driver or OSPM code.  The debug version of the code includes the
14279debug output trace mechanism and has a much larger code and data size.
14280Note
14281that these values will vary depending on the efficiency of the compiler
14282and
14283the compiler options used during generation.
14284
14285  Previous Release:
14286    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14287    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
14288  Current Release:
14289    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
14290    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
14291
14292
142932) iASL Compiler/Disassembler:
14294
14295Fixed a problem where constants in ASL expressions at the root level (not
14296within a control method) could be inadvertently truncated during code
14297generation.  This problem was introduced in the 20040715 release.
14298
14299
14300----------------------------------------
1430115 July 2004.  Summary of changes for version 20040715:
14302
143031) ACPI CA Core Subsystem:
14304
14305Restructured the internal HW GPE interfaces to pass/track the current
14306state
14307of interrupts (enabled/disabled) in order to avoid possible deadlock and
14308increase flexibility of the interfaces.
14309
14310Implemented a "lexicographical compare" for String and Buffer objects
14311within
14312the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
14313-
14314as per further clarification to the ACPI specification.  Behavior is
14315similar
14316to C library "strcmp".
14317
14318Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
14319external function.  In the 32-bit non-debug case, the stack use has been
14320reduced from 168 bytes to 32 bytes.
14321
14322Deployed a new run-time configuration flag,
14323AcpiGbl_EnableInterpreterSlack,
14324whose purpose is to allow the AML interpreter to forgive certain bad AML
14325constructs.  Default setting is FALSE.
14326
14327Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
14328IO
14329support code.  If enabled, it allows field access to go beyond the end of
14330a
14331region definition if the field is within the region length rounded up to
14332the
14333next access width boundary (a common coding error.)
14334
14335Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
14336ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
14337these
14338symbols are lowercase by the latest version of the AcpiSrc tool.
14339
14340The prototypes for the PCI interfaces in acpiosxf.h have been updated to
14341rename "Register" to simply "Reg" to prevent certain compilers from
14342complaining.
14343
14344Code and Data Size: Current and previous core subsystem library sizes are
14345shown below.  These are the code and data sizes for the acpica.lib
14346produced
14347by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14348any ACPI driver or OSPM code.  The debug version of the code includes the
14349debug output trace mechanism and has a much larger code and data size.
14350Note
14351that these values will vary depending on the efficiency of the compiler
14352and
14353the compiler options used during generation.
14354
14355  Previous Release:
14356    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14357    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
14358  Current Release:
14359    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14360    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
14361
14362
143632) iASL Compiler/Disassembler:
14364
14365Implemented full support for Package objects within the Case() operator.
14366Note: The Break() operator is currently not supported within Case blocks
14367(TermLists) as there is some question about backward compatibility with
14368ACPI
143691.0 interpreters.
14370
14371
14372Fixed a problem where complex terms were not supported properly within
14373the
14374Switch() operator.
14375
14376Eliminated extraneous warning for compiler-emitted reserved names of the
14377form "_T_x".  (Used in Switch/Case operators.)
14378
14379Eliminated optimization messages for "_T_x" objects and small constants
14380within the DefinitionBlock operator.
14381
14382
14383----------------------------------------
1438415 June 2004.  Summary of changes for version 20040615:
14385
143861) ACPI CA Core Subsystem:
14387
14388Implemented support for Buffer and String objects (as per ACPI 2.0) for
14389the
14390following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
14391LLessEqual.
14392
14393All directory names in the entire source package are lower case, as they
14394were in earlier releases.
14395
14396Implemented "Disassemble" command in the AML debugger that will
14397disassemble
14398a single control method.
14399
14400Code and Data Size: Current and previous core subsystem library sizes are
14401shown below.  These are the code and data sizes for the acpica.lib
14402produced
14403by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14404any ACPI driver or OSPM code.  The debug version of the code includes the
14405debug output trace mechanism and has a much larger code and data size.
14406Note
14407that these values will vary depending on the efficiency of the compiler
14408and
14409the compiler options used during generation.
14410
14411  Previous Release:
14412    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
14413    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
14414
14415  Current Release:
14416    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14417    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
14418
14419
144202) iASL Compiler/Disassembler:
14421
14422Implemented support for Buffer and String objects (as per ACPI 2.0) for
14423the
14424following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
14425LLessEqual.
14426
14427All directory names in the entire source package are lower case, as they
14428were in earlier releases.
14429
14430Fixed a fault when using the -g or -d<nofilename> options if the FADT was
14431not found.
14432
14433Fixed an issue with the Windows version of the compiler where later
14434versions
14435of Windows place the FADT in the registry under the name "FADT" and not
14436"FACP" as earlier versions did.  This applies when using the -g or -
14437d<nofilename> options.  The compiler now looks for both strings as
14438necessary.
14439
14440Fixed a problem with compiler namepath optimization where a namepath
14441within
14442the Scope() operator could not be optimized if the namepath was a subpath
14443of
14444the current scope path.
14445
14446----------------------------------------
1444727 May 2004.  Summary of changes for version 20040527:
14448
144491) ACPI CA Core Subsystem:
14450
14451Completed a new design and implementation for EBDA (Extended BIOS Data
14452Area)
14453support in the RSDP scan code.  The original code improperly scanned for
14454the
14455EBDA by simply scanning from memory location 0 to 0x400.  The correct
14456method
14457is to first obtain the EBDA pointer from within the BIOS data area, then
14458scan 1K of memory starting at the EBDA pointer.  There appear to be few
14459if
14460any machines that place the RSDP in the EBDA, however.
14461
14462Integrated a fix for a possible fault during evaluation of BufferField
14463arguments.  Obsolete code that was causing the problem was removed.
14464
14465Found and fixed a problem in the Field Support Code where data could be
14466corrupted on a bit field read that starts on an aligned boundary but does
14467not end on an aligned boundary.  Merged the read/write "datum length"
14468calculation code into a common procedure.
14469
14470Rolled in a couple of changes to the FreeBSD-specific header.
14471
14472
14473Code and Data Size: Current and previous core subsystem library sizes are
14474shown below.  These are the code and data sizes for the acpica.lib
14475produced
14476by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14477any ACPI driver or OSPM code.  The debug version of the code includes the
14478debug output trace mechanism and has a much larger code and data size.
14479Note
14480that these values will vary depending on the efficiency of the compiler
14481and
14482the compiler options used during generation.
14483
14484  Previous Release:
14485    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14486    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
14487  Current Release:
14488    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
14489    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
14490
14491
144922) iASL Compiler/Disassembler:
14493
14494Fixed a generation warning produced by some overly-verbose compilers for
14495a
1449664-bit constant.
14497
14498----------------------------------------
1449914 May 2004.  Summary of changes for version 20040514:
14500
145011) ACPI CA Core Subsystem:
14502
14503Fixed a problem where hardware GPE enable bits sometimes not set properly
14504during and after GPE method execution.  Result of 04/27 changes.
14505
14506Removed extra "clear all GPEs" when sleeping/waking.
14507
14508Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
14509AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
14510to
14511the new AcpiEv* calls as appropriate.
14512
14513ACPI_OS_NAME was removed from the OS-specific headers.  The default name
14514is
14515now "Microsoft Windows NT" for maximum compatibility.  However this can
14516be
14517changed by modifying the acconfig.h file.
14518
14519Allow a single invocation of AcpiInstallNotifyHandler for a handler that
14520traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
14521
14522Run _INI methods on ThermalZone objects.  This is against the ACPI
14523specification, but there is apparently ASL code in the field that has
14524these
14525_INI methods, and apparently "other" AML interpreters execute them.
14526
14527Performed a full 16/32/64 bit lint that resulted in some small changes.
14528
14529Added a sleep simulation command to the AML debugger to test sleep code.
14530
14531Code and Data Size: Current and previous core subsystem library sizes are
14532shown below.  These are the code and data sizes for the acpica.lib
14533produced
14534by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14535any ACPI driver or OSPM code.  The debug version of the code includes the
14536debug output trace mechanism and has a much larger code and data size.
14537Note
14538that these values will vary depending on the efficiency of the compiler
14539and
14540the compiler options used during generation.
14541
14542  Previous Release:
14543    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14544    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
14545  Current Release:
14546    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14547    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
14548
14549----------------------------------------
1455027 April 2004.  Summary of changes for version 20040427:
14551
145521) ACPI CA Core Subsystem:
14553
14554Completed a major overhaul of the GPE handling within ACPI CA.  There are
14555now three types of GPEs:  wake-only, runtime-only, and combination
14556wake/run.
14557The only GPEs allowed to be combination wake/run are for button-style
14558devices such as a control-method power button, control-method sleep
14559button,
14560or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
14561not
14562referenced by any _PRW methods are marked for "runtime" and hardware
14563enabled.  Any GPE that is referenced by a _PRW method is marked for
14564"wake"
14565(and disabled at runtime).  However, at sleep time, only those GPEs that
14566have been specifically enabled for wake via the AcpiEnableGpe interface
14567will
14568actually be hardware enabled.
14569
14570A new external interface has been added, AcpiSetGpeType(), that is meant
14571to
14572be used by device drivers to force a GPE to a particular type.  It will
14573be
14574especially useful for the drivers for the button devices mentioned above.
14575
14576Completed restructuring of the ACPI CA initialization sequence so that
14577default operation region handlers are installed before GPEs are
14578initialized
14579and the _PRW methods are executed.  This will prevent errors when the
14580_PRW
14581methods attempt to access system memory or I/O space.
14582
14583GPE enable/disable no longer reads the GPE enable register.  We now keep
14584the
14585enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
14586thus no longer depend on the hardware to maintain these bits.
14587
14588Always clear the wake status and fixed/GPE status bits before sleep, even
14589for state S5.
14590
14591Improved the AML debugger output for displaying the GPE blocks and their
14592current status.
14593
14594Added new strings for the _OSI method, of the form "Windows 2001 SPx"
14595where
14596x = 0,1,2,3,4.
14597
14598Fixed a problem where the physical address was incorrectly calculated
14599when
14600the Load() operator was used to directly load from an Operation Region
14601(vs.
14602loading from a Field object.)  Also added check for minimum table length
14603for
14604this case.
14605
14606Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
14607mutex release.
14608
14609Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
14610consistency with the other fields returned.
14611
14612Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
14613structure for each GPE in the system, so the size of this structure is
14614important.
14615
14616CPU stack requirement reduction:  Cleaned up the method execution and
14617object
14618evaluation paths so that now a parameter structure is passed, instead of
14619copying the various method parameters over and over again.
14620
14621In evregion.c:  Correctly exit and reenter the interpreter region if and
14622only if dispatching an operation region request to a user-installed
14623handler.
14624Do not exit/reenter when dispatching to a default handler (e.g., default
14625system memory or I/O handlers)
14626
14627
14628Notes for updating drivers for the new GPE support.  The following
14629changes
14630must be made to ACPI-related device drivers that are attached to one or
14631more
14632GPEs: (This information will be added to the ACPI CA Programmer
14633Reference.)
14634
146351) AcpiInstallGpeHandler no longer automatically enables the GPE, you
14636must
14637explicitly call AcpiEnableGpe.
146382) There is a new interface called AcpiSetGpeType. This should be called
14639before enabling the GPE.  Also, this interface will automatically disable
14640the GPE if it is currently enabled.
146413) AcpiEnableGpe no longer supports a GPE type flag.
14642
14643Specific drivers that must be changed:
146441) EC driver:
14645    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
14646AeGpeHandler, NULL);
14647    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
14648    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
14649
146502) Button Drivers (Power, Lid, Sleep):
14651Run _PRW method under parent device
14652If _PRW exists: /* This is a control-method button */
14653    Extract GPE number and possibly GpeDevice
14654    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
14655    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
14656
14657For all other devices that have _PRWs, we automatically set the GPE type
14658to
14659ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
14660This
14661must be done on a selective basis, usually requiring some kind of user
14662app
14663to allow the user to pick the wake devices.
14664
14665
14666Code and Data Size: Current and previous core subsystem library sizes are
14667shown below.  These are the code and data sizes for the acpica.lib
14668produced
14669by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14670any ACPI driver or OSPM code.  The debug version of the code includes the
14671debug output trace mechanism and has a much larger code and data size.
14672Note
14673that these values will vary depending on the efficiency of the compiler
14674and
14675the compiler options used during generation.
14676
14677  Previous Release:
14678    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
14679    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
14680  Current Release:
14681
14682    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14683    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
14684
14685
14686
14687----------------------------------------
1468802 April 2004.  Summary of changes for version 20040402:
14689
146901) ACPI CA Core Subsystem:
14691
14692Fixed an interpreter problem where an indirect store through an ArgX
14693parameter was incorrectly applying the "implicit conversion rules" during
14694the store.  From the ACPI specification: "If the target is a method local
14695or
14696argument (LocalX or ArgX), no conversion is performed and the result is
14697stored directly to the target".  The new behavior is to disable implicit
14698conversion during ALL stores to an ArgX.
14699
14700Changed the behavior of the _PRW method scan to ignore any and all errors
14701returned by a given _PRW.  This prevents the scan from aborting from the
14702failure of any single _PRW.
14703
14704Moved the runtime configuration parameters from the global init procedure
14705to
14706static variables in acglobal.h.  This will allow the host to override the
14707default values easily.
14708
14709Code and Data Size: Current and previous core subsystem library sizes are
14710shown below.  These are the code and data sizes for the acpica.lib
14711produced
14712by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14713any ACPI driver or OSPM code.  The debug version of the code includes the
14714debug output trace mechanism and has a much larger code and data size.
14715Note
14716that these values will vary depending on the efficiency of the compiler
14717and
14718the compiler options used during generation.
14719
14720  Previous Release:
14721    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
14722    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
14723  Current Release:
14724    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
14725    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
14726
14727
147282) iASL Compiler/Disassembler:
14729
14730iASL now fully disassembles SSDTs.  However, External() statements are
14731not
14732generated automatically for unresolved symbols at this time.  This is a
14733planned feature for future implementation.
14734
14735Fixed a scoping problem in the disassembler that occurs when the type of
14736the
14737target of a Scope() operator is overridden.  This problem caused an
14738incorrectly nested internal namespace to be constructed.
14739
14740Any warnings or errors that are emitted during disassembly are now
14741commented
14742out automatically so that the resulting file can be recompiled without
14743any
14744hand editing.
14745
14746----------------------------------------
1474726 March 2004.  Summary of changes for version 20040326:
14748
147491) ACPI CA Core Subsystem:
14750
14751Implemented support for "wake" GPEs via interaction between GPEs and the
14752_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
14753identified as a WAKE GPE and by default will no longer be enabled at
14754runtime.  Previously, we were blindly enabling all GPEs with a
14755corresponding
14756_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
14757We
14758believe this has been the cause of thousands of "spurious" GPEs on some
14759systems.
14760
14761This new GPE behavior is can be reverted to the original behavior (enable
14762ALL GPEs at runtime) via a runtime flag.
14763
14764Fixed a problem where aliased control methods could not access objects
14765properly.  The proper scope within the namespace was not initialized
14766(transferred to the target of the aliased method) before executing the
14767target method.
14768
14769Fixed a potential race condition on internal object deletion on the
14770return
14771object in AcpiEvaluateObject.
14772
14773Integrated a fix for resource descriptors where both _MEM and _MTP were
14774being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
14775wide, 0x0F instead of 0x03.)
14776
14777Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
14778preventing
14779a
14780fault in some cases.
14781
14782Updated Notify() values for debug statements in evmisc.c
14783
14784Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
14785
14786Code and Data Size: Current and previous core subsystem library sizes are
14787shown below.  These are the code and data sizes for the acpica.lib
14788produced
14789by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14790any ACPI driver or OSPM code.  The debug version of the code includes the
14791debug output trace mechanism and has a much larger code and data size.
14792Note
14793that these values will vary depending on the efficiency of the compiler
14794and
14795the compiler options used during generation.
14796
14797  Previous Release:
14798
14799    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
14800    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
14801  Current Release:
14802    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
14803    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
14804
14805----------------------------------------
1480611 March 2004.  Summary of changes for version 20040311:
14807
148081) ACPI CA Core Subsystem:
14809
14810Fixed a problem where errors occurring during the parse phase of control
14811method execution did not abort cleanly.  For example, objects created and
14812installed in the namespace were not deleted.  This caused all subsequent
14813invocations of the method to return the AE_ALREADY_EXISTS exception.
14814
14815Implemented a mechanism to force a control method to "Serialized"
14816execution
14817if the method attempts to create namespace objects. (The root of the
14818AE_ALREADY_EXISTS problem.)
14819
14820Implemented support for the predefined _OSI "internal" control method.
14821Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
14822and
14823"Windows 2001.1", and can be easily upgraded for new strings as
14824necessary.
14825This feature will allow "other" operating systems to execute the fully
14826tested, "Windows" code path through the ASL code
14827
14828Global Lock Support:  Now allows multiple acquires and releases with any
14829internal thread.  Removed concept of "owning thread" for this special
14830mutex.
14831
14832Fixed two functions that were inappropriately declaring large objects on
14833the
14834CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
14835during
14836method execution considerably.
14837
14838Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
14839S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
14840
14841Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
14842defined on the machine.
14843
14844Implemented two runtime options:  One to force all control method
14845execution
14846to "Serialized" to mimic Windows behavior, another to disable _OSI
14847support
14848if it causes problems on a given machine.
14849
14850Code and Data Size: Current and previous core subsystem library sizes are
14851shown below.  These are the code and data sizes for the acpica.lib
14852produced
14853by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14854any ACPI driver or OSPM code.  The debug version of the code includes the
14855debug output trace mechanism and has a much larger code and data size.
14856Note
14857that these values will vary depending on the efficiency of the compiler
14858and
14859the compiler options used during generation.
14860
14861  Previous Release:
14862    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
14863    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
14864  Current Release:
14865    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
14866    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
14867
148682) iASL Compiler/Disassembler:
14869
14870Fixed an array size problem for FreeBSD that would cause the compiler to
14871fault.
14872
14873----------------------------------------
1487420 February 2004.  Summary of changes for version 20040220:
14875
14876
148771) ACPI CA Core Subsystem:
14878
14879Implemented execution of _SxD methods for Device objects in the
14880GetObjectInfo interface.
14881
14882Fixed calls to _SST method to pass the correct arguments.
14883
14884Added a call to _SST on wake to restore to "working" state.
14885
14886Check for End-Of-Buffer failure case in the WalkResources interface.
14887
14888Integrated fix for 64-bit alignment issue in acglobal.h by moving two
14889structures to the beginning of the file.
14890
14891After wake, clear GPE status register(s) before enabling GPEs.
14892
14893After wake, clear/enable power button.  (Perhaps we should clear/enable
14894all
14895fixed events upon wake.)
14896
14897Fixed a couple of possible memory leaks in the Namespace manager.
14898
14899Integrated latest acnetbsd.h file.
14900
14901----------------------------------------
1490211 February 2004.  Summary of changes for version 20040211:
14903
14904
149051) ACPI CA Core Subsystem:
14906
14907Completed investigation and implementation of the call-by-reference
14908mechanism for control method arguments.
14909
14910Fixed a problem where a store of an object into an indexed package could
14911fail if the store occurs within a different method than the method that
14912created the package.
14913
14914Fixed a problem where the ToDecimal operator could return incorrect
14915results.
14916
14917Fixed a problem where the CopyObject operator could fail on some of the
14918more
14919obscure objects (e.g., Reference objects.)
14920
14921Improved the output of the Debug object to display buffer, package, and
14922index objects.
14923
14924Fixed a problem where constructs of the form "RefOf (ArgX)" did not
14925return
14926the expected result.
14927
14928Added permanent ACPI_REPORT_ERROR macros for all instances of the
14929ACPI_AML_INTERNAL exception.
14930
14931Integrated latest version of acfreebsd.h
14932
14933----------------------------------------
1493416 January 2004.  Summary of changes for version 20040116:
14935
14936The purpose of this release is primarily to update the copyright years in
14937each module, thus causing a huge number of diffs.  There are a few small
14938functional changes, however.
14939
149401) ACPI CA Core Subsystem:
14941
14942Improved error messages when there is a problem finding one or more of
14943the
14944required base ACPI tables
14945
14946Reintroduced the definition of APIC_HEADER in actbl.h
14947
14948Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
14949
14950Removed extraneous reference to NewObj in dsmthdat.c
14951
149522) iASL compiler
14953
14954Fixed a problem introduced in December that disabled the correct
14955disassembly
14956of Resource Templates
14957
14958
14959----------------------------------------
1496003 December 2003.  Summary of changes for version 20031203:
14961
149621) ACPI CA Core Subsystem:
14963
14964Changed the initialization of Operation Regions during subsystem
14965init to perform two entire walks of the ACPI namespace; The first
14966to initialize the regions themselves, the second to execute the
14967_REG methods.  This fixed some interdependencies across _REG
14968methods found on some machines.
14969
14970Fixed a problem where a Store(Local0, Local1) could simply update
14971the object reference count, and not create a new copy of the
14972object if the Local1 is uninitialized.
14973
14974Implemented support for the _SST reserved method during sleep
14975transitions.
14976
14977Implemented support to clear the SLP_TYP and SLP_EN bits when
14978waking up, this is apparently required by some machines.
14979
14980When sleeping, clear the wake status only if SleepState is not S5.
14981
14982Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
14983pointer arithmetic advanced a string pointer too far.
14984
14985Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
14986could be returned if the requested table has not been loaded.
14987
14988Within the support for IRQ resources, restructured the handling of
14989the active and edge/level bits.
14990
14991Fixed a few problems in AcpiPsxExecute() where memory could be
14992leaked under certain error conditions.
14993
14994Improved error messages for the cases where the ACPI mode could
14995not be entered.
14996
14997Code and Data Size: Current and previous core subsystem library
14998sizes are shown below.  These are the code and data sizes for the
14999acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15000these values do not include any ACPI driver or OSPM code.  The
15001debug version of the code includes the debug output trace
15002mechanism and has a much larger code and data size.  Note that
15003these values will vary depending on the efficiency of the compiler
15004and the compiler options used during generation.
15005
15006  Previous Release (20031029):
15007    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
15008    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
15009  Current Release:
15010    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
15011    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
15012
150132) iASL Compiler/Disassembler:
15014
15015Implemented a fix for the iASL disassembler where a bad index was
15016generated.  This was most noticeable on 64-bit platforms
15017
15018
15019----------------------------------------
1502029 October 2003.  Summary of changes for version 20031029:
15021
150221) ACPI CA Core Subsystem:
15023
15024
15025Fixed a problem where a level-triggered GPE with an associated
15026_Lxx control method was incorrectly cleared twice.
15027
15028Fixed a problem with the Field support code where an access can
15029occur beyond the end-of-region if the field is non-aligned but
15030extends to the very end of the parent region (resulted in an
15031AE_AML_REGION_LIMIT exception.)
15032
15033Fixed a problem with ACPI Fixed Events where an RT Clock handler
15034would not get invoked on an RTC event.  The RTC event bitmasks for
15035the PM1 registers were not being initialized properly.
15036
15037Implemented support for executing _STA and _INI methods for
15038Processor objects.  Although this is currently not part of the
15039ACPI specification, there is existing ASL code that depends on the
15040init-time execution of these methods.
15041
15042Implemented and deployed a GetDescriptorName function to decode
15043the various types of internal descriptors.  Guards against null
15044descriptors during debug output also.
15045
15046Implemented and deployed a GetNodeName function to extract the 4-
15047character namespace node name.  This function simplifies the debug
15048and error output, as well as guarding against null pointers during
15049output.
15050
15051Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
15052simplify the debug and error output of 64-bit integers.  This
15053macro replaces the HIDWORD and LODWORD macros for dumping these
15054integers.
15055
15056Updated the implementation of the Stall() operator to only call
15057AcpiOsStall(), and also return an error if the operand is larger
15058than 255.  This preserves the required behavior of not
15059relinquishing the processor, as would happen if AcpiOsSleep() was
15060called for "long stalls".
15061
15062Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
15063initialized are now treated as NOOPs.
15064
15065Cleaned up a handful of warnings during 64-bit generation.
15066
15067Fixed a reported error where and incorrect GPE number was passed
15068to the GPE dispatch handler.  This value is only used for error
15069output, however.  Used this opportunity to clean up and streamline
15070the GPE dispatch code.
15071
15072Code and Data Size: Current and previous core subsystem library
15073sizes are shown below.  These are the code and data sizes for the
15074acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15075these values do not include any ACPI driver or OSPM code.  The
15076
15077debug version of the code includes the debug output trace
15078mechanism and has a much larger code and data size.  Note that
15079these values will vary depending on the efficiency of the compiler
15080and the compiler options used during generation.
15081
15082  Previous Release (20031002):
15083    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
15084    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
15085  Current Release:
15086    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
15087    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
15088
15089
150902) iASL Compiler/Disassembler:
15091
15092Updated the iASL compiler to return an error if the operand to the
15093Stall() operator is larger than 255.
15094
15095
15096----------------------------------------
1509702 October 2003.  Summary of changes for version 20031002:
15098
15099
151001) ACPI CA Core Subsystem:
15101
15102Fixed a problem with Index Fields where the index was not
15103incremented for fields that require multiple writes to the
15104index/data registers (Fields that are wider than the data
15105register.)
15106
15107Fixed a problem with all Field objects where a write could go
15108beyond the end-of-field if the field was larger than the access
15109granularity and therefore required multiple writes to complete the
15110request.  An extra write beyond the end of the field could happen
15111inadvertently.
15112
15113Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
15114would incorrectly be returned if the width of the Data Register
15115was larger than the specified field access width.
15116
15117Completed fixes for LoadTable() and Unload() and verified their
15118operation.  Implemented full support for the "DdbHandle" object
15119throughout the ACPI CA subsystem.
15120
15121Implemented full support for the MADT and ECDT tables in the ACPI
15122CA header files.  Even though these tables are not directly
15123consumed by ACPI CA, the header definitions are useful for ACPI
15124device drivers.
15125
15126Integrated resource descriptor fixes posted to the Linux ACPI
15127list.  This included checks for minimum descriptor length, and
15128support for trailing NULL strings within descriptors that have
15129optional string elements.
15130
15131Code and Data Size: Current and previous core subsystem library
15132sizes are shown below.  These are the code and data sizes for the
15133acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15134these values do not include any ACPI driver or OSPM code.  The
15135debug version of the code includes the debug output trace
15136mechanism and has a much larger code and data size.  Note that
15137these values will vary depending on the efficiency of the compiler
15138and the compiler options used during generation.
15139
15140  Previous Release (20030918):
15141    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
15142    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
15143  Current Release:
15144    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
15145    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
15146
15147
151482) iASL Compiler:
15149
15150Implemented detection of non-ASCII characters within the input
15151source ASL file.  This catches attempts to compile binary (AML)
15152files early in the compile, with an informative error message.
15153
15154Fixed a problem where the disassembler would fault if the output
15155filename could not be generated or if the output file could not be
15156opened.
15157
15158----------------------------------------
1515918 September 2003.  Summary of changes for version 20030918:
15160
15161
151621) ACPI CA Core Subsystem:
15163
15164Found and fixed a longstanding problem with the late execution of
15165the various deferred AML opcodes (such as Operation Regions,
15166Buffer Fields, Buffers, and Packages).  If the name string
15167specified for the name of the new object placed the object in a
15168scope other than the current scope, the initialization/execution
15169of the opcode failed.  The solution to this problem was to
15170implement a mechanism where the late execution of such opcodes
15171does not attempt to lookup/create the name a second time in an
15172incorrect scope.  This fixes the "region size computed
15173incorrectly" problem.
15174
15175Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
15176Global Lock AE_BAD_PARAMETER error.
15177
15178Fixed several 64-bit issues with prototypes, casting and data
15179types.
15180
15181Removed duplicate prototype from acdisasm.h
15182
15183Fixed an issue involving EC Operation Region Detach (Shaohua Li)
15184
15185Code and Data Size: Current and previous core subsystem library
15186sizes are shown below.  These are the code and data sizes for the
15187acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15188these values do not include any ACPI driver or OSPM code.  The
15189debug version of the code includes the debug output trace
15190mechanism and has a much larger code and data size.  Note that
15191these values will vary depending on the efficiency of the compiler
15192and the compiler options used during generation.
15193
15194  Previous Release:
15195
15196    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
15197    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
15198  Current Release:
15199    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
15200    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
15201
15202
152032) Linux:
15204
15205Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
15206correct sleep time in seconds.
15207
15208----------------------------------------
1520914 July 2003.  Summary of changes for version 20030619:
15210
152111) ACPI CA Core Subsystem:
15212
15213Parse SSDTs in order discovered, as opposed to reverse order
15214(Hrvoje Habjanic)
15215
15216Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
15217Klausner,
15218   Nate Lawson)
15219
15220
152212) Linux:
15222
15223Dynamically allocate SDT list (suggested by Andi Kleen)
15224
15225proc function return value cleanups (Andi Kleen)
15226
15227Correctly handle NMI watchdog during long stalls (Andrew Morton)
15228
15229Make it so acpismp=force works (reported by Andrew Morton)
15230
15231
15232----------------------------------------
1523319 June 2003.  Summary of changes for version 20030619:
15234
152351) ACPI CA Core Subsystem:
15236
15237Fix To/FromBCD, eliminating the need for an arch-specific #define.
15238
15239Do not acquire a semaphore in the S5 shutdown path.
15240
15241Fix ex_digits_needed for 0. (Takayoshi Kochi)
15242
15243Fix sleep/stall code reversal. (Andi Kleen)
15244
15245Revert a change having to do with control method calling
15246semantics.
15247
152482) Linux:
15249
15250acpiphp update (Takayoshi Kochi)
15251
15252Export acpi_disabled for sonypi (Stelian Pop)
15253
15254Mention acpismp=force in config help
15255
15256Re-add acpitable.c and acpismp=force. This improves backwards
15257
15258compatibility and also cleans up the code to a significant degree.
15259
15260Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
15261
15262----------------------------------------
1526322 May 2003.  Summary of changes for version 20030522:
15264
152651) ACPI CA Core Subsystem:
15266
15267Found and fixed a reported problem where an AE_NOT_FOUND error
15268occurred occasionally during _BST evaluation.  This turned out to
15269be an Owner ID allocation issue where a called method did not get
15270a new ID assigned to it.  Eventually, (after 64k calls), the Owner
15271ID UINT16 would wraparound so that the ID would be the same as the
15272caller's and the called method would delete the caller's
15273namespace.
15274
15275Implemented extended error reporting for control methods that are
15276aborted due to a run-time exception.  Output includes the exact
15277AML instruction that caused the method abort, a dump of the method
15278locals and arguments at the time of the abort, and a trace of all
15279nested control method calls.
15280
15281Modified the interpreter to allow the creation of buffers of zero
15282length from the AML code. Implemented new code to ensure that no
15283attempt is made to actually allocate a memory buffer (of length
15284zero) - instead, a simple buffer object with a NULL buffer pointer
15285and length zero is created.  A warning is no longer issued when
15286the AML attempts to create a zero-length buffer.
15287
15288Implemented a workaround for the "leading asterisk issue" in
15289_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
15290asterisk is automatically removed if present in any HID, UID, or
15291CID strings.  The iASL compiler will still flag this asterisk as
15292an error, however.
15293
15294Implemented full support for _CID methods that return a package of
15295multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
15296now additionally returns a device _CID list if present.  This
15297required a change to the external interface in order to pass an
15298ACPI_BUFFER object as a parameter since the _CID list is of
15299variable length.
15300
15301Fixed a problem with the new AE_SAME_HANDLER exception where
15302handler initialization code did not know about this exception.
15303
15304Code and Data Size: Current and previous core subsystem library
15305sizes are shown below.  These are the code and data sizes for the
15306acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15307these values do not include any ACPI driver or OSPM code.  The
15308debug version of the code includes the debug output trace
15309mechanism and has a much larger code and data size.  Note that
15310these values will vary depending on the efficiency of the compiler
15311and the compiler options used during generation.
15312
15313  Previous Release (20030509):
15314    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
15315    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
15316  Current Release:
15317    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
15318    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
15319
15320
153212) Linux:
15322
15323Fixed a bug in which we would reinitialize the ACPI interrupt
15324after it was already working, thus disabling all ACPI and the IRQs
15325for any other device sharing the interrupt. (Thanks to Stian
15326Jordet)
15327
15328Toshiba driver update (John Belmonte)
15329
15330Return only 0 or 1 for our interrupt handler status (Andrew
15331Morton)
15332
15333
153343) iASL Compiler:
15335
15336Fixed a reported problem where multiple (nested) ElseIf()
15337statements were not handled correctly by the compiler, resulting
15338in incorrect warnings and incorrect AML code.  This was a problem
15339in both the ASL parser and the code generator.
15340
15341
153424) Documentation:
15343
15344Added changes to existing interfaces, new exception codes, and new
15345text concerning reference count object management versus garbage
15346collection.
15347
15348----------------------------------------
1534909 May 2003.  Summary of changes for version 20030509.
15350
15351
153521) ACPI CA Core Subsystem:
15353
15354Changed the subsystem initialization sequence to hold off
15355installation of address space handlers until the hardware has been
15356initialized and the system has entered ACPI mode.  This is because
15357the installation of space handlers can cause _REG methods to be
15358run.  Previously, the _REG methods could potentially be run before
15359ACPI mode was enabled.
15360
15361Fixed some memory leak issues related to address space handler and
15362notify handler installation.  There were some problems with the
15363reference count mechanism caused by the fact that the handler
15364objects are shared across several namespace objects.
15365
15366Fixed a reported problem where reference counts within the
15367namespace were not properly updated when named objects created by
15368method execution were deleted.
15369
15370Fixed a reported problem where multiple SSDTs caused a deletion
15371issue during subsystem termination.  Restructured the table data
15372structures to simplify the linked lists and the related code.
15373
15374Fixed a problem where the table ID associated with secondary
15375tables (SSDTs) was not being propagated into the namespace objects
15376created by those tables.  This would only present a problem for
15377tables that are unloaded at run-time, however.
15378
15379Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
15380type as the length parameter (instead of UINT32).
15381
15382Solved a long-standing problem where an ALREADY_EXISTS error
15383appears on various systems.  This problem could happen when there
15384are multiple PCI_Config operation regions under a single PCI root
15385bus.  This doesn't happen very frequently, but there are some
15386systems that do this in the ASL.
15387
15388Fixed a reported problem where the internal DeleteNode function
15389was incorrectly handling the case where a namespace node was the
15390first in the parent's child list, and had additional peers (not
15391the only child, but first in the list of children.)
15392
15393Code and Data Size: Current core subsystem library sizes are shown
15394below.  These are the code and data sizes for the acpica.lib
15395produced by the Microsoft Visual C++ 6.0 compiler, and these
15396values do not include any ACPI driver or OSPM code.  The debug
15397version of the code includes the debug output trace mechanism and
15398has a much larger code and data size.  Note that these values will
15399vary depending on the efficiency of the compiler and the compiler
15400options used during generation.
15401
15402  Previous Release
15403    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
15404    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
15405  Current Release:
15406    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
15407    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
15408
15409
154102) Linux:
15411
15412Allow ":" in OS override string (Ducrot Bruno)
15413
15414Kobject fix (Greg KH)
15415
15416
154173 iASL Compiler/Disassembler:
15418
15419Fixed a problem in the generation of the C source code files (AML
15420is emitted in C source statements for BIOS inclusion) where the
15421Ascii dump that appears within a C comment at the end of each line
15422could cause a compile time error if the AML sequence happens to
15423have an open comment or close comment sequence embedded.
15424
15425
15426----------------------------------------
1542724 April 2003.  Summary of changes for version 20030424.
15428
15429
154301) ACPI CA Core Subsystem:
15431
15432Support for big-endian systems has been implemented.  Most of the
15433support has been invisibly added behind big-endian versions of the
15434ACPI_MOVE_* macros.
15435
15436Fixed a problem in AcpiHwDisableGpeBlock() and
15437AcpiHwClearGpeBlock() where an incorrect offset was passed to the
15438low level hardware write routine.  The offset parameter was
15439actually eliminated from the low level read/write routines because
15440they had become obsolete.
15441
15442Fixed a problem where a handler object was deleted twice during
15443the removal of a fixed event handler.
15444
15445
154462) Linux:
15447
15448A fix for SMP systems with link devices was contributed by
15449
15450Compaq's Dan Zink.
15451
15452(2.5) Return whether we handled the interrupt in our IRQ handler.
15453(Linux ISRs no longer return void, so we can propagate the handler
15454return value from the ACPI CA core back to the OS.)
15455
15456
15457
154583) Documentation:
15459
15460The ACPI CA Programmer Reference has been updated to reflect new
15461interfaces and changes to existing interfaces.
15462
15463----------------------------------------
1546428 March 2003.  Summary of changes for version 20030328.
15465
154661) ACPI CA Core Subsystem:
15467
15468The GPE Block Device support has been completed.  New interfaces
15469are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
15470interfaces (enable, disable, clear, getstatus) have been split
15471into separate interfaces for Fixed Events and General Purpose
15472Events (GPEs) in order to support GPE Block Devices properly.
15473
15474Fixed a problem where the error message "Failed to acquire
15475semaphore" would appear during operations on the embedded
15476controller (EC).
15477
15478Code and Data Size: Current core subsystem library sizes are shown
15479below.  These are the code and data sizes for the acpica.lib
15480produced by the Microsoft Visual C++ 6.0 compiler, and these
15481values do not include any ACPI driver or OSPM code.  The debug
15482version of the code includes the debug output trace mechanism and
15483has a much larger code and data size.  Note that these values will
15484vary depending on the efficiency of the compiler and the compiler
15485options used during generation.
15486
15487  Previous Release
15488    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
15489    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
15490  Current Release:
15491    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
15492    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
15493
15494
15495----------------------------------------
1549628 February 2003.  Summary of changes for version 20030228.
15497
15498
154991) ACPI CA Core Subsystem:
15500
15501The GPE handling and dispatch code has been completely overhauled
15502in preparation for support of GPE Block Devices (ID ACPI0006).
15503This affects internal data structures and code only; there should
15504be no differences visible externally.  One new file has been
15505added, evgpeblk.c
15506
15507The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
15508fields that are used to determine the GPE block lengths.  The
15509REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
15510structures are ignored.  This is per the ACPI specification but it
15511isn't very clear.  The full 256 Block 0/1 GPEs are now supported
15512(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
15513
15514In the SCI interrupt handler, removed the read of the PM1_CONTROL
15515register to look at the SCI_EN bit.  On some machines, this read
15516causes an SMI event and greatly slows down SCI events.  (This may
15517in fact be the cause of slow battery status response on some
15518systems.)
15519
15520Fixed a problem where a store of a NULL string to a package object
15521could cause the premature deletion of the object.  This was seen
15522during execution of the battery _BIF method on some systems,
15523resulting in no battery data being returned.
15524
15525Added AcpiWalkResources interface to simplify parsing of resource
15526lists.
15527
15528Code and Data Size: Current core subsystem library sizes are shown
15529below.  These are the code and data sizes for the acpica.lib
15530produced by the Microsoft Visual C++ 6.0 compiler, and these
15531values do not include any ACPI driver or OSPM code.  The debug
15532version of the code includes the debug output trace mechanism and
15533has a much larger code and data size.  Note that these values will
15534vary depending on the efficiency of the compiler and the compiler
15535options used during generation.
15536
15537  Previous Release
15538    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15539    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15540  Current Release:
15541    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
15542    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
15543
15544
155452) Linux
15546
15547S3 fixes (Ole Rohne)
15548
15549Update ACPI PHP driver with to use new acpi_walk_resource API
15550(Bjorn Helgaas)
15551
15552Add S4BIOS support (Pavel Machek)
15553
15554Map in entire table before performing checksum (John Stultz)
15555
15556Expand the mem= cmdline to allow the specification of reserved and
15557ACPI DATA blocks (Pavel Machek)
15558
15559Never use ACPI on VISWS
15560
15561Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
15562
15563Revert a change that allowed P_BLK lengths to be 4 or 5. This is
15564causing us to think that some systems support C2 when they really
15565don't.
15566
15567Do not count processor objects for non-present CPUs (Thanks to
15568Dominik Brodowski)
15569
15570
155713) iASL Compiler:
15572
15573Fixed a problem where ASL include files could not be found and
15574opened.
15575
15576Added support for the _PDC reserved name.
15577
15578
15579----------------------------------------
1558022 January 2003.  Summary of changes for version 20030122.
15581
15582
155831) ACPI CA Core Subsystem:
15584
15585Added a check for constructs of the form:  Store (Local0, Local0)
15586where Local0 is not initialized.  Apparently, some BIOS
15587programmers believe that this is a NOOP.  Since this store doesn't
15588do anything anyway, the new prototype behavior will ignore this
15589error.  This is a case where we can relax the strict checking in
15590the interpreter in the name of compatibility.
15591
15592
155932) Linux
15594
15595The AcpiSrc Source Conversion Utility has been released with the
15596Linux package for the first time.  This is the utility that is
15597used to convert the ACPI CA base source code to the Linux version.
15598
15599(Both) Handle P_BLK lengths shorter than 6 more gracefully
15600
15601(Both) Move more headers to include/acpi, and delete an unused
15602header.
15603
15604(Both) Move drivers/acpi/include directory to include/acpi
15605
15606(Both) Boot functions don't use cmdline, so don't pass it around
15607
15608(Both) Remove include of unused header (Adrian Bunk)
15609
15610(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
15611the
15612former now also includes the latter, acpiphp.h only needs the one,
15613now.
15614
15615(2.5) Make it possible to select method of bios restoring after S3
15616resume. [=> no more ugly ifdefs] (Pavel Machek)
15617
15618(2.5) Make proc write interfaces work (Pavel Machek)
15619
15620(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
15621
15622(2.5) Break out ACPI Perf code into its own module, under cpufreq
15623(Dominik Brodowski)
15624
15625(2.4) S4BIOS support (Ducrot Bruno)
15626
15627(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
15628Visinoni)
15629
15630
156313) iASL Compiler:
15632
15633Added support to disassemble SSDT and PSDTs.
15634
15635Implemented support to obtain SSDTs from the Windows registry if
15636available.
15637
15638
15639----------------------------------------
1564009 January 2003.  Summary of changes for version 20030109.
15641
156421) ACPI CA Core Subsystem:
15643
15644Changed the behavior of the internal Buffer-to-String conversion
15645function.  The current ACPI specification states that the contents
15646of the buffer are "converted to a string of two-character
15647hexadecimal numbers, each separated by a space".  Unfortunately,
15648this definition is not backwards compatible with existing ACPI 1.0
15649implementations (although the behavior was not defined in the ACPI
156501.0 specification).  The new behavior simply copies data from the
15651buffer to the string until a null character is found or the end of
15652the buffer is reached.  The new String object is always null
15653terminated.  This problem was seen during the generation of _BIF
15654battery data where incorrect strings were returned for battery
15655type, etc.  This will also require an errata to the ACPI
15656specification.
15657
15658Renamed all instances of NATIVE_UINT and NATIVE_INT to
15659ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
15660
15661Copyright in all module headers (both Linux and non-Linux) has be
15662updated to 2003.
15663
15664Code and Data Size: Current core subsystem library sizes are shown
15665below.  These are the code and data sizes for the acpica.lib
15666produced by the Microsoft Visual C++ 6.0 compiler, and these
15667values do not include any ACPI driver or OSPM code.  The debug
15668version of the code includes the debug output trace mechanism and
15669has a much larger code and data size.  Note that these values will
15670vary depending on the efficiency of the compiler and the compiler
15671options used during generation.
15672
15673  Previous Release
15674    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15675    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15676  Current Release:
15677    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15678    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15679
15680
156812) Linux
15682
15683Fixed an oops on module insertion/removal (Matthew Tippett)
15684
15685(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
15686
15687(2.5) Replace pr_debug (Randy Dunlap)
15688
15689(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
15690
15691(Both) Eliminate spawning of thread from timer callback, in favor
15692of schedule_work()
15693
15694(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
15695
15696(Both) Added define for Fixed Function HW region (Matthew Wilcox)
15697
15698(Both) Add missing statics to button.c (Pavel Machek)
15699
15700Several changes have been made to the source code translation
15701utility that generates the Linux Code in order to make the code
15702more "Linux-like":
15703
15704All typedefs on structs and unions have been removed in keeping
15705with the Linux coding style.
15706
15707Removed the non-Linux SourceSafe module revision number from each
15708module header.
15709
15710Completed major overhaul of symbols to be lowercase for linux.
15711Doubled the number of symbols that are lowercase.
15712
15713Fixed a problem where identifiers within procedure headers and
15714within quotes were not fully lower cased (they were left with a
15715starting capital.)
15716
15717Some C macros whose only purpose is to allow the generation of 16-
15718bit code are now completely removed in the Linux code, increasing
15719readability and maintainability.
15720
15721----------------------------------------
15722
1572312 December 2002.  Summary of changes for version 20021212.
15724
15725
157261) ACPI CA Core Subsystem:
15727
15728Fixed a problem where the creation of a zero-length AML Buffer
15729would cause a fault.
15730
15731Fixed a problem where a Buffer object that pointed to a static AML
15732buffer (in an ACPI table) could inadvertently be deleted, causing
15733memory corruption.
15734
15735Fixed a problem where a user buffer (passed in to the external
15736ACPI CA interfaces) could be overwritten if the buffer was too
15737small to complete the operation, causing memory corruption.
15738
15739Fixed a problem in the Buffer-to-String conversion code where a
15740string of length one was always returned, regardless of the size
15741of the input Buffer object.
15742
15743Removed the NATIVE_CHAR data type across the entire source due to
15744lack of need and lack of consistent use.
15745
15746Code and Data Size: Current core subsystem library sizes are shown
15747below.  These are the code and data sizes for the acpica.lib
15748produced by the Microsoft Visual C++ 6.0 compiler, and these
15749values do not include any ACPI driver or OSPM code.  The debug
15750version of the code includes the debug output trace mechanism and
15751has a much larger code and data size.  Note that these values will
15752vary depending on the efficiency of the compiler and the compiler
15753options used during generation.
15754
15755  Previous Release
15756    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
15757    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
15758  Current Release:
15759    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15760    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15761
15762
15763----------------------------------------
1576405 December 2002.  Summary of changes for version 20021205.
15765
157661) ACPI CA Core Subsystem:
15767
15768Fixed a problem where a store to a String or Buffer object could
15769cause corruption of the DSDT if the object type being stored was
15770the same as the target object type and the length of the object
15771being stored was equal to or smaller than the original (existing)
15772target object.  This was seen to cause corruption of battery _BIF
15773buffers if the _BIF method modified the buffer on the fly.
15774
15775Fixed a problem where an internal error was generated if a control
15776method invocation was used in an OperationRegion, Buffer, or
15777Package declaration.  This was caused by the deferred parsing of
15778the control method and thus the deferred creation of the internal
15779method object.  The solution to this problem was to create the
15780internal method object at the moment the method is encountered in
15781the first pass - so that subsequent references to the method will
15782able to obtain the required parameter count and thus properly
15783parse the method invocation.  This problem presented itself as an
15784AE_AML_INTERNAL during the pass 1 parse phase during table load.
15785
15786Fixed a problem where the internal String object copy routine did
15787not always allocate sufficient memory for the target String object
15788and caused memory corruption.  This problem was seen to cause
15789"Allocation already present in list!" errors as memory allocation
15790became corrupted.
15791
15792Implemented a new function for the evaluation of namespace objects
15793that allows the specification of the allowable return object
15794types.  This simplifies a lot of code that checks for a return
15795object of one or more specific objects returned from the
15796evaluation (such as _STA, etc.)  This may become and external
15797function if it would be useful to ACPI-related drivers.
15798
15799Completed another round of prefixing #defines with "ACPI_" for
15800clarity.
15801
15802Completed additional code restructuring to allow more modular
15803linking for iASL compiler and AcpiExec.  Several files were split
15804creating new files.  New files:  nsparse.c dsinit.c evgpe.c
15805
15806Implemented an abort mechanism to terminate an executing control
15807method via the AML debugger.  This feature is useful for debugging
15808control methods that depend (wait) for specific hardware
15809responses.
15810
15811Code and Data Size: Current core subsystem library sizes are shown
15812below.  These are the code and data sizes for the acpica.lib
15813produced by the Microsoft Visual C++ 6.0 compiler, and these
15814values do not include any ACPI driver or OSPM code.  The debug
15815version of the code includes the debug output trace mechanism and
15816has a much larger code and data size.  Note that these values will
15817vary depending on the efficiency of the compiler and the compiler
15818options used during generation.
15819
15820  Previous Release
15821    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15822    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
15823  Current Release:
15824    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
15825    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
15826
15827
158282) iASL Compiler/Disassembler
15829
15830Fixed a compiler code generation problem for "Interrupt" Resource
15831Descriptors.  If specified in the ASL, the optional "Resource
15832Source Index" and "Resource Source" fields were not inserted into
15833the correct location within the AML resource descriptor, creating
15834an invalid descriptor.
15835
15836Fixed a disassembler problem for "Interrupt" resource descriptors.
15837The optional "Resource Source Index" and "Resource Source" fields
15838were ignored.
15839
15840
15841----------------------------------------
1584222 November 2002.  Summary of changes for version 20021122.
15843
15844
158451) ACPI CA Core Subsystem:
15846
15847Fixed a reported problem where an object stored to a Method Local
15848or Arg was not copied to a new object during the store - the
15849object pointer was simply copied to the Local/Arg.  This caused
15850all subsequent operations on the Local/Arg to also affect the
15851original source of the store operation.
15852
15853Fixed a problem where a store operation to a Method Local or Arg
15854was not completed properly if the Local/Arg contained a reference
15855(from RefOf) to a named field.  The general-purpose store-to-
15856namespace-node code is now used so that this case is handled
15857automatically.
15858
15859Fixed a problem where the internal object copy routine would cause
15860a protection fault if the object being copied was a Package and
15861contained either 1) a NULL package element or 2) a nested sub-
15862package.
15863
15864Fixed a problem with the GPE initialization that resulted from an
15865ambiguity in the ACPI specification.  One section of the
15866specification states that both the address and length of the GPE
15867block must be zero if the block is not supported.  Another section
15868implies that only the address need be zero if the block is not
15869supported.  The code has been changed so that both the address and
15870the length must be non-zero to indicate a valid GPE block (i.e.,
15871if either the address or the length is zero, the GPE block is
15872invalid.)
15873
15874Code and Data Size: Current core subsystem library sizes are shown
15875below.  These are the code and data sizes for the acpica.lib
15876produced by the Microsoft Visual C++ 6.0 compiler, and these
15877values do not include any ACPI driver or OSPM code.  The debug
15878version of the code includes the debug output trace mechanism and
15879has a much larger code and data size.  Note that these values will
15880vary depending on the efficiency of the compiler and the compiler
15881options used during generation.
15882
15883  Previous Release
15884    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
15885    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
15886  Current Release:
15887    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15888    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
15889
15890
158912) Linux
15892
15893Cleaned up EC driver. Exported an external EC read/write
15894interface. By going through this, other drivers (most notably
15895sonypi) will be able to serialize access to the EC.
15896
15897
158983) iASL Compiler/Disassembler
15899
15900Implemented support to optionally generate include files for both
15901ASM and C (the -i switch).  This simplifies BIOS development by
15902automatically creating include files that contain external
15903declarations for the symbols that are created within the
15904
15905(optionally generated) ASM and C AML source files.
15906
15907
15908----------------------------------------
1590915 November 2002.  Summary of changes for version 20021115.
15910
159111) ACPI CA Core Subsystem:
15912
15913Fixed a memory leak problem where an error during resolution of
15914
15915method arguments during a method invocation from another method
15916failed to cleanup properly by deleting all successfully resolved
15917argument objects.
15918
15919Fixed a problem where the target of the Index() operator was not
15920correctly constructed if the source object was a package.  This
15921problem has not been detected because the use of a target operand
15922with Index() is very rare.
15923
15924Fixed a problem with the Index() operator where an attempt was
15925made to delete the operand objects twice.
15926
15927Fixed a problem where an attempt was made to delete an operand
15928twice during execution of the CondRefOf() operator if the target
15929did not exist.
15930
15931Implemented the first of perhaps several internal create object
15932functions that create and initialize a specific object type.  This
15933consolidates duplicated code wherever the object is created, thus
15934shrinking the size of the subsystem.
15935
15936Implemented improved debug/error messages for errors that occur
15937during nested method invocations.  All executing method pathnames
15938are displayed (with the error) as the call stack is unwound - thus
15939simplifying debug.
15940
15941Fixed a problem introduced in the 10/02 release that caused
15942premature deletion of a buffer object if a buffer was used as an
15943ASL operand where an integer operand is required (Thus causing an
15944implicit object conversion from Buffer to Integer.)  The change in
15945the 10/02 release was attempting to fix a memory leak (albeit
15946incorrectly.)
15947
15948Code and Data Size: Current core subsystem library sizes are shown
15949below.  These are the code and data sizes for the acpica.lib
15950produced by the Microsoft Visual C++ 6.0 compiler, and these
15951values do not include any ACPI driver or OSPM code.  The debug
15952version of the code includes the debug output trace mechanism and
15953has a much larger code and data size.  Note that these values will
15954vary depending on the efficiency of the compiler and the compiler
15955options used during generation.
15956
15957  Previous Release
15958    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
15959    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
15960  Current Release:
15961    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
15962    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
15963
15964
159652) Linux
15966
15967Changed the implementation of the ACPI semaphores to use down()
15968instead of down_interruptable().  It is important that the
15969execution of ACPI control methods not be interrupted by signals.
15970Methods must run to completion, or the system may be left in an
15971unknown/unstable state.
15972
15973Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
15974(Shawn Starr)
15975
15976
159773) iASL Compiler/Disassembler
15978
15979
15980Changed the default location of output files.  All output files
15981are now placed in the current directory by default instead of in
15982the directory of the source file.  This change may affect some
15983existing makefiles, but it brings the behavior of the compiler in
15984line with other similar tools.  The location of the output files
15985can be overridden with the -p command line switch.
15986
15987
15988----------------------------------------
1598911 November 2002.  Summary of changes for version 20021111.
15990
15991
159920) ACPI Specification 2.0B is released and is now available at:
15993http://www.acpi.info/index.html
15994
15995
159961) ACPI CA Core Subsystem:
15997
15998Implemented support for the ACPI 2.0 SMBus Operation Regions.
15999This includes the early detection and handoff of the request to
16000the SMBus region handler (avoiding all of the complex field
16001support code), and support for the bidirectional return packet
16002from an SMBus write operation.  This paves the way for the
16003development of SMBus drivers in each host operating system.
16004
16005Fixed a problem where the semaphore WAIT_FOREVER constant was
16006defined as 32 bits, but must be 16 bits according to the ACPI
16007specification.  This had the side effect of causing ASL
16008Mutex/Event timeouts even though the ASL code requested a wait
16009forever.  Changed all internal references to the ACPI timeout
16010parameter to 16 bits to prevent future problems.  Changed the name
16011of WAIT_FOREVER to ACPI_WAIT_FOREVER.
16012
16013Code and Data Size: Current core subsystem library sizes are shown
16014below.  These are the code and data sizes for the acpica.lib
16015produced by the Microsoft Visual C++ 6.0 compiler, and these
16016values do not include any ACPI driver or OSPM code.  The debug
16017version of the code includes the debug output trace mechanism and
16018has a much larger code and data size.  Note that these values will
16019vary depending on the efficiency of the compiler and the compiler
16020options used during generation.
16021
16022  Previous Release
16023    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16024    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
16025  Current Release:
16026    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
16027    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
16028
16029
160302) Linux
16031
16032Module loading/unloading fixes (John Cagle)
16033
16034
160353) iASL Compiler/Disassembler
16036
16037Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
16038
16039Implemented support for the disassembly of all SMBus protocol
16040keywords (SMBQuick, SMBWord, etc.)
16041
16042----------------------------------------
1604301 November 2002.  Summary of changes for version 20021101.
16044
16045
160461) ACPI CA Core Subsystem:
16047
16048Fixed a problem where platforms that have a GPE1 block but no GPE0
16049block were not handled correctly.  This resulted in a "GPE
16050overlap" error message.  GPE0 is no longer required.
16051
16052Removed code added in the previous release that inserted nodes
16053into the namespace in alphabetical order.  This caused some side-
16054effects on various machines.  The root cause of the problem is
16055still under investigation since in theory, the internal ordering
16056of the namespace nodes should not matter.
16057
16058
16059Enhanced error reporting for the case where a named object is not
16060found during control method execution.  The full ACPI namepath
16061(name reference) of the object that was not found is displayed in
16062this case.
16063
16064Note: as a result of the overhaul of the namespace object types in
16065the previous release, the namespace nodes for the predefined
16066scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
16067instead of ACPI_TYPE_ANY.  This simplifies the namespace
16068management code but may affect code that walks the namespace tree
16069looking for specific object types.
16070
16071Code and Data Size: Current core subsystem library sizes are shown
16072below.  These are the code and data sizes for the acpica.lib
16073produced by the Microsoft Visual C++ 6.0 compiler, and these
16074values do not include any ACPI driver or OSPM code.  The debug
16075version of the code includes the debug output trace mechanism and
16076has a much larger code and data size.  Note that these values will
16077vary depending on the efficiency of the compiler and the compiler
16078options used during generation.
16079
16080  Previous Release
16081    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
16082    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
16083  Current Release:
16084    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16085    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
16086
16087
160882) Linux
16089
16090Fixed a problem introduced in the previous release where the
16091Processor and Thermal objects were not recognized and installed in
16092/proc.  This was related to the scope type change described above.
16093
16094
160953) iASL Compiler/Disassembler
16096
16097Implemented the -g option to get all of the required ACPI tables
16098from the registry and save them to files (Windows version of the
16099compiler only.)  The required tables are the FADT, FACS, and DSDT.
16100
16101Added ACPI table checksum validation during table disassembly in
16102order to catch corrupted tables.
16103
16104
16105----------------------------------------
1610622 October 2002.  Summary of changes for version 20021022.
16107
161081) ACPI CA Core Subsystem:
16109
16110Implemented a restriction on the Scope operator that the target
16111must already exist in the namespace at the time the operator is
16112encountered (during table load or method execution).  In other
16113words, forward references are not allowed and Scope() cannot
16114create a new object. This changes the previous behavior where the
16115interpreter would create the name if not found.  This new behavior
16116correctly enables the search-to-root algorithm during namespace
16117lookup of the target name.  Because of this upsearch, this fixes
16118the known Compaq _SB_.OKEC problem and makes both the AML
16119interpreter and iASL compiler compatible with other ACPI
16120implementations.
16121
16122Completed a major overhaul of the internal ACPI object types for
16123the ACPI Namespace and the associated operand objects.  Many of
16124these types had become obsolete with the introduction of the two-
16125pass namespace load.  This cleanup simplifies the code and makes
16126the entire namespace load mechanism much clearer and easier to
16127understand.
16128
16129Improved debug output for tracking scope opening/closing to help
16130diagnose scoping issues.  The old scope name as well as the new
16131scope name are displayed.  Also improved error messages for
16132problems with ASL Mutex objects and error messages for GPE
16133problems.
16134
16135Cleaned up the namespace dump code, removed obsolete code.
16136
16137All string output (for all namespace/object dumps) now uses the
16138common ACPI string output procedure which handles escapes properly
16139and does not emit non-printable characters.
16140
16141Fixed some issues with constants in the 64-bit version of the
16142local C library (utclib.c)
16143
16144
161452) Linux
16146
16147EC Driver:  No longer attempts to acquire the Global Lock at
16148interrupt level.
16149
16150
161513) iASL Compiler/Disassembler
16152
16153Implemented ACPI 2.0B grammar change that disallows all Type 1 and
161542 opcodes outside of a control method.  This means that the
16155"executable" operators (versus the "namespace" operators) cannot
16156be used at the table level; they can only be used within a control
16157method.
16158
16159Implemented the restriction on the Scope() operator where the
16160target must already exist in the namespace at the time the
16161operator is encountered (during ASL compilation). In other words,
16162forward references are not allowed and Scope() cannot create a new
16163object.  This makes the iASL compiler compatible with other ACPI
16164implementations and makes the Scope() implementation adhere to the
16165ACPI specification.
16166
16167Fixed a problem where namepath optimization for the Alias operator
16168was optimizing the wrong path (of the two namepaths.)  This caused
16169a "Missing alias link" error message.
16170
16171Fixed a problem where an "unknown reserved name" warning could be
16172incorrectly generated for names like "_SB" when the trailing
16173underscore is not used in the original ASL.
16174
16175Fixed a problem where the reserved name check did not handle
16176NamePaths with multiple NameSegs correctly.  The first nameseg of
16177the NamePath was examined instead of the last NameSeg.
16178
16179
16180----------------------------------------
16181
1618202 October 2002.  Summary of changes for this release.
16183
16184
161851) ACPI CA Core Subsystem version 20021002:
16186
16187Fixed a problem where a store/copy of a string to an existing
16188string did not always set the string length properly in the String
16189object.
16190
16191Fixed a reported problem with the ToString operator where the
16192behavior was identical to the ToHexString operator instead of just
16193simply converting a raw buffer to a string data type.
16194
16195Fixed a problem where CopyObject and the other "explicit"
16196conversion operators were not updating the internal namespace node
16197type as part of the store operation.
16198
16199Fixed a memory leak during implicit source operand conversion
16200where the original object was not deleted if it was converted to a
16201new object of a different type.
16202
16203Enhanced error messages for all problems associated with namespace
16204lookups.  Common procedure generates and prints the lookup name as
16205well as the formatted status.
16206
16207Completed implementation of a new design for the Alias support
16208within the namespace.  The existing design did not handle the case
16209where a new object was assigned to one of the two names due to the
16210use of an explicit conversion operator, resulting in the two names
16211pointing to two different objects.  The new design simply points
16212the Alias name to the original name node - not to the object.
16213This results in a level of indirection that must be handled in the
16214name resolution mechanism.
16215
16216Code and Data Size: Current core subsystem library sizes are shown
16217below.  These are the code and data sizes for the acpica.lib
16218produced by the Microsoft Visual C++ 6.0 compiler, and these
16219values do not include any ACPI driver or OSPM code.  The debug
16220version of the code includes the debug output trace mechanism and
16221has a larger code and data size.  Note that these values will vary
16222depending on the efficiency of the compiler and the compiler
16223options used during generation.
16224
16225  Previous Release
16226    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
16227    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
16228  Current Release:
16229    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
16230    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
16231
16232
162332) Linux
16234
16235Initialize thermal driver's timer before it is used. (Knut
16236Neumann)
16237
16238Allow handling negative celsius values. (Kochi Takayoshi)
16239
16240Fix thermal management and make trip points. R/W (Pavel Machek)
16241
16242Fix /proc/acpi/sleep. (P. Christeas)
16243
16244IA64 fixes. (David Mosberger)
16245
16246Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
16247
16248Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
16249Brodowski)
16250
16251
162523) iASL Compiler/Disassembler
16253
16254Clarified some warning/error messages.
16255
16256
16257----------------------------------------
1625818 September 2002.  Summary of changes for this release.
16259
16260
162611) ACPI CA Core Subsystem version 20020918:
16262
16263Fixed a reported problem with reference chaining (via the Index()
16264and RefOf() operators) in the ObjectType() and SizeOf() operators.
16265The definition of these operators includes the dereferencing of
16266all chained references to return information on the base object.
16267
16268Fixed a problem with stores to indexed package elements - the
16269existing code would not complete the store if an "implicit
16270conversion" was not performed.  In other words, if the existing
16271object (package element) was to be replaced completely, the code
16272didn't handle this case.
16273
16274Relaxed typechecking on the ASL "Scope" operator to allow the
16275target name to refer to an object of type Integer, String, or
16276Buffer, in addition to the scoping object types (Device,
16277predefined Scopes, Processor, PowerResource, and ThermalZone.)
16278This allows existing AML code that has workarounds for a bug in
16279Windows to function properly.  A warning is issued, however.  This
16280affects both the AML interpreter and the iASL compiler. Below is
16281an example of this type of ASL code:
16282
16283      Name(DEB,0x00)
16284      Scope(DEB)
16285      {
16286
16287Fixed some reported problems with 64-bit integer support in the
16288local implementation of C library functions (clib.c)
16289
16290
162912) Linux
16292
16293Use ACPI fix map region instead of IOAPIC region, since it is
16294undefined in non-SMP.
16295
16296Ensure that the SCI has the proper polarity and trigger, even on
16297systems that do not have an interrupt override entry in the MADT.
16298
162992.5 big driver reorganization (Pat Mochel)
16300
16301Use early table mapping code from acpitable.c (Andi Kleen)
16302
16303New blacklist entries (Andi Kleen)
16304
16305Blacklist improvements. Split blacklist code out into a separate
16306file. Move checking the blacklist to very early. Previously, we
16307would use ACPI tables, and then halfway through init, check the
16308blacklist -- too late. Now, it's early enough to completely fall-
16309back to non-ACPI.
16310
16311
163123) iASL Compiler/Disassembler version 20020918:
16313
16314Fixed a problem where the typechecking code didn't know that an
16315alias could point to a method.  In other words, aliases were not
16316being dereferenced during typechecking.
16317
16318
16319----------------------------------------
1632029 August 2002.  Summary of changes for this release.
16321
163221) ACPI CA Core Subsystem Version 20020829:
16323
16324If the target of a Scope() operator already exists, it must be an
16325object type that actually opens a scope -- such as a Device,
16326Method, Scope, etc.  This is a fatal runtime error.  Similar error
16327check has been added to the iASL compiler also.
16328
16329Tightened up the namespace load to disallow multiple names in the
16330same scope.  This previously was allowed if both objects were of
16331the same type.  (i.e., a lookup was the same as entering a new
16332name).
16333
16334
163352) Linux
16336
16337Ensure that the ACPI interrupt has the proper trigger and
16338polarity.
16339
16340local_irq_disable is extraneous. (Matthew Wilcox)
16341
16342Make "acpi=off" actually do what it says, and not use the ACPI
16343interpreter *or* the tables.
16344
16345Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
16346Takayoshi)
16347
16348
163493) iASL Compiler/Disassembler  Version 20020829:
16350
16351Implemented namepath optimization for name declarations.  For
16352example, a declaration like "Method (\_SB_.ABCD)" would get
16353optimized to "Method (ABCD)" if the declaration is within the
16354\_SB_ scope.  This optimization is in addition to the named
16355reference path optimization first released in the previous
16356version. This would seem to complete all possible optimizations
16357for namepaths within the ASL/AML.
16358
16359If the target of a Scope() operator already exists, it must be an
16360object type that actually opens a scope -- such as a Device,
16361Method, Scope, etc.
16362
16363Implemented a check and warning for unreachable code in the same
16364block below a Return() statement.
16365
16366Fixed a problem where the listing file was not generated if the
16367compiler aborted if the maximum error count was exceeded (200).
16368
16369Fixed a problem where the typechecking of method return values was
16370broken.  This includes the check for a return value when the
16371method is invoked as a TermArg (a return value is expected.)
16372
16373Fixed a reported problem where EOF conditions during a quoted
16374string or comment caused a fault.
16375
16376
16377----------------------------------------
1637815 August 2002.  Summary of changes for this release.
16379
163801) ACPI CA Core Subsystem Version 20020815:
16381
16382Fixed a reported problem where a Store to a method argument that
16383contains a reference did not perform the indirect store correctly.
16384This problem was created during the conversion to the new
16385reference object model - the indirect store to a method argument
16386code was not updated to reflect the new model.
16387
16388Reworked the ACPI mode change code to better conform to ACPI 2.0,
16389handle corner cases, and improve code legibility (Kochi Takayoshi)
16390
16391Fixed a problem with the pathname parsing for the carat (^)
16392prefix.  The heavy use of the carat operator by the new namepath
16393optimization in the iASL compiler uncovered a problem with the AML
16394interpreter handling of this prefix.  In the case where one or
16395more carats precede a single nameseg, the nameseg was treated as
16396standalone and the search rule (to root) was inadvertently
16397applied.  This could cause both the iASL compiler and the
16398interpreter to find the wrong object or to miss the error that
16399should occur if the object does not exist at that exact pathname.
16400
16401Found and fixed the problem where the HP Pavilion DSDT would not
16402load.  This was a relatively minor tweak to the table loading code
16403(a problem caused by the unexpected encounter with a method
16404invocation not within a control method), but it does not solve the
16405overall issue of the execution of AML code at the table level.
16406This investigation is still ongoing.
16407
16408Code and Data Size: Current core subsystem library sizes are shown
16409below.  These are the code and data sizes for the acpica.lib
16410produced by the Microsoft Visual C++ 6.0 compiler, and these
16411values do not include any ACPI driver or OSPM code.  The debug
16412version of the code includes the debug output trace mechanism and
16413has a larger code and data size.  Note that these values will vary
16414depending on the efficiency of the compiler and the compiler
16415options used during generation.
16416
16417  Previous Release
16418    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
16419    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
16420  Current Release:
16421    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
16422    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
16423
16424
164252) Linux
16426
16427Remove redundant slab.h include (Brad Hards)
16428
16429Fix several bugs in thermal.c (Herbert Nachtnebel)
16430
16431Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
16432
16433Change acpi_system_suspend to use updated irq functions (Pavel
16434Machek)
16435
16436Export acpi_get_firmware_table (Matthew Wilcox)
16437
16438Use proper root proc entry for ACPI (Kochi Takayoshi)
16439
16440Fix early-boot table parsing (Bjorn Helgaas)
16441
16442
164433) iASL Compiler/Disassembler
16444
16445Reworked the compiler options to make them more consistent and to
16446use two-letter options where appropriate.  We were running out of
16447sensible letters.   This may break some makefiles, so check the
16448current options list by invoking the compiler with no parameters.
16449
16450Completed the design and implementation of the ASL namepath
16451optimization option for the compiler.  This option optimizes all
16452references to named objects to the shortest possible path.  The
16453first attempt tries to utilize a single nameseg (4 characters) and
16454the "search-to-root" algorithm used by the interpreter.  If that
16455cannot be used (because either the name is not in the search path
16456or there is a conflict with another object with the same name),
16457the pathname is optimized using the carat prefix (usually a
16458shorter string than specifying the entire path from the root.)
16459
16460Implemented support to obtain the DSDT from the Windows registry
16461(when the disassembly option is specified with no input file).
16462Added this code as the implementation for AcpiOsTableOverride in
16463the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
16464utility) to scan memory for the DSDT to the AcpiOsTableOverride
16465function in the DOS OSL to make the disassembler truly OS
16466independent.
16467
16468Implemented a new option to disassemble and compile in one step.
16469When used without an input filename, this option will grab the
16470DSDT from the local machine, disassemble it, and compile it in one
16471step.
16472
16473Added a warning message for invalid escapes (a backslash followed
16474by any character other than the allowable escapes).  This catches
16475the quoted string error "\_SB_" (which should be "\\_SB_" ).
16476
16477Also, there are numerous instances in the ACPI specification where
16478this error occurs.
16479
16480Added a compiler option to disable all optimizations.  This is
16481basically the "compatibility mode" because by using this option,
16482the AML code will come out exactly the same as other ASL
16483compilers.
16484
16485Added error messages for incorrectly ordered dependent resource
16486functions.  This includes: missing EndDependentFn macro at end of
16487dependent resource list, nested dependent function macros (both
16488start and end), and missing StartDependentFn macro.  These are
16489common errors that should be caught at compile time.
16490
16491Implemented _OSI support for the disassembler and compiler.  _OSI
16492must be included in the namespace for proper disassembly (because
16493the disassembler must know the number of arguments.)
16494
16495Added an "optimization" message type that is optional (off by
16496default).  This message is used for all optimizations - including
16497constant folding, integer optimization, and namepath optimization.
16498
16499----------------------------------------
1650025 July 2002.  Summary of changes for this release.
16501
16502
165031) ACPI CA Core Subsystem Version 20020725:
16504
16505The AML Disassembler has been enhanced to produce compilable ASL
16506code and has been integrated into the iASL compiler (see below) as
16507well as the single-step disassembly for the AML debugger and the
16508disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
16509resource templates and macros are fully supported.  The
16510disassembler has been tested on over 30 different AML files,
16511producing identical AML when the resulting disassembled ASL file
16512is recompiled with the same ASL compiler.
16513
16514Modified the Resource Manager to allow zero interrupts and zero
16515dma channels during the GetCurrentResources call.  This was
16516causing problems on some platforms.
16517
16518Added the AcpiOsRedirectOutput interface to the OSL to simplify
16519output redirection for the AcpiOsPrintf and AcpiOsVprintf
16520interfaces.
16521
16522Code and Data Size: Current core subsystem library sizes are shown
16523below.  These are the code and data sizes for the acpica.lib
16524produced by the Microsoft Visual C++ 6.0 compiler, and these
16525values do not include any ACPI driver or OSPM code.  The debug
16526version of the code includes the debug output trace mechanism and
16527has a larger code and data size.  Note that these values will vary
16528depending on the efficiency of the compiler and the compiler
16529options used during generation.
16530
16531  Previous Release
16532    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
16533    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
16534  Current Release:
16535    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
16536    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
16537
16538
165392) Linux
16540
16541Fixed a panic in the EC driver (Dominik Brodowski)
16542
16543Implemented checksum of the R/XSDT itself during Linux table scan
16544(Richard Schaal)
16545
16546
165473) iASL compiler
16548
16549The AML disassembler is integrated into the compiler.  The "-d"
16550option invokes the disassembler  to completely disassemble an
16551input AML file, producing as output a text ASL file with the
16552extension ".dsl" (to avoid name collisions with existing .asl
16553source files.)  A future enhancement will allow the disassembler
16554to obtain the BIOS DSDT from the registry under Windows.
16555
16556Fixed a problem with the VendorShort and VendorLong resource
16557descriptors where an invalid AML sequence was created.
16558
16559Implemented a fix for BufferData term in the ASL parser.  It was
16560inadvertently defined twice, allowing invalid syntax to pass and
16561causing reduction conflicts.
16562
16563Fixed a problem where the Ones opcode could get converted to a
16564value of zero if "Ones" was used where a byte, word or dword value
16565was expected.  The 64-bit value is now truncated to the correct
16566size with the correct value.
16567
16568
16569
16570----------------------------------------
1657102 July 2002.  Summary of changes for this release.
16572
16573
165741) ACPI CA Core Subsystem Version 20020702:
16575
16576The Table Manager code has been restructured to add several new
16577features.  Tables that are not required by the core subsystem
16578(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
16579validated in any way and are returned from AcpiGetFirmwareTable if
16580requested.  The AcpiOsTableOverride interface is now called for
16581each table that is loaded by the subsystem in order to allow the
16582host to override any table it chooses.  Previously, only the DSDT
16583could be overridden.  Added one new files, tbrsdt.c and
16584tbgetall.c.
16585
16586Fixed a problem with the conversion of internal package objects to
16587external objects (when a package is returned from a control
16588method.)  The return buffer length was set to zero instead of the
16589proper length of the package object.
16590
16591Fixed a reported problem with the use of the RefOf and DeRefOf
16592operators when passing reference arguments to control methods.  A
16593new type of Reference object is used internally for references
16594produced by the RefOf operator.
16595
16596Added additional error messages in the Resource Manager to explain
16597AE_BAD_DATA errors when they occur during resource parsing.
16598
16599Split the AcpiEnableSubsystem into two primitives to enable a
16600finer granularity initialization sequence.  These two calls should
16601be called in this order: AcpiEnableSubsystem (flags),
16602AcpiInitializeObjects (flags).  The flags parameter remains the
16603same.
16604
16605
166062) Linux
16607
16608Updated the ACPI utilities module to understand the new style of
16609fully resolved package objects that are now returned from the core
16610subsystem.  This eliminates errors of the form:
16611
16612    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
16613    acpi_utils-0430 [145] acpi_evaluate_reference:
16614        Invalid element in package (not a device reference)
16615
16616The method evaluation utility uses the new buffer allocation
16617scheme instead of calling AcpiEvaluate Object twice.
16618
16619Added support for ECDT. This allows the use of the Embedded
16620
16621Controller before the namespace has been fully initialized, which
16622is necessary for ACPI 2.0 support, and for some laptops to
16623initialize properly. (Laptops using ECDT are still rare, so only
16624limited testing was performed of the added functionality.)
16625
16626Fixed memory leaks in the EC driver.
16627
16628Eliminated a brittle code structure in acpi_bus_init().
16629
16630Eliminated the acpi_evaluate() helper function in utils.c. It is
16631no longer needed since acpi_evaluate_object can optionally
16632allocate memory for the return object.
16633
16634Implemented fix for keyboard hang when getting battery readings on
16635some systems (Stephen White)
16636
16637PCI IRQ routing update (Dominik Brodowski)
16638
16639Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
16640support
16641
16642----------------------------------------
1664311 June 2002.  Summary of changes for this release.
16644
16645
166461) ACPI CA Core Subsystem Version 20020611:
16647
16648Fixed a reported problem where constants such as Zero and One
16649appearing within _PRT packages were not handled correctly within
16650the resource manager code.  Originally reported against the ASL
16651compiler because the code generator now optimizes integers to
16652their minimal AML representation (i.e. AML constants if possible.)
16653The _PRT code now handles all AML constant opcodes correctly
16654(Zero, One, Ones, Revision).
16655
16656Fixed a problem with the Concatenate operator in the AML
16657interpreter where a buffer result object was incorrectly marked as
16658not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
16659
16660All package sub-objects are now fully resolved before they are
16661returned from the external ACPI interfaces.  This means that name
16662strings are resolved to object handles, and constant operators
16663(Zero, One, Ones, Revision) are resolved to Integers.
16664
16665Implemented immediate resolution of the AML Constant opcodes
16666(Zero, One, Ones, Revision) to Integer objects upon detection
16667within the AML stream. This has simplified and reduced the
16668generated code size of the subsystem by eliminating about 10
16669switch statements for these constants (which previously were
16670contained in Reference objects.)  The complicating issues are that
16671the Zero opcode is used as a "placeholder" for unspecified
16672optional target operands and stores to constants are defined to be
16673no-ops.
16674
16675Code and Data Size: Current core subsystem library sizes are shown
16676below. These are the code and data sizes for the acpica.lib
16677produced by the Microsoft Visual C++ 6.0 compiler, and these
16678values do not include any ACPI driver or OSPM code.  The debug
16679version of the code includes the debug output trace mechanism and
16680has a larger code and data size.  Note that these values will vary
16681depending on the efficiency of the compiler and the compiler
16682options used during generation.
16683
16684  Previous Release
16685    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
16686    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
16687  Current Release:
16688    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
16689    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
16690
16691
166922) Linux
16693
16694
16695Added preliminary support for obtaining _TRA data for PCI root
16696bridges (Bjorn Helgaas).
16697
16698
166993) iASL Compiler Version X2046:
16700
16701Fixed a problem where the "_DDN" reserved name was defined to be a
16702control method with one argument.  There are no arguments, and
16703_DDN does not have to be a control method.
16704
16705Fixed a problem with the Linux version of the compiler where the
16706source lines printed with error messages were the wrong lines.
16707This turned out to be the "LF versus CR/LF" difference between
16708Windows and Unix.  This appears to be the longstanding issue
16709concerning listing output and error messages.
16710
16711Fixed a problem with the Linux version of compiler where opcode
16712names within error messages were wrong.  This was caused by a
16713slight difference in the output of the Flex tool on Linux versus
16714Windows.
16715
16716Fixed a problem with the Linux compiler where the hex output files
16717contained some garbage data caused by an internal buffer overrun.
16718
16719
16720----------------------------------------
1672117 May 2002.  Summary of changes for this release.
16722
16723
167241) ACPI CA Core Subsystem Version 20020517:
16725
16726Implemented a workaround to an BIOS bug discovered on the HP
16727OmniBook where the FADT revision number and the table size are
16728inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
16729behavior is to fallback to using only the ACPI 1.0 fields of the
16730FADT if the table is too small to be a ACPI 2.0 table as claimed
16731by the revision number.  Although this is a BIOS bug, this is a
16732case where the workaround is simple enough and with no side
16733effects, so it seemed prudent to add it.  A warning message is
16734issued, however.
16735
16736Implemented minimum size checks for the fixed-length ACPI tables -
16737- the FADT and FACS, as well as consistency checks between the
16738revision number and the table size.
16739
16740Fixed a reported problem in the table override support where the
16741new table pointer was incorrectly treated as a physical address
16742instead of a logical address.
16743
16744Eliminated the use of the AE_AML_ERROR exception and replaced it
16745with more descriptive codes.
16746
16747Fixed a problem where an exception would occur if an ASL Field was
16748defined with no named Field Units underneath it (used by some
16749index fields).
16750
16751Code and Data Size: Current core subsystem library sizes are shown
16752below.  These are the code and data sizes for the acpica.lib
16753produced by the Microsoft Visual C++ 6.0 compiler, and these
16754values do not include any ACPI driver or OSPM code.  The debug
16755version of the code includes the debug output trace mechanism and
16756has a larger code and data size.  Note that these values will vary
16757depending on the efficiency of the compiler and the compiler
16758options used during generation.
16759
16760  Previous Release
16761    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
16762    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
16763  Current Release:
16764    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
16765    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
16766
16767
16768
167692) Linux
16770
16771Much work done on ACPI init (MADT and PCI IRQ routing support).
16772(Paul D. and Dominik Brodowski)
16773
16774Fix PCI IRQ-related panic on boot (Sam Revitch)
16775
16776Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
16777
16778Fix "MHz" typo (Dominik Brodowski)
16779
16780Fix RTC year 2000 issue (Dominik Brodowski)
16781
16782Preclude multiple button proc entries (Eric Brunet)
16783
16784Moved arch-specific code out of include/platform/aclinux.h
16785
167863) iASL Compiler Version X2044:
16787
16788Implemented error checking for the string used in the EISAID macro
16789(Usually used in the definition of the _HID object.)  The code now
16790strictly enforces the PnP format - exactly 7 characters, 3
16791uppercase letters and 4 hex digits.
16792
16793If a raw string is used in the definition of the _HID object
16794(instead of the EISAID macro), the string must contain all
16795alphanumeric characters (e.g., "*PNP0011" is not allowed because
16796of the asterisk.)
16797
16798Implemented checking for invalid use of ACPI reserved names for
16799most of the name creation operators (Name, Device, Event, Mutex,
16800OperationRegion, PowerResource, Processor, and ThermalZone.)
16801Previously, this check was only performed for control methods.
16802
16803Implemented an additional check on the Name operator to emit an
16804error if a reserved name that must be implemented in ASL as a
16805control method is used.  We know that a reserved name must be a
16806method if it is defined with input arguments.
16807
16808The warning emitted when a namespace object reference is not found
16809during the cross reference phase has been changed into an error.
16810The "External" directive should be used for names defined in other
16811modules.
16812
16813
168144) Tools and Utilities
16815
16816The 16-bit tools (adump16 and aexec16) have been regenerated and
16817tested.
16818
16819Fixed a problem with the output of both acpidump and adump16 where
16820the indentation of closing parentheses and brackets was not
16821
16822aligned properly with the parent block.
16823
16824
16825----------------------------------------
1682603 May 2002.  Summary of changes for this release.
16827
16828
168291) ACPI CA Core Subsystem Version 20020503:
16830
16831Added support a new OSL interface that allows the host operating
16832
16833system software to override the DSDT found in the firmware -
16834AcpiOsTableOverride.  With this interface, the OSL can examine the
16835version of the firmware DSDT and replace it with a different one
16836if desired.
16837
16838Added new external interfaces for accessing ACPI registers from
16839device drivers and other system software - AcpiGetRegister and
16840AcpiSetRegister.  This was simply an externalization of the
16841existing AcpiHwBitRegister interfaces.
16842
16843Fixed a regression introduced in the previous build where the
16844ASL/AML CreateField operator always returned an error,
16845"destination must be a NS Node".
16846
16847Extended the maximum time (before failure) to successfully enable
16848ACPI mode to 3 seconds.
16849
16850Code and Data Size: Current core subsystem library sizes are shown
16851below.  These are the code and data sizes for the acpica.lib
16852produced by the Microsoft Visual C++ 6.0 compiler, and these
16853values do not include any ACPI driver or OSPM code.  The debug
16854version of the code includes the debug output trace mechanism and
16855has a larger code and data size.  Note that these values will vary
16856depending on the efficiency of the compiler and the compiler
16857options used during generation.
16858
16859  Previous Release
16860    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
16861    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
16862  Current Release:
16863    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
16864    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
16865
16866
168672) Linux
16868
16869Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
16870free. While 3 out of 4 of our in-house systems work fine, the last
16871one still hangs when testing the LAPIC timer.
16872
16873Renamed many files in 2.5 kernel release to omit "acpi_" from the
16874name.
16875
16876Added warning on boot for Presario 711FR.
16877
16878Sleep improvements (Pavel Machek)
16879
16880ACPI can now be built without CONFIG_PCI enabled.
16881
16882IA64: Fixed memory map functions (JI Lee)
16883
16884
168853) iASL Compiler Version X2043:
16886
16887Added support to allow the compiler to be integrated into the MS
16888VC++ development environment for one-button compilation of single
16889files or entire projects -- with error-to-source-line mapping.
16890
16891Implemented support for compile-time constant folding for the
16892Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
16893specification.  This allows the ASL writer to use expressions
16894instead of Integer/Buffer/String constants in terms that must
16895evaluate to constants at compile time and will also simplify the
16896emitted AML in any such sub-expressions that can be folded
16897(evaluated at compile-time.)  This increases the size of the
16898compiler significantly because a portion of the ACPI CA AML
16899interpreter is included within the compiler in order to pre-
16900evaluate constant expressions.
16901
16902
16903Fixed a problem with the "Unicode" ASL macro that caused the
16904compiler to fault.  (This macro is used in conjunction with the
16905_STR reserved name.)
16906
16907Implemented an AML opcode optimization to use the Zero, One, and
16908Ones opcodes where possible to further reduce the size of integer
16909constants and thus reduce the overall size of the generated AML
16910code.
16911
16912Implemented error checking for new reserved terms for ACPI version
169132.0A.
16914
16915Implemented the -qr option to display the current list of ACPI
16916reserved names known to the compiler.
16917
16918Implemented the -qc option to display the current list of ASL
16919operators that are allowed within constant expressions and can
16920therefore be folded at compile time if the operands are constants.
16921
16922
169234) Documentation
16924
16925Updated the Programmer's Reference for new interfaces, data types,
16926and memory allocation model options.
16927
16928Updated the iASL Compiler User Reference to apply new format and
16929add information about new features and options.
16930
16931----------------------------------------
1693219 April 2002.  Summary of changes for this release.
16933
169341) ACPI CA Core Subsystem Version 20020419:
16935
16936The source code base for the Core Subsystem has been completely
16937cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
16938versions.  The Lint option files used are included in the
16939/acpi/generate/lint directory.
16940
16941Implemented enhanced status/error checking across the entire
16942Hardware manager subsystem.  Any hardware errors (reported from
16943the OSL) are now bubbled up and will abort a running control
16944method.
16945
16946
16947Fixed a problem where the per-ACPI-table integer width (32 or 64)
16948was stored only with control method nodes, causing a fault when
16949non-control method code was executed during table loading.  The
16950solution implemented uses a global variable to indicate table
16951width across the entire ACPI subsystem.  Therefore, ACPI CA does
16952not support mixed integer widths across different ACPI tables
16953(DSDT, SSDT).
16954
16955Fixed a problem where NULL extended fields (X fields) in an ACPI
169562.0 ACPI FADT caused the table load to fail.  Although the
16957existing ACPI specification is a bit fuzzy on this topic, the new
16958behavior is to fall back on a ACPI 1.0 field if the corresponding
16959ACPI 2.0 X field is zero (even though the table revision indicates
16960a full ACPI 2.0 table.)  The ACPI specification will be updated to
16961clarify this issue.
16962
16963Fixed a problem with the SystemMemory operation region handler
16964where memory was always accessed byte-wise even if the AML-
16965specified access width was larger than a byte.  This caused
16966problems on systems with memory-mapped I/O.  Memory is now
16967accessed with the width specified.  On systems that do not support
16968non-aligned transfers, a check is made to guarantee proper address
16969alignment before proceeding in order to avoid an AML-caused
16970alignment fault within the kernel.
16971
16972
16973Fixed a problem with the ExtendedIrq resource where only one byte
16974of the 4-byte Irq field was extracted.
16975
16976Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
16977function was out of date and required a rewrite.
16978
16979Code and Data Size: Current core subsystem library sizes are shown
16980below.  These are the code and data sizes for the acpica.lib
16981produced by the Microsoft Visual C++ 6.0 compiler, and these
16982values do not include any ACPI driver or OSPM code.  The debug
16983version of the code includes the debug output trace mechanism and
16984has a larger code and data size.  Note that these values will vary
16985depending on the efficiency of the compiler and the compiler
16986options used during generation.
16987
16988  Previous Release
16989    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
16990    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
16991  Current Release:
16992    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
16993    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
16994
16995
169962) Linux
16997
16998PCI IRQ routing fixes (Dominik Brodowski)
16999
17000
170013) iASL Compiler Version X2042:
17002
17003Implemented an additional compile-time error check for a field
17004unit whose size + minimum access width would cause a run-time
17005access beyond the end-of-region.  Previously, only the field size
17006itself was checked.
17007
17008The Core subsystem and iASL compiler now share a common parse
17009object in preparation for compile-time evaluation of the type
170103/4/5 ASL operators.
17011
17012
17013----------------------------------------
17014Summary of changes for this release: 03_29_02
17015
170161) ACPI CA Core Subsystem Version 20020329:
17017
17018Implemented support for late evaluation of TermArg operands to
17019Buffer and Package objects.  This allows complex expressions to be
17020used in the declarations of these object types.
17021
17022Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
170231.0, if the field was larger than 32 bits, it was returned as a
17024buffer - otherwise it was returned as an integer.  In ACPI 2.0,
17025the field is returned as a buffer only if the field is larger than
1702664 bits.  The TableRevision is now considered when making this
17027conversion to avoid incompatibility with existing ASL code.
17028
17029Implemented logical addressing for AcpiOsGetRootPointer.  This
17030allows an RSDP with either a logical or physical address.  With
17031this support, the host OS can now override all ACPI tables with
17032one logical RSDP.  Includes implementation of  "typed" pointer
17033support to allow a common data type for both physical and logical
17034pointers internally.  This required a change to the
17035AcpiOsGetRootPointer interface.
17036
17037Implemented the use of ACPI 2.0 Generic Address Structures for all
17038GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
17039mapped I/O for these ACPI features.
17040
17041Initialization now ignores not only non-required tables (All
17042tables other than the FADT, FACS, DSDT, and SSDTs), but also does
17043not validate the table headers of unrecognized tables.
17044
17045Fixed a problem where a notify handler could only be
17046installed/removed on an object of type Device.  All "notify"
17047
17048objects are now supported -- Devices, Processor, Power, and
17049Thermal.
17050
17051Removed most verbosity from the ACPI_DB_INFO debug level.  Only
17052critical information is returned when this debug level is enabled.
17053
17054Code and Data Size: Current core subsystem library sizes are shown
17055below.  These are the code and data sizes for the acpica.lib
17056produced by the Microsoft Visual C++ 6.0 compiler, and these
17057values do not include any ACPI driver or OSPM code.  The debug
17058version of the code includes the debug output trace mechanism and
17059has a larger code and data size.  Note that these values will vary
17060depending on the efficiency of the compiler and the compiler
17061options used during generation.
17062
17063  Previous Release
17064    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
17065    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
17066  Current Release:
17067    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
17068    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
17069
17070
170712) Linux:
17072
17073The processor driver (acpi_processor.c) now fully supports ACPI
170742.0-based processor performance control (e.g. Intel(R)
17075SpeedStep(TM) technology) Note that older laptops that only have
17076the Intel "applet" interface are not supported through this.  The
17077'limit' and 'performance' interface (/proc) are fully functional.
17078[Note that basic policy for controlling performance state
17079transitions will be included in the next version of ospmd.]  The
17080idle handler was modified to more aggressively use C2, and PIIX4
17081errata handling underwent a complete overhaul (big thanks to
17082Dominik Brodowski).
17083
17084Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
17085based devices in the ACPI namespace are now dynamically bound
17086(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
17087This allows, among other things, ACPI to resolve bus numbers for
17088subordinate PCI bridges.
17089
17090Enhanced PCI IRQ routing to get the proper bus number for _PRT
17091entries defined underneath PCI bridges.
17092
17093Added IBM 600E to bad bios list due to invalid _ADR value for
17094PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
17095
17096In the process of adding full MADT support (e.g. IOAPIC) for IA32
17097(acpi.c, mpparse.c) -- stay tuned.
17098
17099Added back visual differentiation between fixed-feature and
17100control-method buttons in dmesg.  Buttons are also subtyped (e.g.
17101button/power/PWRF) to simplify button identification.
17102
17103We no longer use -Wno-unused when compiling debug. Please ignore
17104any "_THIS_MODULE defined but not used" messages.
17105
17106Can now shut down the system using "magic sysrq" key.
17107
17108
171093) iASL Compiler version 2041:
17110
17111Fixed a problem where conversion errors for hex/octal/decimal
17112constants were not reported.
17113
17114Implemented a fix for the General Register template Address field.
17115This field was 8 bits when it should be 64.
17116
17117Fixed a problem where errors/warnings were no longer being emitted
17118within the listing output file.
17119
17120Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
17121exactly 4 characters, alphanumeric only.
17122
17123
17124
17125
17126----------------------------------------
17127Summary of changes for this release: 03_08_02
17128
17129
171301) ACPI CA Core Subsystem Version 20020308:
17131
17132Fixed a problem with AML Fields where the use of the "AccessAny"
17133keyword could cause an interpreter error due to attempting to read
17134or write beyond the end of the parent Operation Region.
17135
17136Fixed a problem in the SystemMemory Operation Region handler where
17137an attempt was made to map memory beyond the end of the region.
17138This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
17139errors on some Linux systems.
17140
17141Fixed a problem where the interpreter/namespace "search to root"
17142algorithm was not functioning for some object types.  Relaxed the
17143internal restriction on the search to allow upsearches for all
17144external object types as well as most internal types.
17145
17146
171472) Linux:
17148
17149We now use safe_halt() macro versus individual calls to sti | hlt.
17150
17151Writing to the processor limit interface should now work. "echo 1"
17152will increase the limit, 2 will decrease, and 0 will reset to the
17153
17154default.
17155
17156
171573) ASL compiler:
17158
17159Fixed segfault on Linux version.
17160
17161
17162----------------------------------------
17163Summary of changes for this release: 02_25_02
17164
171651) ACPI CA Core Subsystem:
17166
17167
17168Fixed a problem where the GPE bit masks were not initialized
17169properly, causing erratic GPE behavior.
17170
17171Implemented limited support for multiple calling conventions.  The
17172code can be generated with either the VPL (variable parameter
17173list, or "C") convention, or the FPL (fixed parameter list, or
17174"Pascal") convention.  The core subsystem is about 3.4% smaller
17175when generated with FPL.
17176
17177
171782) Linux
17179
17180Re-add some /proc/acpi/event functionality that was lost during
17181the rewrite
17182
17183Resolved issue with /proc events for fixed-feature buttons showing
17184up as the system device.
17185
17186Fixed checks on C2/C3 latencies to be inclusive of maximum values.
17187
17188Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
17189
17190Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
17191
17192Fixed limit interface & usage to fix bugs with passive cooling
17193hysterisis.
17194
17195Restructured PRT support.
17196
17197
17198----------------------------------------
17199Summary of changes for this label: 02_14_02
17200
17201
172021) ACPI CA Core Subsystem:
17203
17204Implemented support in AcpiLoadTable to allow loading of FACS and
17205FADT tables.
17206
17207Support for the now-obsolete interim 0.71 64-bit ACPI tables has
17208been removed.  All 64-bit platforms should be migrated to the ACPI
172092.0 tables.  The actbl71.h header has been removed from the source
17210tree.
17211
17212All C macros defined within the subsystem have been prefixed with
17213"ACPI_" to avoid collision with other system include files.
17214
17215Removed the return value for the two AcpiOsPrint interfaces, since
17216it is never used and causes lint warnings for ignoring the return
17217value.
17218
17219Added error checking to all internal mutex acquire and release
17220calls.  Although a failure from one of these interfaces is
17221probably a fatal system error, these checks will cause the
17222immediate abort of the currently executing method or interface.
17223
17224Fixed a problem where the AcpiSetCurrentResources interface could
17225fault.  This was a side effect of the deployment of the new memory
17226allocation model.
17227
17228Fixed a couple of problems with the Global Lock support introduced
17229in the last major build.  The "common" (1.0/2.0) internal FACS was
17230being overwritten with the FACS signature and clobbering the
17231Global Lock pointer.  Also, the actual firmware FACS was being
17232unmapped after construction of the "common" FACS, preventing
17233access to the actual Global Lock field within it.  The "common"
17234internal FACS is no longer installed as an actual ACPI table; it
17235is used simply as a global.
17236
17237Code and Data Size: Current core subsystem library sizes are shown
17238below.  These are the code and data sizes for the acpica.lib
17239produced by the Microsoft Visual C++ 6.0 compiler, and these
17240values do not include any ACPI driver or OSPM code.  The debug
17241version of the code includes the debug output trace mechanism and
17242has a larger code and data size.  Note that these values will vary
17243depending on the efficiency of the compiler and the compiler
17244options used during generation.
17245
17246  Previous Release (02_07_01)
17247    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
17248    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
17249  Current Release:
17250    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
17251    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
17252
17253
172542) Linux
17255
17256Updated Linux-specific code for core macro and OSL interface
17257changes described above.
17258
17259Improved /proc/acpi/event. It now can be opened only once and has
17260proper poll functionality.
17261
17262Fixed and restructured power management (acpi_bus).
17263
17264Only create /proc "view by type" when devices of that class exist.
17265
17266Fixed "charging/discharging" bug (and others) in acpi_battery.
17267
17268Improved thermal zone code.
17269
17270
172713) ASL Compiler, version X2039:
17272
17273
17274Implemented the new compiler restriction on ASL String hex/octal
17275escapes to non-null, ASCII values.  An error results if an invalid
17276value is used.  (This will require an ACPI 2.0 specification
17277change.)
17278
17279AML object labels that are output to the optional C and ASM source
17280are now prefixed with both the ACPI table signature and table ID
17281to help guarantee uniqueness within a large BIOS project.
17282
17283
17284----------------------------------------
17285Summary of changes for this label: 02_01_02
17286
172871) ACPI CA Core Subsystem:
17288
17289ACPI 2.0 support is complete in the entire Core Subsystem and the
17290ASL compiler. All new ACPI 2.0 operators are implemented and all
17291other changes for ACPI 2.0 support are complete.  With
17292simultaneous code and data optimizations throughout the subsystem,
17293ACPI 2.0 support has been implemented with almost no additional
17294cost in terms of code and data size.
17295
17296Implemented a new mechanism for allocation of return buffers.  If
17297the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
17298be allocated on behalf of the caller.  Consolidated all return
17299buffer validation and allocation to a common procedure.  Return
17300buffers will be allocated via the primary OSL allocation interface
17301since it appears that a separate pool is not needed by most users.
17302If a separate pool is required for these buffers, the caller can
17303still use the original mechanism and pre-allocate the buffer(s).
17304
17305Implemented support for string operands within the DerefOf
17306operator.
17307
17308Restructured the Hardware and Event managers to be table driven,
17309simplifying the source code and reducing the amount of generated
17310code.
17311
17312Split the common read/write low-level ACPI register bitfield
17313procedure into a separate read and write, simplifying the code
17314considerably.
17315
17316Obsoleted the AcpiOsCallocate OSL interface.  This interface was
17317used only a handful of times and didn't have enough critical mass
17318for a separate interface.  Replaced with a common calloc procedure
17319in the core.
17320
17321Fixed a reported problem with the GPE number mapping mechanism
17322that allows GPE1 numbers to be non-contiguous with GPE0.
17323Reorganized the GPE information and shrunk a large array that was
17324originally large enough to hold info for all possible GPEs (256)
17325to simply large enough to hold all GPEs up to the largest GPE
17326number on the machine.
17327
17328Fixed a reported problem with resource structure alignment on 64-
17329bit platforms.
17330
17331Changed the AcpiEnableEvent and AcpiDisableEvent external
17332interfaces to not require any flags for the common case of
17333enabling/disabling a GPE.
17334
17335Implemented support to allow a "Notify" on a Processor object.
17336
17337Most TBDs in comments within the source code have been resolved
17338and eliminated.
17339
17340
17341Fixed a problem in the interpreter where a standalone parent
17342prefix (^) was not handled correctly in the interpreter and
17343debugger.
17344
17345Removed obsolete and unnecessary GPE save/restore code.
17346
17347Implemented Field support in the ASL Load operator.  This allows a
17348table to be loaded from a named field, in addition to loading a
17349table directly from an Operation Region.
17350
17351Implemented timeout and handle support in the external Global Lock
17352interfaces.
17353
17354Fixed a problem in the AcpiDump utility where pathnames were no
17355longer being generated correctly during the dump of named objects.
17356
17357Modified the AML debugger to give a full display of if/while
17358predicates instead of just one AML opcode at a time.  (The
17359predicate can have several nested ASL statements.)  The old method
17360was confusing during single stepping.
17361
17362Code and Data Size: Current core subsystem library sizes are shown
17363below. These are the code and data sizes for the acpica.lib
17364produced by the Microsoft Visual C++ 6.0 compiler, and these
17365values do not include any ACPI driver or OSPM code.  The debug
17366version of the code includes the debug output trace mechanism and
17367has a larger code and data size.  Note that these values will vary
17368depending on the efficiency of the compiler and the compiler
17369options used during generation.
17370
17371  Previous Release (12_18_01)
17372     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
17373     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
17374   Current Release:
17375     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
17376     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
17377
173782) Linux
17379
17380 Implemented fix for PIIX reverse throttling errata (Processor
17381driver)
17382
17383Added new Limit interface (Processor and Thermal drivers)
17384
17385New thermal policy (Thermal driver)
17386
17387Many updates to /proc
17388
17389Battery "low" event support (Battery driver)
17390
17391Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
17392
17393IA32 - IA64 initialization unification, no longer experimental
17394
17395Menuconfig options redesigned
17396
173973) ASL Compiler, version X2037:
17398
17399Implemented several new output features to simplify integration of
17400AML code into  firmware: 1) Output the AML in C source code with
17401labels for each named ASL object.  The    original ASL source code
17402is interleaved as C comments. 2) Output the AML in ASM source code
17403with labels and interleaved ASL    source. 3) Output the AML in
17404raw hex table form, in either C or ASM.
17405
17406Implemented support for optional string parameters to the
17407LoadTable operator.
17408
17409Completed support for embedded escape sequences within string
17410literals.  The compiler now supports all single character escapes
17411as well as the Octal and Hex escapes.  Note: the insertion of a
17412null byte into a string literal (via the hex/octal escape) causes
17413the string to be immediately terminated.  A warning is issued.
17414
17415Fixed a problem where incorrect AML was generated for the case
17416where an ASL namepath consists of a single parent prefix (
17417
17418) with no trailing name segments.
17419
17420The compiler has been successfully generated with a 64-bit C
17421compiler.
17422
17423
17424
17425
17426----------------------------------------
17427Summary of changes for this label: 12_18_01
17428
174291) Linux
17430
17431Enhanced blacklist with reason and severity fields. Any table's
17432signature may now be used to identify a blacklisted system.
17433
17434Call _PIC control method to inform the firmware which interrupt
17435model the OS is using. Turn on any disabled link devices.
17436
17437Cleaned up busmgr /proc error handling (Andreas Dilger)
17438
17439 2) ACPI CA Core Subsystem:
17440
17441Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
17442while loop)
17443
17444Completed implementation of the ACPI 2.0 "Continue",
17445"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
17446operators.  All new ACPI 2.0 operators are now implemented in both
17447the ASL compiler and the AML interpreter.  The only remaining ACPI
174482.0 task is support for the String data type in the DerefOf
17449operator.  Fixed a problem with AcquireMutex where the status code
17450was lost if the caller had to actually wait for the mutex.
17451
17452Increased the maximum ASL Field size from 64K bits to 4G bits.
17453
17454Completed implementation of the external Global Lock interfaces --
17455AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
17456Handler parameters were added.
17457
17458Completed another pass at removing warnings and issues when
17459compiling with 64-bit compilers.  The code now compiles cleanly
17460with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
17461add and subtract (diff) macros have changed considerably.
17462
17463
17464Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1746564-bit platforms, 32-bits on all others.  This type is used
17466wherever memory allocation and/or the C sizeof() operator is used,
17467and affects the OSL memory allocation interfaces AcpiOsAllocate
17468and AcpiOsCallocate.
17469
17470Implemented sticky user breakpoints in the AML debugger.
17471
17472Code and Data Size: Current core subsystem library sizes are shown
17473below. These are the code and data sizes for the acpica.lib
17474produced by the Microsoft Visual C++ 6.0 compiler, and these
17475values do not include any ACPI driver or OSPM code.  The debug
17476version of the code includes the debug output trace mechanism and
17477has a larger code and data size. Note that these values will vary
17478depending on the efficiency of the compiler and the compiler
17479options used during generation.
17480
17481  Previous Release (12_05_01)
17482     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
17483     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
17484   Current Release:
17485     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
17486     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
17487
17488 3) ASL Compiler, version X2034:
17489
17490Now checks for (and generates an error if detected) the use of a
17491Break or Continue statement without an enclosing While statement.
17492
17493
17494Successfully generated the compiler with the Intel 64-bit C
17495compiler.
17496
17497 ----------------------------------------
17498Summary of changes for this label: 12_05_01
17499
17500 1) ACPI CA Core Subsystem:
17501
17502The ACPI 2.0 CopyObject operator is fully implemented.  This
17503operator creates a new copy of an object (and is also used to
17504bypass the "implicit conversion" mechanism of the Store operator.)
17505
17506The ACPI 2.0 semantics for the SizeOf operator are fully
17507implemented.  The change is that performing a SizeOf on a
17508reference object causes an automatic dereference of the object to
17509tha actual value before the size is evaluated. This behavior was
17510undefined in ACPI 1.0.
17511
17512The ACPI 2.0 semantics for the Extended IRQ resource descriptor
17513have been implemented.  The interrupt polarity and mode are now
17514independently set.
17515
17516Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
17517appearing in Package objects were not properly converted to
17518integers when the internal Package was converted to an external
17519object (via the AcpiEvaluateObject interface.)
17520
17521Fixed a problem with the namespace object deletion mechanism for
17522objects created by control methods.  There were two parts to this
17523problem: 1) Objects created during the initialization phase method
17524parse were not being deleted, and 2) The object owner ID mechanism
17525to track objects was broken.
17526
17527Fixed a problem where the use of the ASL Scope operator within a
17528control method would result in an invalid opcode exception.
17529
17530Fixed a problem introduced in the previous label where the buffer
17531length required for the _PRT structure was not being returned
17532correctly.
17533
17534Code and Data Size: Current core subsystem library sizes are shown
17535below. These are the code and data sizes for the acpica.lib
17536produced by the Microsoft Visual C++ 6.0 compiler, and these
17537values do not include any ACPI driver or OSPM code.  The debug
17538version of the code includes the debug output trace mechanism and
17539has a larger code and data size.  Note that these values will vary
17540depending on the efficiency of the compiler and the compiler
17541options used during generation.
17542
17543  Previous Release (11_20_01)
17544     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
17545     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
17546
17547  Current Release:
17548     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
17549     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
17550
17551 2) Linux:
17552
17553Updated all files to apply cleanly against 2.4.16.
17554
17555Added basic PCI Interrupt Routing Table (PRT) support for IA32
17556(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
17557version supports both static and dynamic PRT entries, but dynamic
17558entries are treated as if they were static (not yet
17559reconfigurable).  Architecture- specific code to use this data is
17560absent on IA32 but should be available shortly.
17561
17562Changed the initialization sequence to start the ACPI interpreter
17563(acpi_init) prior to initialization of the PCI driver (pci_init)
17564in init/main.c.  This ordering is required to support PRT and
17565facilitate other (future) enhancement.  A side effect is that the
17566ACPI bus driver and certain device drivers can no longer be loaded
17567as modules.
17568
17569Modified the 'make menuconfig' options to allow PCI Interrupt
17570Routing support to be included without the ACPI Bus and other
17571device drivers.
17572
17573 3) ASL Compiler, version X2033:
17574
17575Fixed some issues with the use of the new CopyObject and
17576DataTableRegion operators.  Both are fully functional.
17577
17578 ----------------------------------------
17579Summary of changes for this label: 11_20_01
17580
17581 20 November 2001.  Summary of changes for this release.
17582
17583 1) ACPI CA Core Subsystem:
17584
17585Updated Index support to match ACPI 2.0 semantics.  Storing a
17586Integer, String, or Buffer to an Index of a Buffer will store only
17587the least-significant byte of the source to the Indexed buffer
17588byte.  Multiple writes are not performed.
17589
17590Fixed a problem where the access type used in an AccessAs ASL
17591operator was not recorded correctly into the field object.
17592
17593Fixed a problem where ASL Event objects were created in a
17594signalled state. Events are now created in an unsignalled state.
17595
17596The internal object cache is now purged after table loading and
17597initialization to reduce the use of dynamic kernel memory -- on
17598the assumption that object use is greatest during the parse phase
17599of the entire table (versus the run-time use of individual control
17600methods.)
17601
17602ACPI 2.0 variable-length packages are now fully operational.
17603
17604Code and Data Size: Code and Data optimizations have permitted new
17605feature development with an actual reduction in the library size.
17606Current core subsystem library sizes are shown below.  These are
17607the code and data sizes for the acpica.lib produced by the
17608Microsoft Visual C++ 6.0 compiler, and these values do not include
17609any ACPI driver or OSPM code.  The debug version of the code
17610includes the debug output trace mechanism and has a larger code
17611and data size.  Note that these values will vary depending on the
17612efficiency of the compiler and the compiler options used during
17613generation.
17614
17615  Previous Release (11_09_01):
17616     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
17617     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
17618
17619  Current Release:
17620     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
17621     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
17622
17623 2) Linux:
17624
17625Enhanced the ACPI boot-time initialization code to allow the use
17626of Local APIC tables for processor enumeration on IA-32, and to
17627pave the way for a fully MPS-free boot (on SMP systems) in the
17628near future.  This functionality replaces
17629arch/i386/kernel/acpitables.c, which was introduced in an earlier
176302.4.15-preX release.  To enable this feature you must add
17631"acpi_boot=on" to the kernel command line -- see the help entry
17632for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
17633the works...
17634
17635Restructured the configuration options to allow boot-time table
17636parsing support without inclusion of the ACPI Interpreter (and
17637other) code.
17638
17639NOTE: This release does not include fixes for the reported events,
17640power-down, and thermal passive cooling issues (coming soon).
17641
17642 3) ASL Compiler:
17643
17644Added additional typechecking for Fields within restricted access
17645Operation Regions.  All fields within EC and CMOS regions must be
17646declared with ByteAcc. All fields within SMBus regions must be
17647declared with the BufferAcc access type.
17648
17649Fixed a problem where the listing file output of control methods
17650no longer interleaved the actual AML code with the ASL source
17651code.
17652
17653
17654
17655
17656----------------------------------------
17657Summary of changes for this label: 11_09_01
17658
176591) ACPI CA Core Subsystem:
17660
17661Implemented ACPI 2.0-defined support for writes to fields with a
17662Buffer, String, or Integer source operand that is smaller than the
17663target field. In these cases, the source operand is zero-extended
17664to fill the target field.
17665
17666Fixed a problem where a Field starting bit offset (within the
17667parent operation region) was calculated incorrectly if the
17668
17669alignment of the field differed from the access width.  This
17670affected CreateWordField, CreateDwordField, CreateQwordField, and
17671possibly other fields that use the "AccessAny" keyword.
17672
17673Fixed a problem introduced in the 11_02_01 release where indirect
17674stores through method arguments did not operate correctly.
17675
176762) Linux:
17677
17678Implemented boot-time ACPI table parsing support
17679(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
17680facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
17681legacy BIOS interfaces (e.g. MPS) for the configuration of system
17682processors, memory, and interrupts during setup_arch().  Note that
17683this patch does not include the required architecture-specific
17684changes required to apply this information -- subsequent patches
17685will be posted for both IA32 and IA64 to achieve this.
17686
17687Added low-level sleep support for IA32 platforms, courtesy of Pat
17688Mochel. This allows IA32 systems to transition to/from various
17689sleeping states (e.g. S1, S3), although the lack of a centralized
17690driver model and power-manageable drivers will prevent its
17691(successful) use on most systems.
17692
17693Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
17694submenu, unified IA32 and IA64 options, added new "Boot using ACPI
17695tables" option, etc.
17696
17697Increased the default timeout for the EC driver from 1ms to 10ms
17698(1000 cycles of 10us) to try to address AE_TIME errors during EC
17699transactions.
17700
17701 ----------------------------------------
17702Summary of changes for this label: 11_02_01
17703
177041) ACPI CA Core Subsystem:
17705
17706ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
17707(QWordAcc keyword). All ACPI 2.0 64-bit support is now
17708implemented.
17709
17710OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
17711changes to support ACPI 2.0 Qword field access.  Read/Write
17712PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
17713accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
17714the value parameter for the address space handler interface is now
17715an ACPI_INTEGER.  OSL implementations of these interfaces must now
17716handle the case where the Width parameter is 64.
17717
17718Index Fields: Fixed a problem where unaligned bit assembly and
17719disassembly for IndexFields was not supported correctly.
17720
17721Index and Bank Fields:  Nested Index and Bank Fields are now
17722supported. During field access, a check is performed to ensure
17723that the value written to an Index or Bank register is not out of
17724the range of the register.  The Index (or Bank) register is
17725written before each access to the field data. Future support will
17726include allowing individual IndexFields to be wider than the
17727DataRegister width.
17728
17729Fields: Fixed a problem where the AML interpreter was incorrectly
17730attempting to write beyond the end of a Field/OpRegion.  This was
17731a boundary case that occurred when a DWORD field was written to a
17732BYTE access OpRegion, forcing multiple writes and causing the
17733interpreter to write one datum too many.
17734
17735Fields: Fixed a problem with Field/OpRegion access where the
17736starting bit address of a field was incorrectly calculated if the
17737current access type was wider than a byte (WordAcc, DwordAcc, or
17738QwordAcc).
17739
17740Fields: Fixed a problem where forward references to individual
17741FieldUnits (individual Field names within a Field definition) were
17742not resolved during the AML table load.
17743
17744Fields: Fixed a problem where forward references from a Field
17745definition to the parent Operation Region definition were not
17746resolved during the AML table load.
17747
17748Fields: Duplicate FieldUnit names within a scope are now detected
17749during AML table load.
17750
17751Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
17752returned an incorrect name for the root node.
17753
17754Code and Data Size: Code and Data optimizations have permitted new
17755feature development with an actual reduction in the library size.
17756Current core subsystem library sizes are shown below.  These are
17757the code and data sizes for the acpica.lib produced by the
17758Microsoft Visual C++ 6.0 compiler, and these values do not include
17759any ACPI driver or OSPM code.  The debug version of the code
17760includes the debug output trace mechanism and has a larger code
17761and data size.  Note that these values will vary depending on the
17762efficiency of the compiler and the compiler options used during
17763generation.
17764
17765  Previous Release (10_18_01):
17766     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
17767     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
17768
17769  Current Release:
17770     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
17771     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
17772
17773 2) Linux:
17774
17775Improved /proc processor output (Pavel Machek) Re-added
17776MODULE_LICENSE("GPL") to all modules.
17777
17778 3) ASL Compiler version X2030:
17779
17780Duplicate FieldUnit names within a scope are now detected and
17781flagged as errors.
17782
17783 4) Documentation:
17784
17785Programmer Reference updated to reflect OSL and address space
17786handler interface changes described above.
17787
17788----------------------------------------
17789Summary of changes for this label: 10_18_01
17790
17791ACPI CA Core Subsystem:
17792
17793Fixed a problem with the internal object reference count mechanism
17794that occasionally caused premature object deletion. This resolves
17795all of the outstanding problem reports where an object is deleted
17796in the middle of an interpreter evaluation.  Although this problem
17797only showed up in rather obscure cases, the solution to the
17798problem involved an adjustment of all reference counts involving
17799objects attached to namespace nodes.
17800
17801Fixed a problem with Field support in the interpreter where
17802writing to an aligned field whose length is an exact multiple (2
17803or greater) of the field access granularity would cause an attempt
17804to write beyond the end of the field.
17805
17806The top level AML opcode execution functions within the
17807interpreter have been renamed with a more meaningful and
17808consistent naming convention.  The modules exmonad.c and
17809exdyadic.c were eliminated.  New modules are exoparg1.c,
17810exoparg2.c, exoparg3.c, and exoparg6.c.
17811
17812Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
17813
17814Fixed a problem where the AML debugger was causing some internal
17815objects to not be deleted during subsystem termination.
17816
17817Fixed a problem with the external AcpiEvaluateObject interface
17818where the subsystem would fault if the named object to be
17819evaluated referred to a constant such as Zero, Ones, etc.
17820
17821Fixed a problem with IndexFields and BankFields where the
17822subsystem would fault if the index, data, or bank registers were
17823not defined in the same scope as the field itself.
17824
17825Added printf format string checking for compilers that support
17826this feature.  Corrected more than 50 instances of issues with
17827format specifiers within invocations of ACPI_DEBUG_PRINT
17828throughout the core subsystem code.
17829
17830The ASL "Revision" operator now returns the ACPI support level
17831implemented in the core - the value "2" since the ACPI 2.0 support
17832is more than 50% implemented.
17833
17834Enhanced the output of the AML debugger "dump namespace" command
17835to output in a more human-readable form.
17836
17837Current core subsystem library code sizes are shown below.  These
17838
17839are the code and data sizes for the acpica.lib produced by the
17840Microsoft Visual C++ 6.0 compiler, and these values do not include
17841any ACPI driver or OSPM code.  The debug version of the code
17842includes the full debug trace mechanism -- leading to a much
17843
17844larger code and data size.  Note that these values will vary
17845depending on the efficiency of the compiler and the compiler
17846options used during generation.
17847
17848     Previous Label (09_20_01):
17849     Non-Debug Version:    65K Code,     5K Data,     70K Total
17850     Debug Version:       138K Code,    58K Data,    196K Total
17851
17852     This Label:
17853
17854     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
17855     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
17856
17857Linux:
17858
17859Implemented a "Bad BIOS Blacklist" to track machines that have
17860known ASL/AML problems.
17861
17862Enhanced the /proc interface for the thermal zone driver and added
17863support for _HOT (the critical suspend trip point).  The 'info'
17864file now includes threshold/policy information, and allows setting
17865of _SCP (cooling preference) and _TZP (polling frequency) values
17866to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
17867frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
17868preference to the passive/quiet mode (if supported by the ASL).
17869
17870Implemented a workaround for a gcc bug that resuted in an OOPs
17871when loading the control method battery driver.
17872
17873 ----------------------------------------
17874Summary of changes for this label: 09_20_01
17875
17876 ACPI CA Core Subsystem:
17877
17878The AcpiEnableEvent and AcpiDisableEvent interfaces have been
17879modified to allow individual GPE levels to be flagged as wake-
17880enabled (i.e., these GPEs are to remain enabled when the platform
17881sleeps.)
17882
17883The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
17884support wake-enabled GPEs.  This means that upon entering the
17885sleep state, all GPEs that are not wake-enabled are disabled.
17886When leaving the sleep state, these GPEs are re-enabled.
17887
17888A local double-precision divide/modulo module has been added to
17889enhance portability to OS kernels where a 64-bit math library is
17890not available.  The new module is "utmath.c".
17891
17892Several optimizations have been made to reduce the use of CPU
17893stack.  Originally over 2K, the maximum stack usage is now below
178942K at 1860  bytes (1.82k)
17895
17896Fixed a problem with the AcpiGetFirmwareTable interface where the
17897root table pointer was not mapped into a logical address properly.
17898
17899Fixed a problem where a NULL pointer was being dereferenced in the
17900interpreter code for the ASL Notify operator.
17901
17902Fixed a problem where the use of the ASL Revision operator
17903returned an error. This operator now returns the current version
17904of the ACPI CA core subsystem.
17905
17906Fixed a problem where objects passed as control method parameters
17907to AcpiEvaluateObject were always deleted at method termination.
17908However, these objects may end up being stored into the namespace
17909by the called method.  The object reference count mechanism was
17910applied to these objects instead of a force delete.
17911
17912Fixed a problem where static strings or buffers (contained in the
17913AML code) that are declared as package elements within the ASL
17914code could cause a fault because the interpreter would attempt to
17915delete them.  These objects are now marked with the "static
17916object" flag to prevent any attempt to delete them.
17917
17918Implemented an interpreter optimization to use operands directly
17919from the state object instead of extracting the operands to local
17920variables.  This reduces stack use and code size, and improves
17921performance.
17922
17923The module exxface.c was eliminated as it was an unnecessary extra
17924layer of code.
17925
17926Current core subsystem library code sizes are shown below.  These
17927are the code and data sizes for the acpica.lib produced by the
17928Microsoft Visual C++ 6.0 compiler, and these values do not include
17929any ACPI driver or OSPM code.  The debug version of the code
17930includes the full debug trace mechanism -- leading to a much
17931larger code and data size.  Note that these values will vary
17932depending on the efficiency of the compiler and the compiler
17933options used during generation.
17934
17935  Non-Debug Version:  65K Code,   5K Data,   70K Total
17936(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
17937Total  (Previously 195K)
17938
17939Linux:
17940
17941Support for ACPI 2.0 64-bit integers has been added.   All ACPI
17942Integer objects are now 64 bits wide
17943
17944All Acpi data types and structures are now in lower case.  Only
17945Acpi macros are upper case for differentiation.
17946
17947 Documentation:
17948
17949Changes to the external interfaces as described above.
17950
17951 ----------------------------------------
17952Summary of changes for this label: 08_31_01
17953
17954 ACPI CA Core Subsystem:
17955
17956A bug with interpreter implementation of the ASL Divide operator
17957was found and fixed.  The implicit function return value (not the
17958explicit store operands) was returning the remainder instead of
17959the quotient.  This was a longstanding bug and it fixes several
17960known outstanding issues on various platforms.
17961
17962The ACPI_DEBUG_PRINT and function trace entry/exit macros have
17963been further optimized for size.  There are 700 invocations of the
17964DEBUG_PRINT macro alone, so each optimization reduces the size of
17965the debug version of the subsystem significantly.
17966
17967A stack trace mechanism has been implemented.  The maximum stack
17968usage is about 2K on 32-bit platforms.  The debugger command "stat
17969stack" will display the current maximum stack usage.
17970
17971All public symbols and global variables within the subsystem are
17972now prefixed with the string "Acpi".  This keeps all of the
17973symbols grouped together in a kernel map, and avoids conflicts
17974with other kernel subsystems.
17975
17976Most of the internal fixed lookup tables have been moved into the
17977code segment via the const operator.
17978
17979Several enhancements have been made to the interpreter to both
17980reduce the code size and improve performance.
17981
17982Current core subsystem library code sizes are shown below.  These
17983are the code and data sizes for the acpica.lib produced by the
17984Microsoft Visual C++ 6.0 compiler, and these values do not include
17985any ACPI driver or OSPM code.  The debug version of the code
17986includes the full debug trace mechanism which contains over 700
17987invocations of the DEBUG_PRINT macro, 500 function entry macro
17988invocations, and over 900 function exit macro invocations --
17989leading to a much larger code and data size.  Note that these
17990values will vary depending on the efficiency of the compiler and
17991the compiler options used during generation.
17992
17993        Non-Debug Version:  64K Code,   5K Data,   69K Total
17994Debug Version:     137K Code,  58K Data,  195K Total
17995
17996 Linux:
17997
17998Implemented wbinvd() macro, pending a kernel-wide definition.
17999
18000Fixed /proc/acpi/event to handle poll() and short reads.
18001
18002 ASL Compiler, version X2026:
18003
18004Fixed a problem introduced in the previous label where the AML
18005
18006code emitted for package objects produced packages with zero
18007length.
18008
18009 ----------------------------------------
18010Summary of changes for this label: 08_16_01
18011
18012ACPI CA Core Subsystem:
18013
18014The following ACPI 2.0 ASL operators have been implemented in the
18015AML interpreter (These are already supported by the Intel ASL
18016compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
18017ToBuffer.  Support for 64-bit AML constants is implemented in the
18018AML parser, debugger, and disassembler.
18019
18020The internal memory tracking mechanism (leak detection code) has
18021been upgraded to reduce the memory overhead (a separate tracking
18022block is no longer allocated for each memory allocation), and now
18023supports all of the internal object caches.
18024
18025The data structures and code for the internal object caches have
18026been coelesced and optimized so that there is a single cache and
18027memory list data structure and a single group of functions that
18028implement generic cache management.  This has reduced the code
18029size in both the debug and release versions of the subsystem.
18030
18031The DEBUG_PRINT macro(s) have been optimized for size and replaced
18032by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
18033different, because it generates a single call to an internal
18034function.  This results in a savings of about 90 bytes per
18035invocation, resulting in an overall code and data savings of about
1803616% in the debug version of the subsystem.
18037
18038 Linux:
18039
18040Fixed C3 disk corruption problems and re-enabled C3 on supporting
18041machines.
18042
18043Integrated low-level sleep code by Patrick Mochel.
18044
18045Further tweaked source code Linuxization.
18046
18047Other minor fixes.
18048
18049 ASL Compiler:
18050
18051Support for ACPI 2.0 variable length packages is fixed/completed.
18052
18053Fixed a problem where the optional length parameter for the ACPI
180542.0 ToString operator.
18055
18056Fixed multiple extraneous error messages when a syntax error is
18057detected within the declaration line of a control method.
18058
18059 ----------------------------------------
18060Summary of changes for this label: 07_17_01
18061
18062ACPI CA Core Subsystem:
18063
18064Added a new interface named AcpiGetFirmwareTable to obtain any
18065ACPI table via the ACPI signature.  The interface can be called at
18066any time during kernel initialization, even before the kernel
18067virtual memory manager is initialized and paging is enabled.  This
18068allows kernel subsystems to obtain ACPI tables very early, even
18069before the ACPI CA subsystem is initialized.
18070
18071Fixed a problem where Fields defined with the AnyAcc attribute
18072could be resolved to the incorrect address under the following
18073conditions: 1) the field width is larger than 8 bits and 2) the
18074parent operation region is not defined on a DWORD boundary.
18075
18076Fixed a problem where the interpreter is not being locked during
18077namespace initialization (during execution of the _INI control
18078methods), causing an error when an attempt is made to release it
18079later.
18080
18081ACPI 2.0 support in the AML Interpreter has begun and will be
18082ongoing throughout the rest of this year.  In this label, The Mod
18083operator is implemented.
18084
18085Added a new data type to contain full PCI addresses named
18086ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
18087and Function values.
18088
18089 Linux:
18090
18091Enhanced the Linux version of the source code to change most
18092capitalized ACPI type names to lowercase. For example, all
18093instances of ACPI_STATUS are changed to acpi_status.  This will
18094result in a large diff, but the change is strictly cosmetic and
18095aligns the CA code closer to the Linux coding standard.
18096
18097OSL Interfaces:
18098
18099The interfaces to the PCI configuration space have been changed to
18100add the PCI Segment number and to split the single 32-bit combined
18101DeviceFunction field into two 16-bit fields.  This was
18102accomplished by moving the four values that define an address in
18103PCI configuration space (segment, bus, device, and function) to
18104the new ACPI_PCI_ID structure.
18105
18106The changes to the PCI configuration space interfaces led to a
18107reexamination of the complete set of address space access
18108interfaces for PCI, I/O, and Memory.  The previously existing 18
18109interfaces have proven difficult to maintain (any small change
18110must be propagated across at least 6 interfaces) and do not easily
18111allow for future expansion to 64 bits if necessary.  Also, on some
18112systems, it would not be appropriate to demultiplex the access
18113width (8, 16, 32,or 64) before calling the OSL if the
18114corresponding native OS interfaces contain a similar access width
18115parameter.  For these reasons, the 18 address space interfaces
18116have been replaced by these 6 new ones:
18117
18118AcpiOsReadPciConfiguration
18119AcpiOsWritePciConfiguration
18120AcpiOsReadMemory
18121AcpiOsWriteMemory
18122AcpiOsReadPort
18123AcpiOsWritePort
18124
18125Added a new interface named AcpiOsGetRootPointer to allow the OSL
18126to perform the platform and/or OS-specific actions necessary to
18127obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
18128interface will simply call down to the CA core to perform the low-
18129memory search for the table.  On IA-64, the RSDP is obtained from
18130EFI.  Migrating this interface to the OSL allows the CA core to
18131
18132remain OS and platform independent.
18133
18134Added a new interface named AcpiOsSignal to provide a generic
18135"function code and pointer" interface for various miscellaneous
18136signals and notifications that must be made to the host OS.   The
18137first such signals are intended to support the ASL Fatal and
18138Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
18139interface has been obsoleted.
18140
18141The definition of the AcpiFormatException interface has been
18142changed to simplify its use.  The caller no longer must supply a
18143buffer to the call; A pointer to a const string is now returned
18144directly.  This allows the call to be easily used in printf
18145statements, etc. since the caller does not have to manage a local
18146buffer.
18147
18148
18149 ASL Compiler, Version X2025:
18150
18151The ACPI 2.0 Switch/Case/Default operators have been implemented
18152and are fully functional.  They will work with all ACPI 1.0
18153interpreters, since the operators are simply translated to If/Else
18154pairs.
18155
18156The ACPI 2.0 ElseIf operator is implemented and will also work
18157with 1.0 interpreters, for the same reason.
18158
18159Implemented support for ACPI 2.0 variable-length packages.  These
18160packages have a separate opcode, and their size is determined by
18161the interpreter at run-time.
18162
18163Documentation The ACPI CA Programmer Reference has been updated to
18164reflect the new interfaces and changes to existing interfaces.
18165
18166 ------------------------------------------
18167Summary of changes for this label: 06_15_01
18168
18169 ACPI CA Core Subsystem:
18170
18171Fixed a problem where a DWORD-accessed field within a Buffer
18172object would get its byte address inadvertently rounded down to
18173the nearest DWORD.  Buffers are always Byte-accessible.
18174
18175 ASL Compiler, version X2024:
18176
18177Fixed a problem where the Switch() operator would either fault or
18178hang the compiler.  Note however, that the AML code for this ACPI
181792.0 operator is not yet implemented.
18180
18181Compiler uses the new AcpiOsGetTimer interface to obtain compile
18182timings.
18183
18184Implementation of the CreateField operator automatically converts
18185a reference to a named field within a resource descriptor from a
18186byte offset to a bit offset if required.
18187
18188Added some missing named fields from the resource descriptor
18189support. These are the names that are automatically created by the
18190compiler to reference fields within a descriptor.  They are only
18191valid at compile time and are not passed through to the AML
18192interpreter.
18193
18194Resource descriptor named fields are now typed as Integers and
18195subject to compile-time typechecking when used in expressions.
18196
18197 ------------------------------------------
18198Summary of changes for this label: 05_18_01
18199
18200 ACPI CA Core Subsystem:
18201
18202Fixed a couple of problems in the Field support code where bits
18203from adjacent fields could be returned along with the proper field
18204bits. Restructured the field support code to improve performance,
18205readability and maintainability.
18206
18207New DEBUG_PRINTP macro automatically inserts the procedure name
18208into the output, saving hundreds of copies of procedure name
18209strings within the source, shrinking the memory footprint of the
18210debug version of the core subsystem.
18211
18212 Source Code Structure:
18213
18214The source code directory tree was restructured to reflect the
18215current organization of the component architecture.  Some files
18216and directories have been moved and/or renamed.
18217
18218 Linux:
18219
18220Fixed leaking kacpidpc processes.
18221
18222Fixed queueing event data even when /proc/acpi/event is not
18223opened.
18224
18225 ASL Compiler, version X2020:
18226
18227Memory allocation performance enhancement - over 24X compile time
18228improvement on large ASL files.  Parse nodes and namestring
18229buffers are now allocated from a large internal compiler buffer.
18230
18231The temporary .SRC file is deleted unless the "-s" option is
18232specified
18233
18234The "-d" debug output option now sends all output to the .DBG file
18235instead of the console.
18236
18237"External" second parameter is now optional
18238
18239"ElseIf" syntax now properly allows the predicate
18240
18241Last operand to "Load" now recognized as a Target operand
18242
18243Debug object can now be used anywhere as a normal object.
18244
18245ResourceTemplate now returns an object of type BUFFER
18246
18247EISAID now returns an object of type INTEGER
18248
18249"Index" now works with a STRING operand
18250
18251"LoadTable" now accepts optional parameters
18252
18253"ToString" length parameter is now optional
18254
18255"Interrupt (ResourceType," parse error fixed.
18256
18257"Register" with a user-defined region space parse error fixed
18258
18259Escaped backslash at the end of a string ("\\") scan/parse error
18260fixed
18261
18262"Revision" is now an object of type INTEGER.
18263
18264
18265
18266------------------------------------------
18267Summary of changes for this label: 05_02_01
18268
18269Linux:
18270
18271/proc/acpi/event now blocks properly.
18272
18273Removed /proc/sys/acpi. You can still dump your DSDT from
18274/proc/acpi/dsdt.
18275
18276 ACPI CA Core Subsystem:
18277
18278Fixed a problem introduced in the previous label where some of the
18279"small" resource descriptor types were not recognized.
18280
18281Improved error messages for the case where an ASL Field is outside
18282the range of the parent operation region.
18283
18284 ASL Compiler, version X2018:
18285
18286
18287Added error detection for ASL Fields that extend beyond the length
18288of the parent operation region (only if the length of the region
18289is known at compile time.)  This includes fields that have a
18290minimum access width that is smaller than the parent region, and
18291individual field units that are partially or entirely beyond the
18292extent of the parent.
18293
18294
18295
18296------------------------------------------
18297Summary of changes for this label: 04_27_01
18298
18299 ACPI CA Core Subsystem:
18300
18301Fixed a problem where the namespace mutex could be released at the
18302wrong time during execution of AcpiRemoveAddressSpaceHandler.
18303
18304Added optional thread ID output for debug traces, to simplify
18305debugging of multiple threads.  Added context switch notification
18306when the debug code realizes that a different thread is now
18307executing ACPI code.
18308
18309Some additional external data types have been prefixed with the
18310string "ACPI_" for consistency.  This may effect existing code.
18311The data types affected are the external callback typedefs - e.g.,
18312
18313WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
18314
18315 Linux:
18316
18317Fixed an issue with the OSL semaphore implementation where a
18318thread was waking up with an error from receiving a SIGCHLD
18319signal.
18320
18321Linux version of ACPI CA now uses the system C library for string
18322manipulation routines instead of a local implementation.
18323
18324Cleaned up comments and removed TBDs.
18325
18326 ASL Compiler, version X2017:
18327
18328Enhanced error detection and reporting for all file I/O
18329operations.
18330
18331 Documentation:
18332
18333Programmer Reference updated to version 1.06.
18334
18335
18336
18337------------------------------------------
18338Summary of changes for this label: 04_13_01
18339
18340 ACPI CA Core Subsystem:
18341
18342Restructured support for BufferFields and RegionFields.
18343BankFields support is now fully operational.  All known 32-bit
18344limitations on field sizes have been removed.  Both BufferFields
18345and (Operation) RegionFields are now supported by the same field
18346management code.
18347
18348Resource support now supports QWORD address and IO resources. The
1834916/32/64 bit address structures and the Extended IRQ structure
18350have been changed to properly handle Source Resource strings.
18351
18352A ThreadId of -1 is now used to indicate a "mutex not acquired"
18353condition internally and must never be returned by AcpiOsThreadId.
18354This reserved value was changed from 0 since Unix systems allow a
18355thread ID of 0.
18356
18357Linux:
18358
18359Driver code reorganized to enhance portability
18360
18361Added a kernel configuration option to control ACPI_DEBUG
18362
18363Fixed the EC driver to honor _GLK.
18364
18365ASL Compiler, version X2016:
18366
18367Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
18368address space was set to 0, not 0x7f as it should be.
18369
18370 ------------------------------------------
18371Summary of changes for this label: 03_13_01
18372
18373 ACPI CA Core Subsystem:
18374
18375During ACPI initialization, the _SB_._INI method is now run if
18376present.
18377
18378Notify handler fix - notifies are deferred until the parent method
18379completes execution.  This fixes the "mutex already acquired"
18380issue seen occasionally.
18381
18382Part of the "implicit conversion" rules in ACPI 2.0 have been
18383found to cause compatibility problems with existing ASL/AML.  The
18384convert "result-to-target-type" implementation has been removed
18385for stores to method Args and Locals.  Source operand conversion
18386is still fully implemented.  Possible changes to ACPI 2.0
18387specification pending.
18388
18389Fix to AcpiRsCalculatePciRoutingTableLength to return correct
18390length.
18391
18392Fix for compiler warnings for 64-bit compiles.
18393
18394 Linux:
18395
18396/proc output aligned for easier parsing.
18397
18398Release-version compile problem fixed.
18399
18400New kernel configuration options documented in Configure.help.
18401
18402IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
18403context" message.
18404
18405 OSPM:
18406
18407Power resource driver integrated with bus manager.
18408
18409Fixed kernel fault during active cooling for thermal zones.
18410
18411Source Code:
18412
18413The source code tree has been restructured.
18414
18415
18416
18417------------------------------------------
18418Summary of changes for this label: 03_02_01
18419
18420 Linux OS Services Layer (OSL):
18421
18422Major revision of all Linux-specific code.
18423
18424Modularized all ACPI-specific drivers.
18425
18426Added new thermal zone and power resource drivers.
18427
18428Revamped /proc interface (new functionality is under /proc/acpi).
18429
18430New kernel configuration options.
18431
18432 Linux known issues:
18433
18434New kernel configuration options not documented in Configure.help
18435yet.
18436
18437
18438Module dependencies not currently implemented. If used, they
18439should be loaded in this order: busmgr, power, ec, system,
18440processor, battery, ac_adapter, button, thermal.
18441
18442Modules will not load if CONFIG_MODVERSION is set.
18443
18444IBM 600E - entering S5 may reboot instead of shutting down.
18445
18446IBM 600E - Sleep button may generate "Invalid <NULL> context"
18447message.
18448
18449Some systems may fail with "execution mutex already acquired"
18450message.
18451
18452 ACPI CA Core Subsystem:
18453
18454Added a new OSL Interface, AcpiOsGetThreadId.  This was required
18455for the  deadlock detection code. Defined to return a non-zero, 32-
18456bit thread ID for the currently executing thread.  May be a non-
18457zero constant integer on single-thread systems.
18458
18459Implemented deadlock detection for internal subsystem mutexes.  We
18460may add conditional compilation for this code (debug only) later.
18461
18462ASL/AML Mutex object semantics are now fully supported.  This
18463includes multiple acquires/releases by owner and support for the
18464
18465Mutex SyncLevel parameter.
18466
18467A new "Force Release" mechanism automatically frees all ASL
18468Mutexes that have been acquired but not released when a thread
18469exits the interpreter.  This forces conformance to the ACPI spec
18470("All mutexes must be released when an invocation exits") and
18471prevents deadlocked ASL threads.  This mechanism can be expanded
18472(later) to monitor other resource acquisitions if OEM ASL code
18473continues to misbehave (which it will).
18474
18475Several new ACPI exception codes have been added for the Mutex
18476support.
18477
18478Recursive method calls are now allowed and supported (the ACPI
18479spec does in fact allow recursive method calls.)  The number of
18480recursive calls is subject to the restrictions imposed by the
18481SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
18482parameter.
18483
18484Implemented support for the SyncLevel parameter for control
18485methods (ACPI 2.0 feature)
18486
18487Fixed a deadlock problem when multiple threads attempted to use
18488the interpreter.
18489
18490Fixed a problem where the string length of a String package
18491element was not always set in a package returned from
18492AcpiEvaluateObject.
18493
18494Fixed a problem where the length of a String package element was
18495not always included in the length of the overall package returned
18496from AcpiEvaluateObject.
18497
18498Added external interfaces (Acpi*) to the ACPI debug memory
18499manager.  This manager keeps a list of all outstanding
18500allocations, and can therefore detect memory leaks and attempts to
18501free memory blocks more than once. Useful for code such as the
18502power manager, etc.  May not be appropriate for device drivers.
18503Performance with the debug code enabled is slow.
18504
18505The ACPI Global Lock is now an optional hardware element.
18506
18507 ASL Compiler Version X2015:
18508
18509Integrated changes to allow the compiler to be generated on
18510multiple platforms.
18511
18512Linux makefile added to generate the compiler on Linux
18513
18514 Source Code:
18515
18516All platform-specific headers have been moved to their own
18517subdirectory, Include/Platform.
18518
18519New source file added, Interpreter/ammutex.c
18520
18521New header file, Include/acstruct.h
18522
18523 Documentation:
18524
18525The programmer reference has been updated for the following new
18526interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
18527
18528 ------------------------------------------
18529Summary of changes for this label: 02_08_01
18530
18531Core ACPI CA Subsystem: Fixed a problem where an error was
18532incorrectly returned if the return resource buffer was larger than
18533the actual data (in the resource interfaces).
18534
18535References to named objects within packages are resolved to the
18536
18537full pathname string before packages are returned directly (via
18538the AcpiEvaluateObject interface) or indirectly via the resource
18539interfaces.
18540
18541Linux OS Services Layer (OSL):
18542
18543Improved /proc battery interface.
18544
18545
18546Added C-state debugging output and other miscellaneous fixes.
18547
18548ASL Compiler Version X2014:
18549
18550All defined method arguments can now be used as local variables,
18551including the ones that are not actually passed in as parameters.
18552The compiler tracks initialization of the arguments and issues an
18553exception if they are used without prior assignment (just like
18554locals).
18555
18556The -o option now specifies a filename prefix that is used for all
18557output files, including the AML output file.  Otherwise, the
18558default behavior is as follows:  1) the AML goes to the file
18559specified in the DSDT.  2) all other output files use the input
18560source filename as the base.
18561
18562 ------------------------------------------
18563Summary of changes for this label: 01_25_01
18564
18565Core ACPI CA Subsystem: Restructured the implementation of object
18566store support within the  interpreter.  This includes support for
18567the Store operator as well  as any ASL operators that include a
18568target operand.
18569
18570Partially implemented support for Implicit Result-to-Target
18571conversion. This is when a result object is converted on the fly
18572to the type of  an existing target object.  Completion of this
18573support is pending  further analysis of the ACPI specification
18574concerning this matter.
18575
18576CPU-specific code has been removed from the subsystem (hardware
18577directory).
18578
18579New Power Management Timer functions added
18580
18581Linux OS Services Layer (OSL): Moved system state transition code
18582to the core, fixed it, and modified  Linux OSL accordingly.
18583
18584Fixed C2 and C3 latency calculations.
18585
18586
18587We no longer use the compilation date for the version message on
18588initialization, but retrieve the version from AcpiGetSystemInfo().
18589
18590Incorporated for fix Sony VAIO machines.
18591
18592Documentation:  The Programmer Reference has been updated and
18593reformatted.
18594
18595
18596ASL Compiler:  Version X2013: Fixed a problem where the line
18597numbering and error reporting could get out  of sync in the
18598presence of multiple include files.
18599
18600 ------------------------------------------
18601Summary of changes for this label: 01_15_01
18602
18603Core ACPI CA Subsystem:
18604
18605Implemented support for type conversions in the execution of the
18606ASL  Concatenate operator (The second operand is converted to
18607match the type  of the first operand before concatenation.)
18608
18609Support for implicit source operand conversion is partially
18610implemented.   The ASL source operand types Integer, Buffer, and
18611String are freely  interchangeable for most ASL operators and are
18612converted by the interpreter  on the fly as required.  Implicit
18613Target operand conversion (where the  result is converted to the
18614target type before storing) is not yet implemented.
18615
18616Support for 32-bit and 64-bit BCD integers is implemented.
18617
18618Problem fixed where a field read on an aligned field could cause a
18619read  past the end of the field.
18620
18621New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
18622does not return a value, but the caller expects one.  (The ASL
18623compiler flags this as a warning.)
18624
18625ASL Compiler:
18626
18627Version X2011:
186281. Static typechecking of all operands is implemented. This
18629prevents the use of invalid objects (such as using a Package where
18630an Integer is required) at compile time instead of at interpreter
18631run-time.
186322. The ASL source line is printed with ALL errors and warnings.
186333. Bug fix for source EOF without final linefeed.
186344. Debug option is split into a parse trace and a namespace trace.
186355. Namespace output option (-n) includes initial values for
18636integers and strings.
186376. Parse-only option added for quick syntax checking.
186387. Compiler checks for duplicate ACPI name declarations
18639
18640Version X2012:
186411. Relaxed typechecking to allow interchangeability between
18642strings, integers, and buffers.  These types are now converted by
18643the interpreter at runtime.
186442. Compiler reports time taken by each internal subsystem in the
18645debug         output file.
18646
18647
18648 ------------------------------------------
18649Summary of changes for this label: 12_14_00
18650
18651ASL Compiler:
18652
18653This is the first official release of the compiler. Since the
18654compiler requires elements of the Core Subsystem, this label
18655synchronizes everything.
18656
18657------------------------------------------
18658Summary of changes for this label: 12_08_00
18659
18660
18661Fixed a problem where named references within the ASL definition
18662of both OperationRegions and CreateXXXFields did not work
18663properly.  The symptom was an AE_AML_OPERAND_TYPE during
18664initialization of the region/field. This is similar (but not
18665related internally) to the problem that was fixed in the last
18666label.
18667
18668Implemented both 32-bit and 64-bit support for the BCD ASL
18669functions ToBCD and FromBCD.
18670
18671Updated all legal headers to include "2000" in the copyright
18672years.
18673
18674 ------------------------------------------
18675Summary of changes for this label: 12_01_00
18676
18677Fixed a problem where method invocations within the ASL definition
18678of both OperationRegions and CreateXXXFields did not work
18679properly.  The symptom was an AE_AML_OPERAND_TYPE during
18680initialization of the region/field:
18681
18682  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
18683[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
18684(0x3005)
18685
18686Fixed a problem where operators with more than one nested
18687subexpression would fail.  The symptoms were varied, by mostly
18688AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
18689problem that has gone unnoticed until now.
18690
18691  Subtract (Add (1,2), Multiply (3,4))
18692
18693Fixed a problem where AcpiGetHandle didn't quite get fixed in the
18694previous build (The prefix part of a relative path was handled
18695incorrectly).
18696
18697Fixed a problem where Operation Region initialization failed if
18698the operation region name was a "namepath" instead of a simple
18699"nameseg". Symptom was an AE_NO_OPERAND error.
18700
18701Fixed a problem where an assignment to a local variable via the
18702indirect RefOf mechanism only worked for the first such
18703assignment.  Subsequent assignments were ignored.
18704
18705 ------------------------------------------
18706Summary of changes for this label: 11_15_00
18707
18708ACPI 2.0 table support with backwards support for ACPI 1.0 and the
187090.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
18710the AML  interpreter does NOT have support for the new 2.0 ASL
18711grammar terms at this time.
18712
18713All ACPI hardware access is via the GAS structures in the ACPI 2.0
18714FADT.
18715
18716All physical memory addresses across all platforms are now 64 bits
18717wide. Logical address width remains dependent on the platform
18718(i.e., "void *").
18719
18720AcpiOsMapMemory interface changed to a 64-bit physical address.
18721
18722The AML interpreter integer size is now 64 bits, as per the ACPI
187232.0 specification.
18724
18725For backwards compatibility with ACPI 1.0, ACPI tables with a
18726revision number less than 2 use 32-bit integers only.
18727
18728Fixed a problem where the evaluation of OpRegion operands did not
18729always resolve them to numbers properly.
18730
18731------------------------------------------
18732Summary of changes for this label: 10_20_00
18733
18734Fix for CBN_._STA issue.  This fix will allow correct access to
18735CBN_ OpRegions when the _STA returns 0x8.
18736
18737Support to convert ACPI constants (Ones, Zeros, One) to actual
18738values before a package object is returned
18739
18740Fix for method call as predicate to if/while construct causing
18741incorrect if/while behavior
18742
18743Fix for Else block package lengths sometimes calculated wrong (if
18744block > 63 bytes)
18745
18746Fix for Processor object length field, was always zero
18747
18748Table load abort if FACP sanity check fails
18749
18750Fix for problem with Scope(name) if name already exists
18751
18752Warning emitted if a named object referenced cannot be found
18753(resolved) during method execution.
18754
18755
18756
18757
18758
18759------------------------------------------
18760Summary of changes for this label: 9_29_00
18761
18762New table initialization interfaces: AcpiInitializeSubsystem no
18763longer has any parameters AcpiFindRootPointer - Find the RSDP (if
18764necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
18765>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
18766AcpiLoadTables
18767
18768Note: These interface changes require changes to all existing OSDs
18769
18770The PCI_Config default address space handler is always installed
18771at the root namespace object.
18772
18773-------------------------------------------
18774Summary of changes for this label: 09_15_00
18775
18776The new initialization architecture is implemented.  New
18777interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
18778AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
18779
18780(Namespace is automatically loaded when a table is loaded)
18781
18782The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1878352 bytes to 32 bytes.  There is usually one of these for every
18784namespace object, so the memory savings is significant.
18785
18786Implemented just-in-time evaluation of the CreateField operators.
18787
18788Bug fixes for IA-64 support have been integrated.
18789
18790Additional code review comments have been implemented
18791
18792The so-called "third pass parse" has been replaced by a final walk
18793through the namespace to initialize all operation regions (address
18794spaces) and fields that have not yet been initialized during the
18795execution of the various _INI and REG methods.
18796
18797New file - namespace/nsinit.c
18798
18799-------------------------------------------
18800Summary of changes for this label: 09_01_00
18801
18802Namespace manager data structures have been reworked to change the
18803primary  object from a table to a single object.  This has
18804resulted in dynamic memory  savings of 3X within the namespace and
188052X overall in the ACPI CA subsystem.
18806
18807Fixed problem where the call to AcpiEvFindPciRootBuses was
18808inadvertently left  commented out.
18809
18810Reduced the warning count when generating the source with the GCC
18811compiler.
18812
18813Revision numbers added to each module header showing the
18814SourceSafe version of the file.  Please refer to this version
18815number when giving us feedback or comments on individual modules.
18816
18817The main object types within the subsystem have been renamed to
18818clarify their  purpose:
18819
18820ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
18821ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
18822ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
18823
18824NOTE: no changes to the initialization sequence are included in
18825this label.
18826
18827-------------------------------------------
18828Summary of changes for this label: 08_23_00
18829
18830Fixed problem where TerminateControlMethod was being called
18831multiple times per  method
18832
18833Fixed debugger problem where single stepping caused a semaphore to
18834be  oversignalled
18835
18836Improved performance through additional parse object caching -
18837added  ACPI_EXTENDED_OP type
18838
18839-------------------------------------------
18840Summary of changes for this label: 08_10_00
18841
18842Parser/Interpreter integration:  Eliminated the creation of
18843complete parse trees  for ACPI tables and control methods.
18844Instead, parse subtrees are created and  then deleted as soon as
18845they are processed (Either entered into the namespace or  executed
18846by the interpreter).  This reduces the use of dynamic kernel
18847memory  significantly. (about 10X)
18848
18849Exception codes broken into classes and renumbered.  Be sure to
18850recompile all  code that includes acexcep.h.  Hopefully we won't
18851have to renumber the codes  again now that they are split into
18852classes (environment, programmer, AML code,  ACPI table, and
18853internal).
18854
18855Fixed some additional alignment issues in the Resource Manager
18856subcomponent
18857
18858Implemented semaphore tracking in the AcpiExec utility, and fixed
18859several places  where mutexes/semaphores were being unlocked
18860without a corresponding lock  operation.  There are no known
18861semaphore or mutex "leaks" at this time.
18862
18863Fixed the case where an ASL Return operator is used to return an
18864unnamed  package.
18865
18866-------------------------------------------
18867Summary of changes for this label: 07_28_00
18868
18869Fixed a problem with the way addresses were calculated in
18870AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
18871manifested itself when a Field was  created with WordAccess or
18872DwordAccess, but the field unit defined within the  Field was less
18873
18874than a Word or Dword.
18875
18876Fixed a problem in AmlDumpOperands() module's loop to pull
18877operands off of the  operand stack to display information. The
18878problem manifested itself as a TLB  error on 64-bit systems when
18879accessing an operand stack with two or more  operands.
18880
18881Fixed a problem with the PCI configuration space handlers where
18882context was  getting confused between accesses. This required a
18883change to the generic address  space handler and address space
18884setup definitions. Handlers now get both a  global handler context
18885(this is the one passed in by the user when executing
18886AcpiInstallAddressSpaceHandler() and a specific region context
18887that is unique to  each region (For example, the _ADR, _SEG and
18888_BBN values associated with a  specific region). The generic
18889function definitions have changed to the  following:
18890
18891typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
18892UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
18893*HandlerContext, // This used to be void *Context void
18894*RegionContext); // This is an additional parameter
18895
18896typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
18897RegionHandle, UINT32 Function, void *HandlerContext,  void
18898**RegionContext); // This used to be **ReturnContext
18899
18900-------------------------------------------
18901Summary of changes for this label: 07_21_00
18902
18903Major file consolidation and rename.  All files within the
18904interpreter have been  renamed as well as most header files.  This
18905was done to prevent collisions with  existing files in the host
18906OSs -- filenames such as "config.h" and "global.h"  seem to be
18907quite common.  The VC project files have been updated.  All
18908makefiles  will require modification.
18909
18910The parser/interpreter integration continues in Phase 5 with the
18911implementation  of a complete 2-pass parse (the AML is parsed
18912twice) for each table;  This  avoids the construction of a huge
18913parse tree and therefore reduces the amount of  dynamic memory
18914required by the subsystem.  Greater use of the parse object cache
18915means that performance is unaffected.
18916
18917Many comments from the two code reviews have been rolled in.
18918
18919The 64-bit alignment support is complete.
18920
18921-------------------------------------------
18922Summary of changes for this label: 06_30_00
18923
18924With a nod and a tip of the hat to the technology of yesteryear,
18925we've added  support in the source code for 80 column output
18926devices.  The code is now mostly  constrained to 80 columns or
18927less to support environments and editors that 1)  cannot display
18928or print more than 80 characters on a single line, and 2) cannot
18929disable line wrapping.
18930
18931A major restructuring of the namespace data structure has been
18932completed.  The  result is 1) cleaner and more
18933understandable/maintainable code, and 2) a  significant reduction
18934in the dynamic memory requirement for each named ACPI  object
18935(almost half).
18936
18937-------------------------------------------
18938Summary of changes for this label: 06_23_00
18939
18940Linux support has been added.  In order to obtain approval to get
18941the ACPI CA  subsystem into the Linux kernel, we've had to make
18942quite a few changes to the  base subsystem that will affect all
18943users (all the changes are generic and OS- independent).  The
18944effects of these global changes have been somewhat far  reaching.
18945Files have been merged and/or renamed and interfaces have been
18946renamed.   The major changes are described below.
18947
18948Osd* interfaces renamed to AcpiOs* to eliminate namespace
18949pollution/confusion  within our target kernels.  All OSD
18950interfaces must be modified to match the new  naming convention.
18951
18952Files merged across the subsystem.  A number of the smaller source
18953and header  files have been merged to reduce the file count and
18954increase the density of the  existing files.  There are too many
18955to list here.  In general, makefiles that  call out individual
18956files will require rebuilding.
18957
18958Interpreter files renamed.  All interpreter files now have the
18959prefix am*  instead of ie* and is*.
18960
18961Header files renamed:  The acapi.h file is now acpixf.h.  The
18962acpiosd.h file is  now acpiosxf.h.  We are removing references to
18963the acronym "API" since it is  somewhat windowsy. The new name is
18964"external interface" or xface or xf in the  filenames.j
18965
18966
18967All manifest constants have been forced to upper case (some were
18968mixed case.)   Also, the string "ACPI_" has been prepended to many
18969(not all) of the constants,  typedefs, and structs.
18970
18971The globals "DebugLevel" and "DebugLayer" have been renamed
18972"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
18973
18974All other globals within the subsystem are now prefixed with
18975"AcpiGbl_" Internal procedures within the subsystem are now
18976prefixed with "Acpi" (with only  a few exceptions).  The original
18977two-letter abbreviation for the subcomponent  remains after "Acpi"
18978- for example, CmCallocate became AcpiCmCallocate.
18979
18980Added a source code translation/conversion utility.  Used to
18981generate the Linux  source code, it can be modified to generate
18982other types of source as well. Can  also be used to cleanup
18983existing source by removing extraneous spaces and blank  lines.
18984Found in tools/acpisrc/*
18985
18986OsdUnMapMemory was renamed to OsdUnmapMemory and then
18987AcpiOsUnmapMemory.  (UnMap  became Unmap).
18988
18989A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
18990When set to  one, this indicates that the caller wants to use the
18991
18992semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
18993both types.  However, implementers of this  call may want to use
18994different OS primitives depending on the type of semaphore
18995requested.  For example, some operating systems provide separate
18996
18997"mutex" and  "semaphore" interfaces - where the mutex interface is
18998much faster because it  doesn't have all the overhead of a full
18999semaphore implementation.
19000
19001Fixed a deadlock problem where a method that accesses the PCI
19002address space can  block forever if it is the first access to the
19003space.
19004
19005-------------------------------------------
19006Summary of changes for this label: 06_02_00
19007
19008Support for environments that cannot handle unaligned data
19009accesses (e.g.  firmware and OS environments devoid of alignment
19010handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
19011been added (via configurable macros) in  these three areas: -
19012Transfer of data from the raw AML byte stream is done via byte
19013moves instead of    word/dword/qword moves. - External objects are
19014aligned within the user buffer, including package   elements (sub-
19015objects). - Conversion of name strings to UINT32 Acpi Names is now
19016done byte-wise.
19017
19018The Store operator was modified to mimic Microsoft's
19019implementation when storing  to a Buffer Field.
19020
19021Added a check of the BM_STS bit before entering C3.
19022
19023The methods subdirectory has been obsoleted and removed.  A new
19024file, cmeval.c  subsumes the functionality.
19025
19026A 16-bit (DOS) version of AcpiExec has been developed.  The
19027makefile is under  the acpiexec directory.
19028